登陆页面实现保存帐号密码功能

2014-11-23 20:19:49 · 作者: · 浏览: 9

通过Cookie实现"记住我"的功能

1.登陆页面如下:

\

每个字段对应的属性name如下表:

< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPgo8dGFibGUgYm9yZGVyPQ=="1" width="200" cellspacing="1" cellpadding="1"> 用户帐号 name 登陆密码 password 验证码 checkNum 记住我 rememberMe

2.Action中的处理如下:

在用户第一次登陆后,进行Cookie进行处理

登陆处理

/**登陆*/
public String login() throws Exception{
	//处理验证码:判断验证码输入的是否正确
	boolean flag=VerificationCodeUtil.isCheckNum(request);
	if(!flag){
		this.addFieldError("checkNum", "验证码有误");
		return "loginUI";
	}
	User user=userService.findByLoginNameAndPassword(model.getName(),model.getPassword());
	if(user==null){
		addFieldError("login", "用户名或密码不正确");
		return "loginUI";
	}else{
		ActionContext.getContext().getSession().put("user", user);
		//处理Cookie
		addCookie(model.getName(),model.getPassword(),response,request);
		return "toIndex";
	}	
}
Cookie处理:

/**Cookie的实现	**/
private void addCookie(String name, String password,HttpServletResponse response, HttpServletRequest request) throws UnsupportedEncodingException {
	if(StringUtils.isNotBlank(name)&&StringUtils.isNotBlank(password)){
		//创建Cookie
		Cookie nameCookie=new Cookie("name",URLEncoder.encode(name,"utf-8"));
		Cookie pswCookie=new Cookie("psw",password);
		
		//设置Cookie的父路径
		nameCookie.setPath(request.getContextPath()+"/");
		pswCookie.setPath(request.getContextPath()+"/");
		
		//获取是否保存Cookie
		String rememberMe=request.getParameter("rememberMe");
		if(rememberMe==null){//不保存Cookie
			nameCookie.setMaxAge(0);
			pswCookie.setMaxAge(0);
		}else{//保存Cookie的时间长度,单位为秒
			nameCookie.setMaxAge(7*24*60*60);
			pswCookie.setMaxAge(7*24*60*60);
		}
		//加入Cookie到响应头
		response.addCookie(nameCookie);
		response.addCookie(pswCookie);
	}
}


3.JSP页面的处理如下:

在登陆的JSP页面中加入下面代码,以获得用户名和密码并自动填写:

<%
	String name="";
	String psw="";
	String checked="";
	Cookie[] cookies=request.getCookies();
	if(cookies!=null&&cookies.length>0){	
		//遍历Cookie
		for(int i=0;i
   

最后对用户名,密码,记住我字段添加value即可:

 	用户帐号:
 	


	登录密码:
	


	记住我:
	>


4.可能出现的问题

如果出现设置了却没有自动填写用户名和密码,则可能是地址的问题:

解决办法:

1.进入Internet选项,点击浏览历史记录一栏的设置

\

2.进入浏览记录设置后,点击查看文件

\

3.在弹出的文件夹里找到Cookie文件,名字为你的项目名+“/”,格式如下图,这个文件一般在文件夹的最后面,将此文件复制到桌面,注:此文件是无法直接在该文件夹里打开的。

\


4.如下图,第三行为保存项目工程的路径,此时在Action里的Cookie处理中,根据该地址设置对应的Cookie父路径即可,上文已经设置。