2017.11.23 利用Cookie管理实现自动登陆

Cookie管理

Cookie对象是由服务器产生并保存在客户端的信息,常用他记录用户个人信息以及个性化设置。用户每次访问网点时,应用程序就可以检索以前保存的信息
Cookie对象属于的类是javax.servlet.http.Cookie 他不是JSP的内置对象

1.Cookie的基本用法
一般需要两步操作,首先有服务器创建Cookie对象保存在客户端,然后再JSP或Servlet中读取Cookie并进行操作。


自动登录过程
//login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> 
    <title>用户登陆界面</title>
  </head>
  
  <body>
    <form action="logincheck.jsp" method="post">
    	用户名:<input type="text" name="username"><br>
    	
    	密&nbsp;&nbsp;码:<input type="password" name="userpwd"/><br>
    	<input type="submit" value="登陆">
    </form>
  </body>
</html>

//logincheck.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   <title>登陆处理</title>

  </head>
  
  <body>
    <%
    	String un=request.getParameter("username"); //获取用户名
    	if(un!=null){
    		Cookie c=new Cookie("username",un);
    		c.setMaxAge(30*24*3600);//设置Cookie有效期为30天
    		response.addCookie(c);//将Cookie对象保存在客户端
    		session.setAttribute("username",un);//将用户名存到session范围内用于权限检查
    		response.sendRedirect("main.jsp");//重定向到主页面
    	}
     %>
  </body>
</html>

//main.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>  
    <title>主页面</title>
  </head>
  
  <body>
    <%
    	String username=(String)session.getAttribute("username");
    	if(username==null){  //session中用户名为空说明用户没登陆
    		Cookie[] cs=request.getCookies();
    		String v=null;
    		if(cs!=null){
    			for(int i=0;i<cs.length;i++){
    				if(cs[i].getName().equals("username")){  //获取名称为username的Cookie对象值
    					v=cs[i].getValue();
    				}
    			}
    		}
    		if(cs!=null){		//Cookie值不空,自动登陆成功
    			session.setAttribute("username",v);
    			out.print(v+",您好!");
    		}else{  //自动登陆失败,转到登陆界面
    			out.print("您还没有注册,2秒后转到注册界面!");
    			response.setHeader("Refrush","2;url=login.jsp");
    		}
    	}
    	else{  //session中用户名不空说明用户已经登陆
    		out.print(username+"您好!");
    	}
     %>
  </body>
</html>
原文地址:https://www.cnblogs.com/qichunlin/p/7887220.html