【Spring】SpringMVC 作用域传值的 4 种方式
一、四大作用域复习
2.1 page
2.1.1 在当前页面不会重新实例化.
2.2 request
2.2.1 在一次请求中同一个对象,下次请求重新实例化一个request 对象.
2.3 session
2.3.1 一次会话.
2.3.2 只要客户端Cookie 中传递的Jsessionid 不变,Session 不会重新实力化(不超过默认时间.)
2.3.3 实际有效时间:
2.3.3.1 浏览器关闭.Cookie 失效.
2.3.3.2 默认时间.在时间范围内无任何交互.在tomcat 的web.xml 中配置
<session-config><session-timeout>30</session-timeout>
</session-config>
2.4 application
2.4.1 只有在tomcat 启动项目时菜实例化.关闭 tomcat 时销毁application
二、SpringMVC 作用域传值的几种方式
1. 使用原生 Servlet
1.1 在 HanlderMethod 参数中添加作用域对象
Java示例
@Controller
public class DemoHttpRequest {@RequestMapping("request")public String demo1(HttpServletRequest request, HttpSession httpSession) {// request 作用域request.setAttribute("req", "req的值");// session 作用域HttpSession session = request.getSession();session.setAttribute("session", "session的值");httpSession.setAttribute("httpSession", "httpSession的值");// application 作用域ServletContext application = request.getServletContext();application.setAttribute("application", "application的值");return "requestpage.jsp";}
}
JSP示例
<h3>全名称调用方式:</h3>
request:${requestScope.req}<br/>
session:${sessionScope.session}<br/>
httpSession:${sessionScope.httpSession}<br/>
application:${applicationScope.application}<br/><hr>
<h3>简化名称调用方式:</h3>
request:${req}<br/>
session:${session}<br/>
httpSession:${httpSession}<br/>
application:${application}<br/>
2. 使用 Map
集合
2.1 把map 中内容放在 request 作用域中
2.2 spring 会对 map 集合通过 BindingAwareModelMap
进行实例化
Java示例
@RequestMapping(value = "demo2")public String demo2(@RequestParam(value = "name", defaultValue = "游客") String name1,@RequestParam(value = "age", defaultValue = "66") int age1) {// 此处使用注解添加默认值,避免因int类型无法赋值为 Null 导致的异常;// 或者还有一种方式是使用 Integer 对象,可以赋值为 Null// required: true 和 defaultValue 不要一起使用,否则始终具有默认值,required 检验恒通过,没有意义。System.out.println("In DemoController demo2, name1 = " + name1 + ", age1 = " + age1);return "main2.jsp";}
JSP示例
map:${map}
3. 使用 SpringMVC 中 Model
接口
3.1 把内容最终放入到 request 作用域中.
Java示例
// 使用model,把内容最终放入到request作用域中。好处是不用写request。@RequestMapping("request2")public String demo3(Model model) {model.addAttribute("model", "model的值");return "requestpage.jsp";}
JSP示例
model:${model}
4.使用 SpringMVC 中 ModelAndView
类
Java示例
@RequestMapping("request3")public ModelAndView demo4() {// 参数,跳转视图ModelAndView modelAndView = new ModelAndView("requestpage.jsp");modelAndView.addObject("modelAndView", "modelAndView的值");return modelAndView;}
JSP示例
ModelAndView:${modelAndView}
【Spring】SpringMVC 作用域传值的 4 种方式相关推荐
- SpringMVC 返回json的两种方式
前后台数据交互使用json是一种很重要的方式.本文主要探讨SpringMVC框架使用json传输的技术. 请注意,本文所提到的项目使用Spring 版本是4.1.7,其他版本在具体使用上可能有不一样的 ...
- 【详细】传参的四种方式以及返回传值的三种方式
[转载]本文主要参考链接下博主文章,再行总结的 传参的四种方式 按值传参 在调用函数时,将实参的值拷贝给形参,形参在函数中被使用.对形参的操作不会影响到实参的值.但是因为发生了拷贝会增加系统开销. p ...
- java中四种注入注解,Spring中依赖注入的四种方式
在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入 这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的sett ...
- php表单传值哪几种方式,PHP表单传值的方式有哪些?
本篇文章主要给大家介绍PHP表单传值的两种方式,一种是通过$_GET变量 .另一种是通过$_POST变量.(相关推荐:<PHP教程>) 下面我们就结合具体的PHP代码示例给大家介绍,PHP ...
- Spring注解创建Bean的几种方式
Spring注解创建Bean的几种方式 1.@Component系列 @Component @Service @Repository @Controller @Configuration 2. 依附于 ...
- SpringMVC获取参数的几种方式
SpringMVC获取参数的几种方式 前言: 年末了,忙了一年了却发现系统的整理的东西很少,一些基础的东西都未做整理,这里就将它随便整理一下,增加一些印象,当然在网上看到一些好的资料也会整理下来以备后 ...
- Spring Security 玩出花!两种方式 DIY 登录
Spring Security 玩出花!两种方式 DIY 登录 一般情况下,我们在使用 Spring Security 的时候,用的是 Spring Security 自带的登录方案,配置一下登录接口 ...
- Spring Boot2 整合 Shiro ,两种方式全总结!
前言:在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro. 文章目录 一.Spring Securit ...
- Spring Boot项目启动的几种方式
Spring Boot项目启动的几种方式 方式一:右击启动或者点击intellij右上角的启动按钮 我们访问下浏览器看一下效果 方式二:利用maven启动 我们先进入到项目文件下,然后执行命令 m ...
最新文章
- 算法提高---概率计算
- python输入什么就输出什么意思_一文读懂Python的输入和输出
- 大二暑假周进度报告(三)
- javase哪部分最难_抖音拍哪方面的视频容易涨粉呢?抖音现在拍什么题材容易火?...
- MongoDB 从节点 延迟的测试
- c语言24游戏程序,C语言解24点游戏程序
- python 创建空的numpy数组_数据分析-NumPy内置函数创建数组
- SPI总线-串行协议解码
- python的第三方库是干什么用的-python标准库和第三方库的区别
- Jmeter取样器设置
- kettle-xml输入
- import绝对路径问题
- vba控制图表,excel图表,一键完成
- linux用命令下载图片,巧用linux命令做图片下载器
- 批量更新mysql数据(万条数据秒完成)
- 昭阳K2450笔记本安装Linux,可能是最难拆的笔记本:lenovo 联想 昭阳K2450 升级固态硬盘的艰难历程...
- HTML Input输入框自定义required的提示内容(默认值:请填写此字段)
- 总结 db visualizer连接GBase8s数据库报-908错误解决方法
- 粒子群算法和遗传算法求多元函数的最大值、最小值对比
- iOS-Xcode8新特性(Code signing is required for product type 'Application' in SDK 'iOS 10.0')