• Java-1109


    JSP

    1. 概念:java server pages : java服务器端页面
      1. 可以理解为:一个特殊的页面,其中既有html标签,又有java代码
      2. 作用:用于简化书写
    2. 原理:一个java类如果想被外界访问到,他必须是一个servlet,jsp本质也是一个servlet
      1. jsp就是一个已经写好很多html标签的servlet,帮助简化了很多书写。

    请添加图片描述

    1. JSP的脚本:JSP定义java代码的方式,就是<% %>内部的才是代码,外面的都是html元素
      1. <% 代码 %>:定义的java代码,在service方法中。可以定义很多东西,即service中可以定义什么,这个脚本中就可以写什么。
      2. <%! 代码 %>:该类标签定义的java代码,在jsp转换后的java类的成员位置。(用的非常少,servlet尽量不定义成员变量)
      3. <%= 代码 %>:定义的java代码会直接输出到页面上,等号后面直接是输出的内容或者变量
    2. JSP的内置对象
      1. 定义:在jsp页面中不需要获取和创建,可以直接使用的对象,例如request这种
      2. jsp一共有9个内置对象
        1. request
        2. response
        3. out:字符输出流对象,可以将数据输出到页面上。和response.getWriter( )类似
          1. 二者区别:out定义在什么位置就在什么位置输出,response.getWriter()都会先输出
          2. 原因:tomcat服务真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。response.getWriter()数据输出永远在out.write()之前。
          3. 尽量不用respons.getWriter() 用out.write( );
    3. JSP实例:改造刚才到cookie实例

    Session

    1. 概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession

    2. 入门:

      1. 获取HttpSession对象:

        HttpSession session = request.getSession();
        
        • 1
        1. Object getAttribute(String name)
        2. void setAttribute(String name , Object value)
        3. void removeAttribute(String name)
    3. 原理:Session的实现依赖于cookie

      1. 创建session:此时是没有cookie的,在内存中创建session时会得到一个唯一的id
      2. 响应:此时会在响应头的set-cookie:JSEESIONID 中存放刚才唯一的id
      3. 再次请求:此时request里面带着刚次sessionID的cookie,可以匹配到内存中的session

    请添加图片描述

    1. session细节:

      1. 当客户端关闭后,服务器不关闭,两次获取的session是否是同一个?答:不是

        1. 默认情况下不是。
        2. 解决:期望客户端关闭后,session也能相同
        //  期望客户端关闭后,session也能相同
                Cookie cookie = new Cookie("JSESSIONID",session.getId());
                cookie.setMaxAge(60*60*24);
                response.addCookie(cookie);
        
        • 1
        • 2
        • 3
        • 4
      2. 客户端不关闭,服务器关闭后,两次获取的session是否是同一个? 答:不是

        1. 虽然对象不是同一个,但是要确保数据不丢失
        2. session的钝化:
          1. 在服务器正常关闭之前,将session对象序列化到硬盘文件上
        3. session的活化:
          1. 服务器启动后,将session文件转化为内存中的session对象即可
        4. 以上两件事tomcat可以自动完成了,但是IDEA不行。
      3. session的失效时间(什么时候被销毁)

        1. 服务器关闭
        2. session对象调用invalidata( ),进行自杀
        3. session默认失效时间是30分钟(可以选择性配置 -> tomcat web.xml里面配置 )
        <Session-config>
        	<session-timeout>30session-timeout>
        Session-config>
        
        • 1
        • 2
        • 3
      4. session特点

        1. session用于存储一次会话的多次请求间的数据
        2. 可以存储任意类型,任意大小的数据(cookie只能是字符串)
        3. 与cookie的区别:
          1. session在服务器端,cookie在客户端
          2. session没有数据大小限制,cookie有
          3. session数据安全,cookie相对不够安全
      5. session案例:验证码

        1. 需求:
          1. 访问带有验证码的登录页面login.jsp
          2. 用户输入用户名密码以及验证码。
            1. 如果用户名有错,跳转登录页面,提示:用户名密码错误
            2. 如果验证码有错,跳转登录页面,提示:验证码错误
            3. 全部正确,则跳转到主页success.jsp,显示:用户欢迎您
        2. 分析:
          1. 完成页面编写,用户名、密码、验证码、登录按钮
          2. 完成验证码编写,同时生成验证码之后存入session,以便进行共享
          3. 比较验证码:
            1. 正确:
              1. 判断用户名密码是否正确:
                1. 正确:
                  1. 记录session,登录状态,存储用户信息
                  2. 重定向到success.jsp
                2. 错误:
                  1. request存储错误信息
                  2. 转发到登录界面
            2. 错误:
              1. 存储提示信息到request
              2. 转发到登录页面
  • 相关阅读:
    CTF Misc(3)流量分析基础以及原理
    仅用5000行代码,在V853上AI渲染出一亿幅山水画
    劫持TLS绕过canary pwn89
    百万买手,小红书电商商业化之锚
    JAVA开发管理(比敏捷更快的DevOps)
    相机传感器
    前端 JS 安全对抗原理与实践
    CMake 学习笔记
    设计模式的六大原则
    无需开发,精臣云可轻松连接用户运营、广告推广等行业应用
  • 原文地址:https://blog.csdn.net/lannister_awalys_pay/article/details/127779732