SpringMVC(3)——SpringMVC域对象

02、SpringMVC核心(上) 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>
            <!--"/*"表示所有请求都需要设置特定的彪马格式格式-->
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <!-- 配置SpringMVC的前端控制器DispatcherServlet,对浏览器发
手把手教你配置UEFI Secure Boot:从密钥生成到系统验证(附避坑指南) 本文详细介绍了如何配置UEFI Secure Boot,从密钥生成到系统验证的全过程,包括PK、KEK等关键密钥的生成方法,以及常见问题的解决方案。通过实战案例和避坑指南,帮助用户有效提升系统启动安全性,防止恶意软件植入。 阅读详情

相关推荐

汇川机器人与PLC通信-ModbusTCP超详细案例

通过汇川机器人与PLC的ModbusTCP通信项目案例,我们可以了解通讯配置的过程,地址映射的方式,对接信号的转换,运行时序的逻辑等注意事项,帮助我们快速应用到项目中。

weixin_44166380的博客 1万+

对接金蝶云星空调用即时库存信息查询API(附JAVA实现)

这篇文章教你如何对接金蝶API并且使用JAVA调用金蝶云星空的即时库存查询API

实用的博客 2608

【专栏必读】王道考研408计算机组成原理万字笔记使用说明及章节导航

本文是为准备408王道计算机组成原理考试的学生精心整理的万字笔记,涵盖了从计算机系统概述、数据表示和运算到存储系统、指令系统等多个章节的重点内容。本文强调了学习笔记的重要性,并分享了学习建议,如按视频课逻辑记录,建立学科框架。笔记详细记录了每章的关键知识点,包括存储器、CPU、I/O系统的工作原理,还附带了习题和思维导图,旨在帮助考生高效复习。

快乐江湖的博客 9万+

2025年新发表的语音大模型全双工模型/框架/技术

参考该论文,给出2025年新发表的全双工模型或框架或技术下面这份清单专挑、且与“全双工语音对话/同步对话(边听边说、可打断、回馈/相槌、重叠语音)”直接相关的。我也结合你提到的的四大维度(暂停处理、相槌、顺滑换手、打断管理)来点出它们各自的贡献点,便于后续评测与对比。

u013250861的博客 629

解决Windows 11文件右键菜单卡死问题的方法

当你右键点击一个文件或者文件夹时,系统会加载与该文件类型相关的上下文菜单项,如果其中某个菜单项的代码执行时间过长或者出现错误,就会导致整个右键菜单卡死。综上所述,当你在Windows 11中遇到右键菜单卡死的问题时,你可以尝试禁用上下文菜单项、重置文件关联、排除第三方软件干扰、修复系统文件以及优化代码等方法来解决问题。如果你是一个开发者,并且你自己编写了一个上下文菜单项,那么问题可能出在你的代码中。例如,如果你遇到了图片文件的右键菜单卡死问题,你可以找到".jpg"或".png"等相关的子项。

HnrzLinux的博客 7536

VisionPro 机器视觉案例 之 硬币识别

CogPMAlignTool模板匹配工具 掩模

机器视觉李小白的博客 1892

锁的艺术:Java并发中的常用锁策略与实践

对java锁相关内容进行整理分析:乐观锁 VS 悲观锁+自旋锁 VS 适应性自旋锁+无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁+公平锁 VS 非公平锁+可重入锁 VS 非可重入锁+独享锁 VS 共享锁

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 171万+

OpenOCD入门到精通:第 0 章 教程导读

摘要:本教程是OpenOCD嵌入式调试工具的完整指南,适合从新手到资深工程师的学习需求。内容涵盖基础配置、调试技巧、Flash编程、TCL脚本自动化、源码解析和二次开发,共8大部分30章。教程提供5种学习路线,可根据角色和目标灵活选择,配套资源包含示例代码和配置文件。通过系统学习,读者将掌握OpenOCD从使用到扩展的全套技能,成为嵌入式调试领域的专家。

从事嵌入式linux android驱动开发,拥有全栈能力 1940

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: SpringMVC(2)——@RequestMapping注解、SpringMVC获取请求参数(七种方式)
下一篇: SpringMVC(8)——注解配置SpringMVC、SpringMVC汇总、<mvc:annotation-driven>作用
自律彭于晏
博客等级 码龄5年 946粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值