看看这个登录和注销是不是还有改进的地方

好久没写 Web 程序了都忘了.临时用的.在网上搜搜写的.回忆一下当年刚上班时候的感觉.

大家看看是不是还有优化的地方,自己感觉不错 吼吼~~~

 

页面是 JSF 的,后台服务是一个主数据产品.

 

1.登录

 

	@SuppressWarnings("unchecked")
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String username = request.getParameter("j_username");
		String password = MD5.MD5Encode( request.getParameter("j_password"));
		
		String page = request.getContextPath() + "/faces/error.jsp"; // 未通过
		// 主数据产品调用后台服务
		LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();
		params.put("uid", username);
		params.put("password", password);
		String requestId = new Long((long) (Long.MAX_VALUE * Math.random())).toString();
		Collection roles = new ArrayList();
		roles.add("LoginClass");
		try {
			DocumentRoot responseDocRoot = TCRMServices.invokeTCRMInquiry(requestId, "LoginClass", "zh", roles, "loginCompositeTxnBP", params);
			String resultCode = responseDocRoot.getTCRMService().getTxResponse().getTxResult().getResultCode();
			// SUCCESS || FATAL
			if (resultCode.equals("SUCCESS")) {
				request.getSession().setAttribute("uid", username);
				page = request.getContextPath() + "/faces/index.jsp"; //成功
			}
		} catch (Exception e) {
//			new CommonModelException("用户名和密码验证失败");  // 知道这样的处理不好,但产品特性,查询为空就抛异常.一时也没想到好的处理办法.
		}
		response.sendRedirect(page);
	}

 

 

 

2. 注销

 

  protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String exitPage = request.getParameter("logoutExitPage");
        logger.debug("Logout exit page: " + exitPage);
        if (exitPage == null) {
            exitPage = "login.jsp";
        }
        request.getSession().invalidate();
        response.sendRedirect(exitPage);
    }
 

 

3. 过滤器

 

public class CheckLoginFilter implements Filter {

	public void destroy() {
	}
	public void init(FilterConfig filterConfig) throws ServletException {
	}

	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
		
		HttpServletRequest request = (HttpServletRequest) servletRequest;
		HttpServletResponse response = (HttpServletResponse) servletResponse;
		String uid = (String) request.getSession().getAttribute("uid");
		
		String request_uri = request.getRequestURI().toLowerCase();// 得到用户请求的URI  
		String ctxPath = request.getContextPath();// 得到web应用程序的上下文路径  
		
		// 登录和错误页面不过滤 
		if (request_uri.substring(ctxPath.length()).equals("/faces/login.jsp")
				|| request_uri.substring(ctxPath.length()).equals("/faces/error.jsp")) {

			filterChain.doFilter(servletRequest, servletResponse);
			return;
		}

		// 另一个系统,要直接嵌入我们的数据页面.封装好的包.登录验证
		if (LoginReclaim.getInstance().login(request)) {
			// 已经通过身份认证服务器认证
			String username = LoginReclaim.getInstance().getUid(request);// 取得登录用户工号
			request.getSession().setAttribute("uid", username);
			filterChain.doFilter(servletRequest, servletResponse);
			return;
		}

		// 用户登录验证
		if (uid == null || "".equals(uid)) {
			// response.sendRedirect(request.getContextPath() +
			// "/faces/error.jsp");
			PrintWriter out = response.getWriter();  
               //感觉这里写的挺有意思的,在网上查的.
	    	out.write("<script>window.top.location.href ='"+ request.getContextPath()+"/faces/error.jsp'</script>"); 
	    	
//			request.getRequestDispatcher("/faces/error.jsp").forward(request, response);
		} else {
			filterChain.doFilter(servletRequest, servletResponse);
		}
	}
}
 

 

 

Android 实现 登录注册注销功能 用SharedPreferences实现登录注册注销功能 注册页面 activity_register.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> 阅读详情

相关推荐

php 用户登录注销

之前虽然写过登录的功能,但是注销还没有认真的看过。特此记录 当点击登录时,把用户账号信息以变量的形式存在定义的作用域(session)。session代表一次会话,只要你不关闭当前浏览器他的值就会存在,默认20分钟左右。 // BisAccount变量名, $ret用户账号信息 ,赋值bis作用域 session(‘BisAccount’, $ret, ‘bis’); // 删除 bis作用域 ...

jackchengyihui的博客 3165

用Session实现登录注销

一. 登录注销流程 用户在请求登录之后判断是否合法,如果合法说明登录成功,并且将其加入到session集合中;用户登录之后想要注销则可以将信息从Session中删除。 index主页 写了一个简单的登录页面,用表单提交信息给后端: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd"> <html> <head>

One of thre_tigers的博客 4391

单点登录教程(三)单点注销流程分析

作者:蓝雄威,叩丁狼教育高级讲师。原创文章,转载请注明出处。一、前言单点登录自然也要单点注销,在一个子系统中注销,所有子系统的会话都将被销毁,用下面的图来说明:步骤分析:1.用户在CRM系统中点击注销按钮.会重定向到统一认证中心的注销方法2.统一认证中心接受到注销请求之后,会销毁全局的会话.3.统一认证中心会拿到之前在该系统中注册的子系统集合.4.依次的调用子系统的登出方法,销毁局部会话.5.每个...

wolfcode_cn的博客 4808

JSP简单实现登录注销

JSP简单实现登录注销 需求:用户登录成功后跳转到欢迎页面 用户登录失败跳转到初始的登录界面 用户点击注销用户退出登录状态需要重新登录 登录页面的JSP代码...

QDY5945的博客 3528

用户登录注销

