zoukankan      html  css  js  c++  java
  • Session笔记

    1 Session的创建

    package p7.session;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    public class CreateSessionServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            /* 
            * request.getSession()方法内部会判断 该客户端是否在服务器端已经存在 session
            * 如果该客户端在此服务器不存在 session 那么就会创建一个新的 session 对象
            * 如果该客户端在此服务器已经存在 session 获得已经存在的该 session 返回
            */
            // 1  创建属于该客户端(会话)的私有的 session 区域
            HttpSession session = request.getSession();
            
            // 2 向session域中存入数据
            session.setAttribute("name", "jerry");
            
            // 3 获取该session对象的JSESSIONID编号
            String id = session.getId();
            
            //解决乱码问题
            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().write("你的JSESSIONID是:"+id);
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
    }

    2 从Session中获取数据

    package p7.session;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    public class GetDataFromSessionServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            // 从 session 中获得存储的数据
            // 已经存在了,拿着的是客户端携带过来的JSESSIONID去找对应的区域。
            HttpSession session = request.getSession();
            
            // 从Session域中获取数据
            Object attribute = session.getAttribute("name");
            
            // 解决乱码   输出。
            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().write(attribute+"");
            
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
    }

    3 JSESSIONID的持久化操作

    package p7.session;
    
    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;
    import javax.servlet.http.HttpSession;
    
    public class CreateSessionServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            /* 
            * request.getSession()方法内部会判断 该客户端是否在服务器端已经存在 session
            * 如果该客户端在此服务器不存在 session 那么就会创建一个新的 session 对象
            * 如果该客户端在此服务器已经存在 session 获得已经存在的该 session 返回
            */
            // 1  创建属于该客户端(会话)的私有的 session 区域
            HttpSession session = request.getSession();
            
            // 2 向session域中存入数据
            session.setAttribute("name", "李四");
            
            // 3 获取该session对象的JSESSIONID编号
            String id = session.getId();
            
            // 4 手动创建一个存储 JSESSIONID 的 Cookie 为该 cookie 设置持久化时间
            Cookie cookie = new Cookie("JSESSIONID",id);
            cookie.setMaxAge(6000);
            cookie.setPath("/WEBTest/");
            
            
            //解决乱码问题
            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().write("你的JSESSIONID是:"+id);
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
    }

    4 Session的生命周期

    5 案例-验证码检验功能实现和总结

    package login;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class LoginServlet extends HttpServlet {
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            
            request.setCharacterEncoding("UTF-8");
            
            //验证码校验
            //获得页面输入的验证
            String checkCode_client = request.getParameter("checkCode");
            //获得生成图片的文字的验证码
            String checkCode_session = (String) request.getSession().getAttribute("checkcode_session");
            //比对页面的和生成图片的文字的验证码是否一致
            if(!checkCode_session.equals(checkCode_client)){
                request.setAttribute("loginInfo", "您的验证码不正确");
                request.getRequestDispatcher("/login.jsp").forward(request, response);
                return;
            }
            
            
            //获得页面的用户名和密码进行数据库的校验
            //......
            
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    }
  • 相关阅读:
    349. Intersection of Two Arrays
    346. Moving Average from Data Stream
    345. Reverse Vowels of a String
    344. Reverse String
    342. Power of Four
    POJ2823 Sliding Window
    《STL源码剖析》笔记
    [jobdu]扑克牌顺子
    [jobdu]第一个只出现一次的字符
    [jobdu]包含min函数的栈
  • 原文地址:https://www.cnblogs.com/jepson6669/p/8330989.html
Copyright © 2011-2022 走看看