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);
        }
    }
  • 相关阅读:
    独立性检验|适应性检验|卡方检验|离散型数据|连续型数据
    双因子方差分析|adjusted R|强度|SSA|SSE|SST|
    发明人|申请人|专利权人|完全民事能力|谁主张谁证明|新颖性|创造性|实用性|先申请制
    方差分析|重复|指标|因素|处理效应|实验误差|实验设计可避免的误差|一般线性|广义线性
    字符数组1
    四舍五入输出数字
    如何输出0001, 0002, 0003... 这样的数
    shell scripting Python
    [C&Python]9x9乘法口诀打印
    [pointer]调用函数找出一维数组中的最值,
  • 原文地址:https://www.cnblogs.com/jepson6669/p/8330989.html
Copyright © 2011-2022 走看看