Cookie两周免登录

 Html页面

<%--
  Created by IntelliJ IDEA.
  User: 白菜你个cabbage
  Date: 2019/11/3
  Time: 13:39
  To change this template use File | Settings | File Templates.
--%>
<%--(1)新建一个login.jsp页面,制作一个表单,包含用户名和密码框登录按钮以及一个在二周内无需登录的选择框。该页面检查cookies中是否存在名为user的项,
        如果存在,则不显示登录表,并跳到hello.jsp页面。--%>
<%--(2)将登录的表单交由一个servlet来处理,这个servlet收集用户名和密码,并向客户端发送cookie。注意设置cookie的有效周期为2周。--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页面</title>
</head>
<body>
使用cookie技术使用户在二周内免登录
<form action="Experiment/dealServlet" method="post">
    登录名:<input type="text" name="username"/>
    密 码:<input type="password" name="passWd"/><br>
    <input type="checkbox" name="keep"/>两周免登录<br>
    <input type="submit" value="登录"/>
</form>
<%
    HttpSession hs = request.getSession();
    String name = (String)hs.getAttribute("name");
    if(name!=null){
        out.println(name);
        if(name.equals("user")){
            response.sendRedirect("hello.jsp");
        }
    }
%>
</body>
</html>

 设置Cookie

package Experiment;

import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

public class dealServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        String user = req.getParameter("username");
        String passwd = req.getParameter("passWd");
        if(user.equals(passwd)){
            String keep = req.getParameter("keep");
            if(keep!=null){//如果复选框被选中,即创建两周免登录
                Cookie name = new Cookie("name","user");
                Cookie mima = new Cookie("passwd","passWd");
                name.setMaxAge(14*24*3600);
                mima.setMaxAge(14*24*3600);
                resp.addCookie(name);
                resp.addCookie(mima);
            }
            //为了用户名和密码的安全性,以Session的方式传递这两个值
            HttpSession hs = req.getSession(true);
            hs.setMaxInactiveInterval(30);//设置session失效时间
            hs.setAttribute("name",user);
            hs.setAttribute("passwd",passwd);
            resp.sendRedirect("cookies");
        }
    }
}

 逻辑处理

package Experiment;

import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

public class cookies extends HttpServlet {
    String username;
    String passwd;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置服务器端以UTF-8编码进行输出
        resp.setCharacterEncoding("UTF-8");
        //设置浏览器以UTF-8编码进行接收,解决中文乱码问题
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        //获取session的值
        HttpSession  hs = req.getSession();
        String name = (String)hs.getAttribute("name");
        String passwd = (String)hs.getAttribute("passwd");
        if(name==null){   //判断直接访问欢迎界面的用户是否合法(session没有用户名,不是从登录界面进入的)
            String cname="";
            String cpasswd="";
            Cookie[] allCookies=req.getCookies();  //获取Cookie
            if(allCookies!=null)
            {
                for(int i=0;i<allCookies.length;i++)
                {
                    Cookie temp=allCookies[i];
                    if(temp.getName().equals("name"))
                    {
                        cname=temp.getValue();  //获得cookie中的用户名和密码
                    }
                    else if(temp.getName().equals("passwd"))
                    {
                        cpasswd=temp.getValue();
                    }
                }
            }
            resp.sendRedirect("http://localhost:8080/javaWeb_war_exploded/successCookies.jsp");   //直接登录欢迎界面且cookie中无值,跳转登录界面
        }

        out.println("成功"+name);
        //resp.sendRedirect("http://localhost:8080/javaWeb_war_exploded/successCookies.jsp");
    }
}

 

 

 

 

原文地址:https://www.cnblogs.com/zhahu/p/11931372.html