zoukankan      html  css  js  c++  java
  • java:Cookie(常用操作),Cookie和Session免登录实例

     1.常用操作:

    package cn.zzsxt.lee.web.cookie;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class GetCookieServlet extends HttpServlet {
    
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
            // 获取cookie信息
            Cookie[] cookies = req.getCookies();
            for (int i = 0; i < cookies.length; i++) {
                System.out.println(cookies[i].getName() + ":" + cookies[i].getValue());
            }
    
        }
    
    }
    package cn.zzsxt.lee.web.cookie;
    
    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;
    
    /**
     * @description 
     * 
     * cookie:
     *         在服务器被创建,返回给客户端,并且保存客户端
     *         如果设置了SETMAXAGE(int seconds),会把cookie保存在客户端的硬盘中
     *         如果没有设置,会默认把cookie保存在浏览器的内存中
     *        一旦设置setPath():只能通过设置的路径才能获取到当前的cookie信息
     * @author Seven Lee
     * @date 
     *
     */
    @WebServlet("/cookie.sxt")
    public class CookieServlet extends HttpServlet {
    
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
            // 创建cookie对象
            Cookie compCookie = new Cookie("computer", "HP");
            // 服务器把cookie响应给客户端,所有的cookie对象,都会在服务器端创建,通过http响应给客户端(浏览器)
    
            
            Cookie keyCookie = new Cookie("key", "doubleflybird");
            
            Cookie mouseCookie = new Cookie("mouse", "leishe");
            mouseCookie.setMaxAge(60*60*24*30);//如果不设置使用时间,那么将取不到Cookie的值
            
            System.out.println(req.getContextPath());// 项目名(在tomcat中部署的项目名)
            // /zzsxt/shopping.jsp
            keyCookie.setPath(req.getContextPath()+"/getCookie.sxt");// 一旦设置了cookie的路径,就只能通过这一个路径才能获取到cookie信息
            
    
            resp.addCookie(compCookie);
            resp.addCookie(mouseCookie);
            resp.addCookie(keyCookie);
        }
    
    }

     2.Cookie和Session登录实例:

      注册:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>My JSP 'register.jsp' starting page</title>
    <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript">
    
        var sexFlag = false;
        var untFlag = false;
        function checkSex() {
            var sex = $(":checked").val();
            if (sex != null) {
                // 验证成功
                alert(111);
                sexFlag = true;
            } else {
                // 验证失败
                alert(222);
                sexFlag = false;
            }
        }
    
        function checkUniversity() {
            var unt = $(":selected").val();
            if (unt != 0 && unt != null) {
                // 验证成功
                untFlag = true;
            } else {
                untFlag = false;
            }
        }
    
        $(function() {
            
            
            $("form").submit(function() {
                checkSex();
                checkUniversity();
                return sexFlag && untFlag;
            });
    
    
        });
    </script>
    
    </head>
    
    <body>
    
        <h1>注册页面</h1>
        <form action="register.sxt" method="post">
    
            用户名:
            <input type="text" name="username" id="uname" />
            密码:
            <input type="password" name="pwd" id="pawd" />
            性别:
            <input class="sexes" type="radio" name="sex" value="male" /><input class="sexes" type="radio" name="sex" value="female" />
            女 院校:<select name="unt">
                <option value="0">请选择院校</option>
                <option value="zzsxt">天津大学</option>
                <option value="bjsxt">北京大学</option>
            </select>
            <input type="submit" value="提交" />
    
        </form>
    
    
    </body>
    </html>

      注册处理:

    package cn.zzsxt.lee.web.servlet;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.zzsxt.lee.web.dao.IUserDao;
    import cn.zzsxt.lee.web.dao.impl.UserDaoImpl;
    import cn.zzsxt.lee.web.entity.User;
    import cn.zzsxt.lee.web.utils.BASE64;
    import cn.zzsxt.lee.web.utils.MD5;
    import cn.zzsxt.lee.web.utils.UUIDUtils;
    
    @WebServlet("/register.sxt")
    public class RegisterServlet extends HttpServlet {
    
        private IUserDao userDao = new UserDaoImpl();
    
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
            String username = request.getParameter("username");
            String pwd = request.getParameter("pwd");
            String sex = request.getParameterValues("sex")[0];
            String university = request.getParameterValues("unt")[0];
            User user = new User();
            user.setId(UUIDUtils.getUUid());
            user.setUsername(username);
            user.setRealPassword(pwd);
            pwd = MD5.getMD5(pwd);
            user.setPassword(pwd);
            user.setSex(sex);
            user.setUniversity(university);
            user.setAuthority(0);
            int result = 0;
            try {
                result = userDao.registerUser(user);
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (result > 0) {
                response.sendRedirect("login.jsp");
                return;
            }
    
        }
    
    }

     

     

       登录之前必须先判断获取Cookie:

     

    package cn.zzsxt.lee.web.servlet;
    
    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;
    
    import cn.zzsxt.lee.web.utils.MD5;
    
    @WebServlet("/checkLogin2.sxt")
    public class CheckLogin2 extends HttpServlet {
    
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            String username = "";
            String password = "";
    
            // 1.获取cookie的值
            Cookie[] cookies = request.getCookies();
            // 2.判断cookie数组是否为null
            if (cookies != null) {
                // 3.判断cookie中是否有用户名和密码
                for (int i = 0; i < cookies.length; i++) {
                    if ("uname".equals(cookies[i].getName())) {
                        // 4.如果cookie中有用户名和密码,就获取
                        username = cookies[i].getValue();
                    }
                    if ("pwd".equals(cookies[i].getName())) {
                        password = cookies[i].getValue();
                    }
                }
            }
            request.getSession().setAttribute("name", username);
            request.getSession().setAttribute("pwd", password);
            response.sendRedirect("login.jsp");
            return;
        }
    }

         登录:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>My JSP 'login.jsp' starting page</title>
    
    
    </head>
    
    <body>
    
        <form action="login.sxt" method="post">
            用户名:
            <input type="text" name="username" value="${name }" />
            密码:
            <input type="password" name="pwd" value="${pwd }" />
            <input type="submit" value="提交" />
    
        </form>
    
    
    
    </body>
    </html>

      登录处理:

    package cn.zzsxt.lee.web.servlet;
    
    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;
    
    import cn.zzsxt.lee.web.dao.IUserDao;
    import cn.zzsxt.lee.web.dao.impl.UserDaoImpl;
    import cn.zzsxt.lee.web.entity.User;
    import cn.zzsxt.lee.web.utils.MD5;
    
    @WebServlet("/login.sxt")
    public class LoginServlet extends HttpServlet {
    
        private IUserDao userDao = new UserDaoImpl();
    
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8");
    
            String username = request.getParameter("username");
            String pwd = request.getParameter("pwd");
            pwd = MD5.getMD5(pwd);
            User user = new User();
            user.setUsername(username);
            user.setPassword(pwd);
    
            try {
                User u = userDao.selectUserByUsernameAndPassword(user);
                if (u.getId() != null && !"".equals(u.getId())) {
                    // 登录成功
                    // 存入session
                    request.getSession().setAttribute("user", u);
                    Cookie usernameCookie = new Cookie("uname", u.getUsername());
                    Cookie pwdCookie = new Cookie("pwd", u.getRealPassword());
                    usernameCookie.setMaxAge(60 * 60 * 24);
                    pwdCookie.setMaxAge(60 * 60 * 24);
                    response.addCookie(usernameCookie);
                    response.addCookie(pwdCookie);
                    response.sendRedirect("index.jsp");
                } else {
                    // 登录失败
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    }

      frameset框架主页:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>My JSP 'index.jsp' starting page</title>
    </head>
    
    <frameset rows="100,*">
        <frame src="top.jsp" name="top" />
        <frameset cols="200,*">
            <frame src="left.jsp" name="left" />
            <frame src="right.jsp" name="right" />
        </frameset>
    </frameset>
    </html>

         Filter内Cookie的设置:

    package cn.zzsxt.lee.web.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * @description 编码过滤器
     * @author Seven Lee
     * @date 2017年7月28日下午4:48:59
     *
     */
    public class GlobalFilter implements Filter {
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
                throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest) servletRequest;
            HttpServletResponse response = (HttpServletResponse) servletResponse;
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=UTF-8");
            // 如果是设置编码,就必须添加chain.doFilter();
           // chain.doFilter(request, response);  //放这里有BUG,登录的时候第一次不会出现账号密码,刷新一次才会出现
            // 获取cookie数组
            Cookie[] cookies = request.getCookies();
            if (cookies != null) {// 防止空指针
                String username = "";
                String password = "";
                for (int i = 0; i < cookies.length; i++) {
                    System.out.println(cookies[i].getValue());
                    if ("username".equals(cookies[i].getName())) {
                        username = cookies[i].getValue();
                    }
                    if ("password".equals(cookies[i].getName())) {
                        password = cookies[i].getValue();
                    }
                }
                request.getSession().setAttribute("username", username);
                request.getSession().setAttribute("password", password);
            chain.doFilter(request, response); //放最后没BUG }
    else { for(int i = 0; i < cookies.length; i++){ System.out.println(cookies[i].getValue()); } response.sendRedirect("login.jsp"); return; } } @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { } }

      Top处登录成功:

      

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    
    <title>My JSP 'top.jsp' starting page</title>
    <script type="text/javascript">
    
        function trunLogin() {
            window.top.location.href = "login.jsp";
        }
    </script>
    
    </head>
    
    <body>
        <c:choose>
            <c:when test="${sessionScope.user.username != null }">  //指的是登录时user对象的属性
                <h1>欢迎:${sessionScope.user.username }</h1>
                <a href="">注销</a>
            </c:when>
            <c:when test="${sessionScope.username != null }"> //指的是当前Cookie的属性
                <h1>欢迎:${sessionScope.username }</h1>
                <a href="">注销</a>
            </c:when>
            <c:otherwise>
                <a href="javascript:void(0);" onclick="trunLogin();">请登录</a>
            </c:otherwise>
        </c:choose>
    </body>
    </html>
  • 相关阅读:
    访问修饰符
    SqlServer 查运行进程
    SqlServer 作业计时执行存储过程,杀超时进程
    VS快捷键操作
    sql server 命令
    vs 加载 dev控件
    TreeList显示[+] [-] 线条样式
    佳能MG2580S清零
    Dev WaitDialog 使用
    导出.txt / .pdf / .xls
  • 原文地址:https://www.cnblogs.com/kuangzhisen/p/7236498.html
Copyright © 2011-2022 走看看