09-12.Cookie记录上次访问的时间、12.记住用户名案例讲解-02取Cookie

10.Cookie存活时间的细节讲解

11.记住用户名案例讲解-01存Cookie

 12.记住用户名案例讲解-02取Cookie

 

 

 

 

 

 

 

 

 

 

 

 

 

login.jsp代码:

复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

    /**1.通过cookie的key来获取值此*/
    function getCookieValue(key) {
        //1.通过js来获取cookies
        var cookie = document.cookie;//remember=true; username=gyf
        
        //2.拆分cookie
        var cks = cookie.split('; ');
        
        for(var i = 0; i<cks.length;i++){
            var ck = cks[i];//remember=true 或 username=gyf
            
            //3.取name和value
            var ckArr = ck.split("=");
            var name = ckArr[0];
            var value = ckArr[1];
            
            //4.找到对应的key的 vlaue
            if(key == name){
                return value;
            }
        }
        
    }
    
    window.onload = function(){
        var remember = getCookieValue('remember');
        if(remember == 'true'){
            //1.给记住用户名勾选中
            var rememberTag = document.getElementById('remember');
            rememberTag.checked = 'checked';
            
            //2.给用户名显示上次登录名字
            var username = getCookieValue('username');
            var usernameTag = document.getElementById('username');
            usernameTag.value = username;
            
        }
        
        
    }
    
</script>
</head>
<body>

<form action="/day10-20180321/Lesson11LoginServlet" method="post">
    <table border="1">
        <tr>
            <td>用户名:</td>
            <td><input id="username"  type="text" name="username"></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><input type="password" name="password"></td>
        </tr>
        <tr>
            <td colspan="2">
                <input  id="remember" type="checkbox" name="remember" value="true">记住用户名
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="登录">
            </td>
        </tr>
    </table>
</form>
</body>
</html>
复制代码

 

 

Lesson11LoginServlet接口代码:
复制代码
package com.gyf.web.servlet.lesson11;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/Lesson11LoginServlet")
public class Lesson11LoginServlet extends HttpServlet{

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        
        // TODO Auto-generated method stub
        response.setHeader("content-type", "text/html;charset=utf-8");
        
        //1.获取表单请求参数 
        String username =  request.getParameter("username");
        String password =  request.getParameter("password");
        String remember =  request.getParameter("remember");
        
        //2.简单判断是否登录成功
        boolean success = "gyf".equals(username) && "123".equals(password);
        
        if(success){
            response.getWriter().write("登录成功");
        }else{
            response.getWriter().write("登录失败");
        }
        
        //3.把remember和username存在cookie中
        if("true".equals(remember) && success == true){
            
            Cookie ck1 = new Cookie("remember", remember);
            ck1.setMaxAge(60 * 60);//存活1个小时
            response.addCookie(ck1);
            
            Cookie ck2 = new Cookie("username", username);
            ck2.setMaxAge(60 * 60);//存活1个小时
            response.addCookie(ck2);
        }else{
            //消除cookie
            Cookie[] cks = request.getCookies();
            if(cks != null){
                for(Cookie c : cks){
                    c.setMaxAge(0);//删除cookie
                    response.addCookie(c);
                }
            }
            
        }
        
    }
}
复制代码

 

posted @   expworld  阅读(154)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示