SpringMVC(3)——SpringMVC域对象

目录

SpringMVC域对象共享数据

(回顾)JSP九大内置对象中的四大域对象

(前置工作)搭建Maven项目的web模块,配置SpringMVC

SpringMVC向request域对象共享数据的五种方法

1.使用原生ServletAPI向request域对象共享数据(了解)

2.使用ModelAndView对象向request域对象共享数据(重要)

3.使用Model向request域对象共享数据

4.使用map向request域对象共享数据

5.使用ModelMap向request域对象共享数据

(补充)Model、ModelMap、Map的关系

(补充)通过Debug来分析控制器方法执行之后都会返回统一的ModelAndView对象

向session域共享数据

向application域共享数据


SpringMVC域对象共享数据

回顾:当我们获取请求参数,然后通过请求参数进行service层业务逻辑处理,处理完后进行Dao层持久化操作,操作完成返回的数据到service层,service层处理好之后返回控制层,控制层此时需要将数据共享给页面,这时候就需要域对象了。

(回顾)JSP九大内置对象中的四大域对象

  1. pageContext (PageContextImpl 类) 当前 jsp 页面范围内有效,比如我在jsp页面存入的数据,我在该jsp页面取出存入的数据数据
  2. request (HttpServletRequest 类)、 一次请求内有效(浏览器发送给服务器的请求次数),服务器之间通过请求转发,也只算是一次请求(例如:SpringMVC前端控制器DispatcherServlet将请求转发到页面)
  3. session (HttpSession 类)、 一个会话范围内有效(也就是操作域对象session的浏览器关闭了,session也就失效了,因为服务端保留着与一个客户端之间通信的唯一的ID)。但是对于Idea的Tomcat而言,当idea中tomcat关了,session就没了。一般用于保存登录状态
    钝化、活化解释:实际上是当服务器迫不得已想要关闭时,用户会话还在进行相应的操作,这时就需要使用序列化将内存session信息序列化保存起来放在硬盘,这个过程称之为session钝化;服务器重启后,又将磁盘中的Session重新反序列化加载到服务器中,这个过程称之为session活化。这样就保证了用户信息不会丢失,实现永久化保存
  4. application (ServletContext 类) 整个 web 工程范围内都有效(只要 web 工程不停止,数据都在,重新部署服务器也会失效)
  • 域对象是可以像 Map 一样存取数据的对象。四个域对象功能一样。不同的是它们对数据的存取范围。
  • 四个域在使用的时候,优先顺序是他们从小到大的范围的顺序,因为最容易失效证明内存最容易被释放,从而降低服务器压力
  • pageContext ====>>> request(查询) ====>>> session ====>>> application

(前置工作)搭建Maven工程的web模块springMVC-demo3

  1. 创建项目,引入依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.atguigu.mvc</groupId>
        <artifactId>springMVC-demo3</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!--工程打包方式,默认是jar,如果这是一个web工程,打包方式为war
                当前是一个web工程,因此我们需要为这个Maven工程添加web模块,
                模块里面有webapp及webapp里面的web.xml-->
        <packaging>war</packaging>
    
        <!--添加依赖群,当导报成war包时,这些依赖都会被放到webapp目录的
        WEB-INF目录中的lib目录下-->
        <dependencies>
            <!--添加单个依赖SpringMVC,下面同理.由于 Maven 的传递性,
            我们不必将所有需要的包全部配置依赖,而是配置最顶端的依赖,其他靠传递性导入,
            意味着只要导入了这个SpringMVC依赖,那么
            SpringMVC依赖的依赖也会导入进来,其中就有spring的基础框架jar包:
            aop、beans、context、core、expression,还有自身web框架jar包
            传递性对于其他依赖同理-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.3.1</version>
            </dependency>
            <!-- 日志,用于日志输出 -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.2.3</version>
            </dependency>
            <!-- ServletAPI,之前没导入是因为Tomcat自带了Servlet和JSP的jar包,
            因此只要配置了tomcat就能使用Servlet,java不自带Servlet的-->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <!--依赖范围,表示我们什么地方可以使用这个jar包,
                这里设置成provided就是该依赖已被服务器提供,因此编译时
                这个依赖都会被放到webapp目录的WEB-INF目录中的lib目录下-->
                <scope>provided</scope>
            </dependency>
            <!-- Spring5和Thymeleaf整合包,是视图技术,控制页面显示内容 -->
            <dependency>
                <groupId>org.thymeleaf</groupId>
                <artifactId>thymeleaf-spring5</artifactId>
                <version>3.0.12.RELEASE</version>
            </dependency>
        </dependencies>
    </project>
  2. 配置web入口,注册SpringMVC

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    
        <!--配置springMVC的编码过滤器CharacterEncodingFilter-->
        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <!--设置要使用UTF-8编码-->
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <!--强制服务器响应请求为如上所设置的编码,不设置接收请求为true是因为底层代码在
            request并没有设置,因此肯定为true,也就是接收请求编码的一定是强制用如上
            所设置的编码-->
            <init-param>
                <param-name>forceResponseEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <!--"/*"表示所有请求都需
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值