jsp cookie+session实现简易自动登录

关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。
如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。

在这里插入图片描述
login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
  <head>
           <title>登录</title>   	
  </head>
 
  <body> 
    <form action="sucess.jsp" method="post">
        用户名:<input name="username" /><br/>
        
     <%--<input type="checkbox" name="time"  />记住用户名 --%>
                      
                     <input type="submit" name="submit" id="submit" value="登录"/>
    </form>
    <% 
        //读取session值
        String val= (String)session.getAttribute("name");
        //如果session不存在
        if(val==null){
            val ="不存在";
        }
        out.print("当前\""+val+"\"用户可自动登录");
     %>
    

     
    
  </body>
</html>


success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>主不在乎</title>
</head>
<body>
<%
    //获取username
    String name = request.getParameter("username");
    //判断用户名是否存在
    if(name != null && !name.trim().equals("")){       
        //String[] time = request.getParameterValues("time");
        
        //设置session值,(login页面可读取)
        session.setAttribute("name", name);
        
        //设置Cookie
        Cookie Cookie = new Cookie("name",name);        
        Cookie.setMaxAge(30*24*3600); //设置cookie有效期为30天                        
        response.addCookie(Cookie); //在客户端保存Cookie
        
        out.println("welcome: " + name+"欢迎登录");
       } 
    else{
       response.sendRedirect("main.jsp");
       }
   
%>
<a href="login.jsp">relogin</a>
</body>
</html>

main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>主不在乎</title>
</head>
<body>

<%
String name=(String)session.getAttribute("username");

//获取cookie
Cookie[] cookies = request.getCookies();

//cookie存在
 if(cookies != null && cookies.length > 0){
     for(Cookie cookie:cookies){
         //获取cookie的名字
         String cookieName = cookie.getName();
         //判断是否与name相等
         if(cookieName.equals("name")){
            //获取cookie的值
             String value = cookie.getValue();
             name = value;
             }
         }
     out.println("welcome again: " + name+"欢迎登录");
     
//*************************
     // 另一种写法
     
     String v=null;
     for(int i=0;i<cookies.length;i++){
    	 if(cookies[i].getName().equals("name")){
    		 v=cookies[i].getValue();
    	 }
     }
     if(v!=null){
    	 out.println(" Hello World "+v);
     }
     
    }
//*************************
 else {
	 response.sendRedirect("login.jsp");
 }

%>


<a href="login.jsp">relogin</a>

</body>
</html>

运行login.jsp
在这里插入图片描述
若想在jsp页面中输出
先定义

<%
String name=(String)session.getAttribute("username");
%>

然后

<table align="center">
      <tr align="center">
      <td >	欢迎回来 <%=name %></td>
      </tr>
  </table>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值