一、四大作用域复习

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 种方式相关推荐

  1. SpringMVC 返回json的两种方式

    前后台数据交互使用json是一种很重要的方式.本文主要探讨SpringMVC框架使用json传输的技术. 请注意,本文所提到的项目使用Spring 版本是4.1.7,其他版本在具体使用上可能有不一样的 ...

  2. 【详细】传参的四种方式以及返回传值的三种方式

    [转载]本文主要参考链接下博主文章,再行总结的 传参的四种方式 按值传参 在调用函数时,将实参的值拷贝给形参,形参在函数中被使用.对形参的操作不会影响到实参的值.但是因为发生了拷贝会增加系统开销. p ...

  3. java中四种注入注解,Spring中依赖注入的四种方式

    在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的sett ...

  4. php表单传值哪几种方式,PHP表单传值的方式有哪些?

    本篇文章主要给大家介绍PHP表单传值的两种方式,一种是通过$_GET变量 .另一种是通过$_POST变量.(相关推荐:<PHP教程>) 下面我们就结合具体的PHP代码示例给大家介绍,PHP ...

  5. Spring注解创建Bean的几种方式

    Spring注解创建Bean的几种方式 1.@Component系列 @Component @Service @Repository @Controller @Configuration 2. 依附于 ...

  6. SpringMVC获取参数的几种方式

    SpringMVC获取参数的几种方式 前言: 年末了,忙了一年了却发现系统的整理的东西很少,一些基础的东西都未做整理,这里就将它随便整理一下,增加一些印象,当然在网上看到一些好的资料也会整理下来以备后 ...

  7. Spring Security 玩出花!两种方式 DIY 登录

    Spring Security 玩出花!两种方式 DIY 登录 一般情况下,我们在使用 Spring Security 的时候,用的是 Spring Security 自带的登录方案,配置一下登录接口 ...

  8. Spring Boot2 整合 Shiro ,两种方式全总结!

    前言:在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro. 文章目录 一.Spring Securit ...

  9. Spring Boot项目启动的几种方式

    Spring Boot项目启动的几种方式 方式一:右击启动或者点击intellij右上角的启动按钮 我们访问下浏览器看一下效果 方式二:利用maven启动 我们先进入到项目文件下,然后执行命令   m ...

最新文章

  1. 算法提高---概率计算
  2. python输入什么就输出什么意思_一文读懂Python的输入和输出
  3. 大二暑假周进度报告(三)
  4. javase哪部分最难_抖音拍哪方面的视频容易涨粉呢?抖音现在拍什么题材容易火?...
  5. MongoDB 从节点 延迟的测试
  6. c语言24游戏程序,C语言解24点游戏程序
  7. python 创建空的numpy数组_数据分析-NumPy内置函数创建数组
  8. SPI总线-串行协议解码
  9. python的第三方库是干什么用的-python标准库和第三方库的区别
  10. Jmeter取样器设置
  11. kettle-xml输入
  12. import绝对路径问题
  13. vba控制图表,excel图表,一键完成
  14. linux用命令下载图片,巧用linux命令做图片下载器
  15. 批量更新mysql数据(万条数据秒完成)
  16. 昭阳K2450笔记本安装Linux,可能是最难拆的笔记本:lenovo 联想 昭阳K2450 升级固态硬盘的艰难历程...
  17. HTML Input输入框自定义required的提示内容(默认值:请填写此字段)
  18. 总结 db visualizer连接GBase8s数据库报-908错误解决方法
  19. 粒子群算法和遗传算法求多元函数的最大值、最小值对比
  20. iOS-Xcode8新特性(Code signing is required for product type 'Application' in SDK 'iOS 10.0')

热门文章

  1. CodeForces - 520C DNA Alignment(思维)
  2. Markdown-数学公式语法
  3. 快速获取青年大学习完成截图
  4. SlopOne推荐算法
  5. delphi7下安装TMS component
  6. C++ Boost 学习资源列表
  7. 关于sql中的with(nolock)
  8. 自媒体时代的贤内助——AI 视频云
  9. MyBatis(三)MyBatis缓存和工作原理
  10. 实战|QUIC协议助力腾讯业务提速30%