这里的属性参数主要是指通过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请求头的方式;

最新文章

  1. iOS Interface Builder:在.xib文件中加载另一个.xib文件
  2. linux系统用户以及用户组管理
  3. Chrome扩展程序的二次开发:把它改得更适合自己使用
  4. 关于移动端1px边框问题
  5. 看了一本Unity3D的教程
  6. 贱贱的美团安卓客户端---如何实现让安卓app在应用列表获得较靠前的位置
  7. const参数,const返回值与const函数
  8. Java 之 反射
  9. Java课程设计 猜数游戏团队博客
  10. EF CodeFirst 数据库初始化策略
  11. EM公式推导
  12. git遇到的问题 .Git: There is no tracking information for the current branch.
  13. 【leetcode-75】 颜色分类
  14. 2、JavaScript 基础二 (从零学习JavaScript)
  15. how-to-get-a-job-in-deep-learning
  16. 17_常用API_第17天(包装类、System、Math、Arrays、大数据运算)_讲义
  17. AWS EC2安装docker时的问题
  18. # DZY Love Math 系列
  19. No.15 selenium for python JavaScript
  20. jQuery多文件下载

热门文章

  1. 【Latex】一些使用
  2. Apsara Clouder基础技能认证:阿里巴巴编码规范 考试备考题库
  3. CSV导入到hive中,处理分号问题
  4. 2019-8-31-dotnet-非泛型-类型-System.Collections.IEnumerable-不能与类型实参一起使用
  5. python2与python3编码
  6. 后缀自动机XJ
  7. Hdu-1452-Happy 2004-费马小定理推除法逆元+同余定理+积性函数
  8. ELK5.2+kafka+zookeeper+filebeat集群部署
  9. idea 提交拉取代码,解决冲突
  10. marquee标签(跑马灯效果)