zoukankan      html  css  js  c++  java
  • 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");
        }
    }
    

     

     

     

     

  • 相关阅读:
    Java基本数据类型
    java类和对象
    java命名规范
    算法(Algorithms)第4版 练习 1.5.16
    算法(Algorithms)第4版 练习 1.5.15
    算法(Algorithms)第4版 练习 1.5.14
    算法(Algorithms)第4版 练习 1.5.13
    算法(Algorithms)第4版 练习 1.5.12
    算法(Algorithms)第4版 练习 1.5.10
    算法(Algorithms)第4版 练习 1.5.9
  • 原文地址:https://www.cnblogs.com/zhahu/p/11931372.html
Copyright © 2011-2022 走看看