`

jsp 通过cookie 记住用户名

阅读更多

java web中登录时如何记住用户名呢?

具体思路:

登录界面如下:

 在后台(Servlet 或struts 的action)中进行判断,若登录成功则通过HttpServletResponse 添加一个cookie.

在登录的jsp页面中,通过request 获取cookie数组,然后遍历,若找到相应的cookie,则把cookie的value设置到表单的对应文本框中.

 

具体代码如下:

登录的JSP页面中(核心代码):

<body>
<%
Cookie[] cookies = request.getCookies();
String username33="";
if (cookies != null) {
	for (Cookie c : cookies) {
		/*if ("password22".equals(c.getName())) {
			user.setPassword(URLDecoder.decode(c.getValue(), "utf-8"));
			continue;
		}*/
		if ("userEmail".equals(c.getName())) {
			username33=URLDecoder.decode(c.getValue(), "utf-8");
			break;
		}
	}
}
%>
<script type="text/javascript">
window.onload=function(){
var username1='<%=username33 %>';
//alert("username1:"+username1);
if(username1){
	if(username1!='' && username1!=null &&username1!=undefined){
		document.getElementsByName("user.username")[0].value=username1;
	}
}
}
</script>
...
</body>

 后台的action:

if (isLogin) {
			
			//保存用户名(目前是邮箱)
			
				String emaiCookieName = "userEmail";
		        HttpServletRequest request=ServletActionContext.getRequest();
		        Cookie[] cookies = request.getCookies();
				boolean flag = false;
		        Cookie emailCook = null;
		        if (cookies != null)
		        {
		        	System.out.println("cookie 不为空");
		            for (Cookie c : cookies)
		            {

		                if (emaiCookieName.equals(c.getName()))
		                {
		                	System.out.println("找到了 "+emaiCookieName);
		                	System.out.println("cookie的值为 "+c.getValue());
		                    try {
								c.setValue(URLEncoder.encode(this.user.getUsername(), "utf-8"));
							} catch (UnsupportedEncodingException e) {
								e.printStackTrace();
							}
		                    emailCook = c;
		                    flag = true;
		                    break;
		                }
		            }
		            
		        }
		        if (!flag)
		        {
		        	System.out.println("没有找到 "+emaiCookieName);


		            try {
						emailCook = new Cookie(emaiCookieName, URLEncoder.encode(
								this.user.getUsername(), "utf-8"));
					} catch (UnsupportedEncodingException e) {
						e.printStackTrace();
					}
		        }

		            if (null != emailCook)
		            {
		            	 HttpServletResponse response=ServletActionContext.getResponse();
		            	if(!ValueWidget.isNullOrEmpty(issave) && issave.equalsIgnoreCase("save")){
			                emailCook.setMaxAge(10000000);
			               
			                response.addCookie(emailCook);
			                System.out.println("保存cookie");
			             }else{
			                	System.out.println("让 cookie 失效");
			                	emailCook.setMaxAge(0);
			                	response.addCookie(emailCook);
			             }
		            }

		           
			
			return Action.SUCCESS;
		}

 源代码见附件

说明:

该项目使用maven 构建;

IDE:eclipse

数据库:mysql

登录地址:http://localhost:8080/shop_goods/user/loginInput.action

 

  • 大小: 21.5 KB
1
2
分享到:
评论
4 楼 hw1287789687 2014-10-07  
应用场景:
/***
	 * 
	 * @param model
	 * @param user
	 * @param request
	 * @param session
	 * @return  : 返回null,则登录成功,<br>否则,登录失败
	 */
	public String loginCommon(Model model,User user,HttpServletRequest request,HttpServletResponse response
			, HttpSession session,String issave){
		if(ValueWidget.isNullOrEmpty(user)||ValueWidget.isNullOrEmpty(user.getUsername())){
//			model.addAttribute("info", "请输入用户名.");
//			System.out.println("user is null");
//			return "user/login";
			return "请输入用户名.";
		}
		if(user.getUsername().trim().length()<3 || user.getUsername().trim().length()>16){
//			model.addAttribute("info", "请输入3-16位用户名字符.");
//			return "user/login";
			return "请输入3-16位用户名字符.";
		}
		User user1 = userDao.getByUsername(user.getUsername());
		if(user1==null){
//			model.addAttribute("info", "您输入的用户名不存在.");
//			return "user/login";
			return "您输入的用户名不存在.";
		}
		if(!user.getPassword().equals(user1.getPassword())){
//			model.addAttribute("info", "您输入的密码有误.");
//			return "user/login";
			return "您输入的密码有误.";
		}
		session.setAttribute(Constant2.SESSION_KEY_LOGINED_USER, user1);//登录成功的标识有两个:"user",Constant2.SESSION_KEY_LOGINED_FLAG
		session.setAttribute(Constant2.SESSION_KEY_LOGINED_FLAG, Constant2.FLAG_LOGIN_SUCCESS);//登录成功的标识有两个:"user",Constant2.SESSION_KEY_LOGINED_FLAG
		model.addAttribute("user", user1);
		boolean isSave = !ValueWidget.isNullOrEmpty(issave)
				&& issave.equalsIgnoreCase("save");
		System.out.println("isSave:"+isSave);
		WebServletUtil.rememberMe(request,response,"userEmail", user.getUsername(), isSave);
		return null;
	}
3 楼 hw1287789687 2014-10-07  
hw1287789687 写道
封装的方法
/***
	 * 是否保存cookie
	 * @param request
	 * @param response
	 * @param emaiCookieName
	 * @param cookieValue
	 * @param isSave : 是否保存用户名(记住用户名)
	 * @return
	 */
	public static Cookie rememberMe(HttpServletRequest request,HttpServletResponse response,String emaiCookieName, String cookieValue,
			boolean isSave) {
//		HttpServletRequest request = ServletActionContext.getRequest();
		Cookie[] cookies = request.getCookies();
		boolean flag = false;
		// Cookie passwordCook = null;
		Cookie emailCook = null;
		if (cookies != null) {
			System.out.println("cookie 不为空");
			for (Cookie c : cookies) {
				// if (passwordCookieName.equals(c.getName()))
				// {
				// c.setValue(URLEncoder.encode(password, "utf-8"));
				// passwordCook = c;
				// flag = true;
				// continue;
				// }
				if (emaiCookieName.equals(c.getName()) &&(! ValueWidget.isNullOrEmpty(cookieValue))) {
					System.out.println("找到了 " + emaiCookieName);
					System.out.println("cookie的值为 " + c.getValue());
					try {
						c.setValue(URLEncoder.encode(cookieValue, "utf-8"));
					} catch (UnsupportedEncodingException e) {
						e.printStackTrace();
					}
					emailCook = c;
					flag = true;
					break;
				}
			}

		}

//		HttpServletResponse response = ServletActionContext.getResponse();
		if (isSave) {
			if (!flag) {
				System.out.println("没有找到 " + emaiCookieName);
				// passwordCook = new Cookie(passwordCookieName, URLEncoder
				// .encode(password, "utf-8"));
				try {
					emailCook = new Cookie(emaiCookieName, URLEncoder.encode(
							cookieValue, "utf-8"));
				} catch (UnsupportedEncodingException e) {
					e.printStackTrace();
				}
			}
			emailCook.setMaxAge(10000000);
			response.addCookie(emailCook);
			flag=true;
			System.out.println("保存cookie:"+emailCook.getValue());
		} else {
			if (flag) {
				System.out.println("让 cookie 失效");
				emailCook.setMaxAge(0);
				response.addCookie(emailCook);
			}
		}
	

		return emailCook;
	}


使用场景:
if(! StringUtil.isNullOrEmpty(resultCode)&&resultCode.equals("0001")){
					
					System.out.println("issave:"+issave);
					boolean isSave = !StringUtil.isNullOrEmpty(issave)
							&& issave.equalsIgnoreCase("save");
					System.out.println("isSave:"+isSave);
					Json2Util.rememberMe(emaiCookieName, email, isSave);
					success=true;
				}
1 楼 hw1287789687 2014-10-07  
封装的方法
/***
	 * 是否保存cookie
	 * @param request
	 * @param response
	 * @param emaiCookieName
	 * @param cookieValue
	 * @param isSave : 是否保存用户名(记住用户名)
	 * @return
	 */
	public static Cookie rememberMe(HttpServletRequest request,HttpServletResponse response,String emaiCookieName, String cookieValue,
			boolean isSave) {
//		HttpServletRequest request = ServletActionContext.getRequest();
		Cookie[] cookies = request.getCookies();
		boolean flag = false;
		// Cookie passwordCook = null;
		Cookie emailCook = null;
		if (cookies != null) {
			System.out.println("cookie 不为空");
			for (Cookie c : cookies) {
				// if (passwordCookieName.equals(c.getName()))
				// {
				// c.setValue(URLEncoder.encode(password, "utf-8"));
				// passwordCook = c;
				// flag = true;
				// continue;
				// }
				if (emaiCookieName.equals(c.getName()) &&(! ValueWidget.isNullOrEmpty(cookieValue))) {
					System.out.println("找到了 " + emaiCookieName);
					System.out.println("cookie的值为 " + c.getValue());
					try {
						c.setValue(URLEncoder.encode(cookieValue, "utf-8"));
					} catch (UnsupportedEncodingException e) {
						e.printStackTrace();
					}
					emailCook = c;
					flag = true;
					break;
				}
			}

		}

//		HttpServletResponse response = ServletActionContext.getResponse();
		if (isSave) {
			if (!flag) {
				System.out.println("没有找到 " + emaiCookieName);
				// passwordCook = new Cookie(passwordCookieName, URLEncoder
				// .encode(password, "utf-8"));
				try {
					emailCook = new Cookie(emaiCookieName, URLEncoder.encode(
							cookieValue, "utf-8"));
				} catch (UnsupportedEncodingException e) {
					e.printStackTrace();
				}
			}
			emailCook.setMaxAge(10000000);
			response.addCookie(emailCook);
			flag=true;
			System.out.println("保存cookie:"+emailCook.getValue());
		} else {
			if (flag) {
				System.out.println("让 cookie 失效");
				emailCook.setMaxAge(0);
				response.addCookie(emailCook);
			}
		}
	

		return emailCook;
	}

相关推荐

    cookie实现记住用户名密码

    在这个“cookie实现记住用户名密码”的项目中,我们主要会涉及到Java Web开发环境,如IntelliJ IDEA和Tomcat服务器,以及关键的技术点——Cookie与JSP的结合。 1. **Cookie基础概念** - Cookie由服务器创建,存储...

    java web 记住用户名功能实现

    当用户勾选“记住用户名”选项并成功登录后,系统需要将该用户名存储在一个持久化的介质上,如浏览器的Cookie或本地存储。当用户再次访问网站时,系统检查是否存在这个Cookie或本地存储的数据,如果存在,则自动填充...

    使用Cookie记录用户名和密码.

    ### 使用Cookie记录用户名和密码:深入解析与实践 在现代Web开发中,用户认证与会话管理是构建安全且用户...通过结合以上技术与最佳实践,可以有效地使用Cookie来记录用户名和密码,同时保持良好的安全性和用户体验。

    jsp+servlet+Cookie实现记住密码功能

    在Web开发中,"jsp+servlet+Cookie实现...总之,通过JSP、Servlet和Cookie的组合,开发者可以创建一个具备记住密码功能的登录系统,提高用户的使用体验。但在实现过程中,应始终关注安全性,以保护用户的数据不被滥用。

    怎么记住用户名和密码登录期限

    总结来说,通过合理设置和管理Cookie,开发者可以实现“记住用户名和密码登录期限”的功能。在实现这一功能时,要注意平衡用户体验与安全性的关系,确保用户数据的安全。同时,随着技术的发展,现代Web应用可能还会...

    java web中使用cookie记住用户的账号和密码

    在Java Web开发中,实现“记住用户名和密码”的功能通常涉及到使用Cookie技术。Cookie是一种小型文本文件,由服务器发送到用户的浏览器并存储在本地,以便在用户下次访问同一网站时,浏览器可以将这些Cookie发送回...

    JSP改造Cookie案例1

    JSP改造Cookie案例1 本例子展示了如何使用Java ...通过这个案例,我们学习了如何使用Java Servlet和Cookie来实现记住用户名的功能。我们还学习了如何使用QueryRunner来执行数据库查询,以验证用户的账户和密码。

    JavaWeb 中Cookie实现记住密码的功能示例

    在JavaWeb中,我们可以利用Cookie来存储诸如用户名、密码等敏感信息的加密版本,以便在用户下次访问时自动填充表单。 **二、Cookie带来的好处** 1. **跟踪用户行为**:Cookie帮助网站记录用户的访问频率、停留时间...

    Cookie简介及JSP处理Cookie的方法

    在JSP中,可以通过`request.getCookies()`方法从客户端读取Cookie。这个方法返回一个Cookie对象数组,代表了所有接收到的Cookies。然后,可以通过循环遍历这个数组,使用`getName`和`getValue`方法来识别和读取特定...

    用jsp简单实现cookie功能

    当用户再次访问同一网站时,浏览器会自动将这些Cookie发送回服务器,从而允许服务器识别用户身份或记住之前的状态。每个Cookie都有一个唯一的名称和值,还可以设置过期时间、路径和域等属性。 二、创建Cookie 在...

    Jsp+Servlet+Cookie实现记住密码,自动登录,防止表单提交,记录登录次数

    在用户登录时,如果用户勾选了“记住我”的选项,系统会将用户的用户名或加密后的密码存储在客户端的Cookie中。Cookie是一种小型文本文件,由服务器发送到用户的浏览器并存储在那里。在用户下次访问网站时,浏览器会...

    jsp java中实现记住密码

    在Java Web开发中,"jsp java中...总结起来,通过在JSP和Java中利用Cookie技术,我们可以实现“记住密码”的功能,为用户提供便捷的登录体验。但同时,必须注重安全性和隐私保护,遵循最佳实践,确保用户信息的安全。

    jsp,自动登录,记住密码

    综上所述,"jsp,自动登录,记住密码"是通过JSP和Cookie技术实现的一种用户体验优化,但同时也需要考虑到安全性和隐私保护。在设计和实现这样的功能时,开发者需要平衡便捷性与安全性,确保系统的可靠性和用户的数据...

    JSP的Cookie在登录中的使用

    当用户成功登录后,若选中了“记住我”,服务器将在响应中设置一个或两个Cookie("username"和"password"),并将它们的值设置为用户输入的用户名和密码。这样,这些Cookie就会存储在用户的浏览器中。 ```jsp // ...

    Java Web登录自动填入用户名密码

    这个功能允许用户在选择“记住用户名和密码”后,下一次访问网站时,系统能自动填充登录表单,提供便捷的用户体验。这个过程涉及到浏览器存储用户信息的方式,主要使用到的技术是Cookie。 Cookie是一种在客户端存储...

    cookie,jsp详细介绍

    ### Cookie详解及JSP中的应用 #### 一、Cookie简介 ...在JSP中,通过合理的设置Cookie的属性如有效期和路径,可以更好地管理和利用Cookie。同时,需要注意Cookie的安全性问题,避免敏感信息的泄露。

    JQuery记住用户名和密码的具体实现

    location.href = "/index.jsp"; }else{ $("#overlay").hide(); $("#tip").text("用户名或密码错误,请重新登录!"); return false; } } }); } ``` `save()`函数负责处理记住用户名和密码的逻辑。如果"记住...

    cookie&session.pdf

    知识点一:会话的基本概念 会话是指在Web应用中,一个客户端(通常为浏览器)与Web...Cookie的应用场景包括记住用户名、自动登录(记住用户名和密码)等。 以上就是对“cookie&session.pdf”文件中知识点的详细解析。

    cookie和表单实现基本登录并保存信息

    JSP页面内容介绍 index.jsp 登录表单界面,默认勾选十天记住登录 提交表单执行doLogin.jsp逻辑 同时页面加载时需要判断之前是否有记住的登陆状态的选项,即查cookie是否存在 存在则在用户名和密码输入框中自动填入...

Global site tag (gtag.js) - Google Analytics