在Linux系统中,用户可以通过图形界面或命令行来进行登录注销操作。登录涉及到验证用户凭证并创建会话,而注销则是终止会话并释放资源。此外,管理员还可以通过命令行工具管理用户账户服务。如果你有更具体的需求或问题,请提供更多详细信息以便进一步讨论。

youhebuke225的博客 1071

利用Session完成用户登录注销

用户登录注销是最常见的Web应用案例,当一个应用的客户登录了以后,其他所有的会话都得知道这个用户已经登录还很有可能得提取用户的昵称予以显示等等,所以,只有把登录成功的用户的信息放入到Session中才能够办到使所有的Servlet都能访问到用户登录状态,下面把这个案例放上来。 第一是登录的界面,是HTML的一个表单,非常的简单 [html] view pla cop

张润东的博客 5770

SpringSecurity 定制登录注销登录

mylogin.html 前面的 login.html 基本类似,前面的login.html是静态页面,这里是模板页面,mylogin.html 页面中加了一个div,用来展示登录失败的异常信息,登录失败的异常信息会放在request中返回给前端。输入用户密码进行登录登录成功后,会自动跳转到登录前访问的 http://localhost:8080/index 页面,经过上面的配置,已经成功的自定义了一个登录页面出来,用户登录成功之后,就可以访问受保护的资源了。

你今天真好看呀 1227

Web登录注销的实现

思想 在登录的过程中,我们需要考虑一系列的问题 登录的安全性 一次登录后,在网站的其他网页也能记录信息 服务器能够记录登录的信息 登录过期,防止信息泄露后永久泄露 。。。 实现 访问令牌 当用户登录时,在服务器中保存令牌信息,并且将令牌的拷贝发给客户端。 令牌上可以设置过期时间,若客户端的令牌过期则不予访问。 当用户注销时,将服务器中令牌删除。(通常不删除,只是将状态设为无效) 若客户端的令...

Keyu 4130

如何注销oracle账户登录,用户认证(用户登录注销

上一篇中,我们已经打开了Django自带的用户认证模块,并配置了数据库连接,创建了相应的表,本篇我们将在Django自带的用户认证的基础上,实现自己个性化的用户登录注销模块。首先,我们自己定义一个用户登录表单(forms.py):from django import formsfrom django.contrib.auth.models import Userfrom bootstrap_to...

weixin_36199877的博客 1782

Javaweb登录功能优化及注销登录

登录功能优化 上篇登录功能代码在从数据库取出用户信息的代码中少写了取出用户姓名,现在将其加上user.setName(rs.getString("u_name")); 在登录成功后右上角会有一个xx用户,我们希望把用户名字显示在xx上,所以对其admin.jsp页面进行一些代码的调整 在LoginServlet中我们已经把从数据库中查出的用户信息保存在了session中 因此我们只需要再将用户信息中的用户姓名从session中取出来就可以了 将前台页面的xx修改成<%=((User)session

weixin_53603117的博客 2701

docker注销登录

Docker相关视频讲解:什么是容器Docker介绍实现“docker注销登录”教程 一、整体流程 在实现“docker注销登录”这个功能的过程中,我们可以分为以下几个步骤: 步骤 操作 1 登录到Docker Hub 2 注销Docker Hub 3 删除本地的Docker凭证 接下来我们...

weixin_31283549的博客 354

Linux 开机重启、用户登录注销运行级别

Linux 提供了多种命令来重启或关闭系统。下面列举了一些常用的命令及其用途:1)shutdown -h now :立该进行关机。2)shutdown -h +1 “hello, 1 分钟后会关机了” :1分钟后关机,并显示消息 “hello, 1 分钟后会关机了”。​符号后面跟随的时间数值。表示从当前时间开始计算,而后面的数字则是等待的时间(以分钟为单位)。3)shutdown -r now : 现在重新启动计算机。

m0_73557631的博客 891

Qt 实现窗口登录注销功能

实现该功能需要两个窗口,一个登录窗口,我这里叫QLanderDialog,一个主窗口,我这里叫MainWindow。首先,将窗口都加入到main.cpp,因为先要显示登陆窗口,故先让登陆窗口显示,主窗口不显示,然后给他们相互关联,代码如下:int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWind...

入门就想迈入大牛 3462

保存登录状态注销问题

用session保存登录状态 在用户登录后,后台根据用户用户名在服务器为用户添加session,servlet文件代码如下

drag22的博客 654

Servlet – HttpSession 登录注销及使用JavaScript定时刷新会话防止会话服务器过期及无活动超时自动注销示例

一般来说,计算语言中的术语“会话”是指用户活动在网站上发生的一段时间。每当您登录应用程序或网站时,服务器都应验证/识别用户并跟踪整个应用程序中的用户交互。为了实现这一点,Java Web Server 支持称为 HttpSession 的 servlet 标准会话接口来执行所有与会话相关的活动。 HttpSession 接口 Java servlet在 javax.servlet.http 包中有HttpSession (I)。此界面提供了一种方法来识别超过一页请求或访问网站的用户。Servlet 容器

allway2的博客 4591

如何使用 Java Servlet、JSP MySQL 编写登录注销代码

在本教程中,我将指导您如何使用 Servlet、JSP、JDBC MySQL 为小型 Java Web 应用程序实现登录注销功能。只是简单的旧的核心 Java EE 技术。没有使用任何框架。 假设您有一个现有的 Java Web 项目,现在您希望为您的网站添加登录注销功能。 表中的内容: 1.创建用于认证的数据库表 2. User 模型类 3. 验证码登录方式 4.代码登录页面 5.代码登录Servlet类 6.代码注销Servlet类 7. 测试登录注销功能 .

allway2的博客 3756
上一篇: DB2 V9.7 图解安装过程和创建样例数据库
下一篇: MQ中 amqsput : command not found的解决办法
getclass
博客等级 码龄17年 53粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值