今日内容

  • Session
  • JSP
  • MVC开发模式

1 Session

1.1 概念

  • 服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession
  • session是一个域对象。他的范围“一次会话”

1.2 快速入门

  • 获取HttpSession对象:

    HttpSession session = request.getSession();

  • 使用HttpSession对象:

    Object getAttribute(String name) //获取

    void setAttribute(String name, Object value) //存储

    void removeAttribute(String name) //删除

1.3 原理

  • Session的实现是依赖于Cookie的。

1.4 细节

1、当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
  • 默认情况下。不是。
  • 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
// 创建Cookie对象
Cookie c = new Cookie("JSESSIONID",session.getId());
// 设置存活时间
c.setMaxAge(60*60);
// 添加Cookie到request域中
response.addCookie(c);
2、客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
  • 不是同一个,但是要确保数据不丢失。tomcat自动完成以下工作

    • session的钝化:

      • 在服务器正常关闭之前,将session对象系列化到硬盘上
    • session的活化:

      • 在服务器启动后,将session文件转化为内存中的session对象即可。
3、session什么时候被销毁?
  • 服务器非正常关闭
  • session对象调用invalidate()
  • session默认失效时间 30分钟

    // 修改默认失效时间,在web.xml中修改
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

1.5 session的特点

  • session用于存储一次会话的多次请求的数据,存在服务器端
  • session可以存储任意类型,任意大小的数据

1.6 session与Cookie的区别:

  • session存储数据在服务器端,Cookie在客户端
  • session没有数据大小限制,Cookie有
  • session数据安全,Cookie相对于不安全

2 JSP

2.1 概念:

  • JSP全称:Java Server Pages,是Java的动态网页技术,简单来说,就是,可以写Java代码的html页面。

    • 组成:JSP = Java + HTML + JSP内置对象
    • 一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码
    • 可以简化书写

2.2 原理

  • JSP本质上就是一个Servlet

2.3 JSP的脚本

  • 作用:JSP定义Java代码的方式
  • 语法:
<%  代码 %>:定义的java代码,在service方法中,属于局部变量
<%! 代码 %>:定义的java代码,在jsp转换后的java类的成员变量位置
<%= 代码 %>:定义的java代码,会输出到页面上

2.4 JSP的指令

  • 作用:用于配置JSP页面,导入资源文件
  • 格式:

    <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>
  • 分类:

1、page:用于配置JSP页面的

  • contentType:等同于response.setContentType()

    • 设置响应体的mime类型以及字符集
    • 设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)
  • import:导包
  • errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
  • isErrorPage:标识当前也是是否是错误页面。

    • true:是,可以使用内置对象exception
    • false:否。默认值。不可以使用内置对象exception

2、include:页面包含的。导入页面的资源文件

  • <%@include file="被引入的页面"%>

3、taglib:导入资源

  • <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    • prefix:前缀,自定义的

2.5 JSP的注释:

  • html注释:

    <!-- -->:只能注释html代码片段

  • jsp注释:推荐使用

    <%-- --%>:可以注释所有

2.6 JSP的内置对象

  • 在jsp页面中不需要获取和创建,可以直接使用的对象
  • jsp一共有9个内置对象
变量名真实类型作用
pageContextpageContext当前页面共享数据,还可以获取其他八个内置对象
requestHttpServletRequest一次请求访问多个资源(转发)
sessionHttpSession一次会话的多个请求间
applicationServletContext所有用户间共享数据
responseHttpServletResponse响应对象
pageObject当前页面(Servlet)的对象this
outJsWriter输出对象,数据输出到页面上
configServletConfigServlet的配置对象
exceptionThrowable异常对象

2.7 统一错误页面配置

  • 位置:在项目的,web.xml中,使用<error-page>标签配置
  • 语法:

    //当遇到500错误时,自动跳转到error.jsp页面
    <error-page>
        <error-code>500</error-code>
        <location>/error.jsp</location>
    </error-page>

3 MVC开发模式

3.1 Jsp演变历史

  • 早期只有servlet,只能使用response输出标签数据,非常麻烦
  • 后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,有写html表,造成难于维护,难于分工协作
  • 再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理性

3.2 MVC:

  • MVC是一种编程思想,他是一种规定你写代码的时候应该写在哪的规范。
  • M:Model,模型。JavaBean

    • 实体,用来传输数据,在Java中用JavaBean来体现
  • V:View,视图。JSP

    • 用来展示数据,在Java中用jsp/html来体现
  • C:Controller,控制器,用来控制页面显示,在Java中用Servlet来体现。

    • 获取用户输入
    • 调用模型
    • 将数据交给视图进行展示
  • 结论:

    在JavaWeb开发中,MVC要求:

    • 获取数据的代码都放在Servlet中。JSP只负责展示数据
    • Servlet需要把获取到的数据通过“域”传递给JSP,在传递数据过程中,数据必须以对象的形式传递

3.3 优缺点:

  • 优点:

    • 耦合性低,方便维护,可以利于分工协作
    • 重用性高
  • 缺点:

    • 使得项目架构变得负责,对开发人员要求高