Spring MVC(十三)--保存并获取属性参数
这里的属性参数主要是指通过request、session、cookie等设置的属性,有时候我们需要将一些请求的参数保存到HTTP的request或者session对象中去,在控制器中也会进行设置和获取操作,spring mvc使用注解的方式支持这些场景,主要的注解有以下几个:
- @RequestAttribute:获取通过request对象设置的属性值;
- @SessionAttribte:获取通过session对象设置的属性值;
- @SessionAttributes:作用在类上,用来将获取的参数设置到session中,有name和type两个属性,当通过ModelAndView的addObject方法时就会根据名称或类型将对应的值设置到session中;
- @CookieValue:获取保存在cookie中的属性值;
- @RequestHeader:获取请求头中的相关信息;
下面一一介绍各注解的用法:
一、注解@RequestAttribute
因为是获取方法,所以先要通过页面设置一些属性。
1⃣️jsp中设置请求属性
<%
request.setAttribute("username", "hello");
request.setAttribute("msg", "World");
request.getRequestDispatcher("./reqAttr").forward(request, response);
%>
2⃣️在映射路径所在的控制器中获取
@RequestMapping("reqAttr")
public ModelAndView getRequeParam(@RequestAttribute("username") String uname, @RequestAttribute("msg") String msg) {
ModelAndView mv = new ModelAndView();
System.out.println(uname + "----" + msg);
mv.addObject("uname", uname);
mv.addObject("msg", msg);
mv.setViewName("jump/requestAttribute");
return mv;
}
上面红色加粗部分的代码就是获取通过request对象设置的属性值;
二、注解@SessionAttribte
1⃣️jsp中设置session属性
<body>
<%
session.setAttribute("session1", "sessionsddffdfd");
response.sendRedirect("./getSession");
%>
</body>
2⃣️在控制器中获取属性
@RequestMapping("getSession")
public ModelAndView setSession(@SessionAttribute("testSession") String msg) {
ModelAndView mv = new ModelAndView();
mv.addObject("msg", msg);
mv.setViewName("jump/testSession");
return mv;
}
红色加粗部分就是获取session属性的方法;
三、注解@SessionAttributes
这个注解只能作用在类上面,不能对方法和参数进行注解。
@SessionAttributes(names = { "params" }, types = { Param.class }) // 将param对象保存到session中
当在类上设置上述注解后,Spring MVC在执行完控制器逻辑后,就会将数据模型中对应的属性名称或属性类型保存到HTTP的session中,比如执行下面这个方法后:
@RequestMapping("nextPage1")
public ModelAndView nextPage(Param param) {
ModelAndView mv = new ModelAndView();
System.out.println("header-userAgent:" + userAgent + ";cookie-jessionId:" + jessonId);
mv.addObject("params", param);
mv.setViewName("jump/jump");
return mv;
}
上述方法中获取到了一个Param对象,当执行完这个方法之后,param对象就会被保存到session中,通过名称params就能获取到属性值;
四、注解@CookieValue
@RequestMapping("nextPage1")
public ModelAndView nextPage(@CookieValue(value = "JESSIONID", required = true, defaultValue = "MyJessionId") String jessonId,
Param param) {
ModelAndView mv = new ModelAndView();
System.out.println("header-userAgent:" + userAgent + ";cookie-jessionId:" + jessonId);
mv.addObject("params", param);
mv.setViewName("jump/jump");
return mv;
}
上面红色加粗部分就是获取cookie值的方式;
五、注解@RequestHeader
@RequestMapping("nextPage1")
public ModelAndView nextPage(@RequestHeader(value = "User-Agent", required = false, defaultValue = "attribute") String userAgent,
Param param) {
ModelAndView mv = new ModelAndView();
System.out.println("header-userAgent:" + userAgent + ";cookie-jessionId:" + jessonId);
mv.addObject("params", param);
mv.setViewName("jump/jump");
return mv;
}
上面红色加粗部分就是获取HTTP请求头的方式;
Spring MVC(十三)--保存并获取属性参数的更多相关文章
- Spring MVC 保存并获取属性参数
在开发控制器的时候,有时也需要保存对应的数据到这些对象中去,或者从中获取数据.而Spring MVC给予了支持,它的主要注解有3个:@RequestAttribute.@SessionAttribut ...
- spring mvc从前台往后台传递参数的三种方式
jsp页面: 第一种:使用控制器方法形参的方式(常用) 第二种:使用模型传参的方式(如果前台往后台传递的参数非常多,如果还使用形参的方式传递,非常复杂.我们可以使用模型传参的方式,把多 个请求的参数 ...
- spring mvc在Controller中获取ApplicationContext
spring mvc在Controller中获取ApplicationContext web.xml中进行正常的beans.xml和spring-mvc.xml的配置: 需要在beans.xml中进行 ...
- 使用Spring mvc接收整个url地址及参数时注意事项
使用Spring mvc接收整个url地址及参数时注意事项:url= http://baidu?oid=9525c1f2b2cd45019b30a37bead6ebbb&td=2015-08- ...
- ASP.NET Core MVC里面Razor如何获取URL参数
原文:ASP.NET Core MVC里面Razor如何获取URL参数 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:// ...
- Spring MVC(三)--控制器接受普通请求参数
Spring MVC中控制器接受参数的类方式有以下几种: 普通参数:只要保证前端参数名称和传入控制器的参数名称一致即可,适合参数较少的情况: pojo类型:如果前端传的是一个pojo对象,只要保证参数 ...
- spring mvc 3.1的自动注入参数遇到的问题
在网上下载了xheditor作为页面的编辑器,编辑内容后post到后台保存,后台方法用spring mvc的自动注入的方式接收参数. 这种方式在各个浏览器下运行良好,但是在ie11下发现,从word. ...
- Spring MVC 页面跳转时传递参数
页面仍然使用 JSP,在跳转时如果想传递参数则需要用到类 RedirectAttributes. 首先看看如何打开一个普通页面: // 登录页面(每个页面都要独立的 Action 来支持其呈现) @R ...
- springMVC(spring)+WebSocket案例(获取请求参数)
开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...
随机推荐
- 【CF516D】Drazil and Morning Exercise
题目 首先我们知道,在树上距离一个点最远的点一定是直径的两个端点之一 首先两遍\(\rm dfs\)把直径求出来,定义\(d(u)\)表示点\(u\)距离其最远点的距离,有了直径我们就能求出\(d\) ...
- 最短路(sp
#include<stdio.h> #include<iostream> #include<queue> using namespace std; #define ...
- python接口自动化(单元测试方法)
一.环境搭建 python +unittest+ requests实现http请求的接口自动化 Python的优势:语法简洁优美, 功能强大, 标准库跟第三方库灰常强大,建议大家事先了解一下Pytho ...
- C#利用资源文件设置软件自适应多语言
在项目更目录下添加两个资源文件,以适应中英文两种版本,如Resource.zh_CN.resx和 Resource.en-US.resx ,两个资源文件的ID都一样,值分别配置相应的中英文 ...
- Windows 子网掩码
子网掩码(subnet mask)又叫网络掩码.地址掩码.子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码.子网掩码不能单独存在,它必须结合IP地 ...
- thinkphp ajax返回
ThinkPHP可以很好的支持AJAX请求,系统的\Think\Controller类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端.并且支持JSON.JSONP.XML和EVAL四 ...
- python相关软件安装流程图解——MySQL 8.0.13安装教程(windows 64位)——MYSQL依赖的软件——MYSQL必须的系统DLL插件——MYSQL真正的安装
https://www.mysql.com/https://www.mysql.com/downloads/https://dev.mysql.com/downloads/windows/https: ...
- hdu多校第四场 1003 (hdu6616) Divide the Stones 机智题
题意: 给你重量分别为1到n的n个石头,让你分成重量相等,数量也相等的k组,保证k是n的约数.问你能不能分配,如果能,输出具体的分配方案. 题解: 首先,如果1到n之和不能整除k,那么一定不能如题意分 ...
- 应用程序正常初始化(0xc0150002)失败的终极解决方案
转自VC错误:http://www.vcerror.com/?p=62 最近做一个项目写了一个VC6下的MFC程序,结果传到别人的机子上(WIN7)出现了应用程序正常初始化(0xc0150002)失败 ...
- Activity详解一 配置、启动和关闭activity转载 https://www.cnblogs.com/androidWuYou/p/5887726.html
先看效果图: Android为我们提供了四种应组件,分别为Activity.Service.Broadcast receivers和Content providers,这些组建也就是我们开发一个And ...