• Session


    ##JSP
        
        1. 概念:
            * Java Server pages:java服务器端页面
                * 可以理解为:一个特殊的页面,其中既可以直接定义html的标签,又可以定义java代码
                * 用于简化书写!
        2.原理
            * JSP本质上就是一个Servlet
        3. JSP的脚本: JAVA定义JAVA代码的方式:
            1. <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么
            2. <%! 代码 %> :定义的java代码,在jsp转换后的java类的成员位置。
            3. <%= 代码 %> :‘=’相当于输出语句,定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么
        4. JSP内置对象:
            * 在jsp页面中不需要去创建获取,就可以直接使用的对象
            * jsp一共有9个内置对象。
            * 今天学习:
                * request
                * response
                * out:字符输出流对象,可以将数据输出到页面上。和response.getWriter()类似
                    * response.getWriter()和out.writer()的区别:tomcat给客户端做出响应之前,会先去找response的缓冲区,再去找out的缓冲区。out在定义的位置输出,而response先于out输出
                    
    ##Session
        1. 概念:服务器端会话技术,再一次会话的多起请求间共享数据,将数据保存在服务器端的对象中。HttpSession
        2. 快速入门:
            1. 获取HttpSession对象:
                request.getSession()
            2. 使用HttpSession对象:
                getAttribute()
                setAttribute()
                removeAttribute()
        3. 原理
            * Session的实现是依赖于Cookie 的
        4.细节:
            1. 当客户端关闭后,服务器端不关闭,两次获取的session是同一个吗
                * 默认情况下不是(客户端关闭,cookie关闭,没有对应的cookie 头,session是依赖于cookie的)
                * 期望客户端关闭后,session也能相同。
                    1. 创建cookie,键为JSESSION    Cookie c = new Cookie("JSESSION",session.getId());
                    2. 设置cookie的最大存活时间 c.setMaxAge(60 * 60);
                                                response.addCookie(c);
            2. 客户端不关闭,服务器端关闭,两次获取的session是同一个吗
                * 不是同一个,但是要确保数据不丢失
                    * session的钝化
                        * 在服务器正常关闭之前,将session对象序列化到硬盘上
                    * session的活化
                        * 在服务器启动后,将session文件转化为内存中的session对象即可。
                            * tomcat服务器可以进行session对象的序列化和反序列化,而idea可以序列化但是不能够反序列化读取session对象(先删除work文件再重新创建)
            3. session什么时候被销毁?
                1. 服务器关闭
                2. session对象去调用一个方法invalidate();
                3. session默认失效时间是30分钟(可以设置默认失效时间,在tomcat目录下web.xml的<session-config>标签内)
        5. session的特点:
            1. session用于存储一次会话的多次请求的数据,存在服务器端
            2. session可以存储任意类型,任意大小的数据
            
            * session与cookie的区别:
                1. session存储数据在服务器端
                2. session没有数据大小限制,cookie有
                3. session数据安全,cookie相对于不安全
                
    ================================================================================================
    验证码案例:
        分析:1.设置request的编码
            2. 获取参数Map集合
            3. 获取验证码
            4. 将用户信息封装到user对象
            5. 先判断程序生成的验证码和用户输入的验证码是否一致(减小数据库的开销)。从session中获取程序生成的验证码。
                * 一致:
                    * 再判断用户名和密码是否正确
                        * 正确:
                            * 登录成功
                            * 存储数据 session
                            * 跳转到successjsp(重定向)
                        * 不正确:
                            1. 给提示信息
                            2. 跳转登录页面
                * 不一致:1. 给用户提示信息,验证码错误(request)
                          2. 跳转登录页面,转发

  • 相关阅读:
    memory consistency
    网页基础
    ECC
    RSA
    argparse模块
    009-MySQL循环while、repeat、loop使用
    001-mac搭建Python开发环境、Anaconda、zsh兼容
    013-在 Shell 脚本中调用另一个 Shell 脚本的三种方式
    012-Shell 提示确认(Y / N,YES / NO)
    014-docker-终端获取 docker 容器(container)的 ip 地址
  • 原文地址:https://www.cnblogs.com/zlnice/p/9555100.html
Copyright © 2020-2023  润新知