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. 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);
      
    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>30</session-timeout>
      </Session-config>
      
    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. 转发到登录页面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值