第3.86课 上课 SpringMVC框架, 数据绑定, 请求和响应处理

3_86

SpringMVC常用注解介绍

 数据绑定和返回

  ModelMap或Map

  ModelAndView

 

注意:如果不指定ViewName,那么会根据请求URL的目录结构定位到相应目录的资源。例如:

请求地址:http://localhost:8080/3.86/user/index.do

目标资源:/WEB-INF/jsp/user/index.jsp

  void:如果没有返回值,会根据请求URL的目录结构定位到目标资源

  forward:资源跳转

在视图名前面添加“forward:“代表转发请求。

说明:如果使用”/代表的根路径。否则,就是在当前的请求路径下。

  redirect:资源重定向

在视图名前面添加“redirect:“代表重定向。

说明:如果使用”/“代表的根路径。否则,就是在当前的请求路径下。

   RedirectAttribute介绍

为了防止用户刷新重复提交,save操作之后一般会redirect到另一个页面,同时带点操作成功的提示信息。因为是Redirect,Request里的attribute不会传递过去,如果放在session中,则需要在显示后及时清理,不然下面每一页都带着这个信息也不对。Spring在3.1才提供了这个能力。

RedirectAttributes类是SpringMVC 3.1版本之后出来的一个功能,专门用于执行重定向时候的数据传递。他有两种带参的方式:

 

第一种:attr.addAttribute("param", value);

这种方式就相当于重定向之后,在url后面拼接参数。

 

第二种:attr.addFlashAttribute("param", value);

这种方式也能达到重新向带参,而且能隐藏参数,其原理就是放到session中,session在跳到页面后马上移除对象。所以你刷新一下后这个值就会没有。

 

  @SessionAttributes:绑定数据到Session

在默认情况下,ModelMap 中的属性作用域是 request 级别是,也就是说,当本次请求结束后,ModelMap中的属性将自动被销毁。

如果希望在多个请求中共享ModelMap中的属性,必须将其属性转存到Session中,

这样ModelMap的属性才可以被跨请求访问。

 

SpringMVC允许我们有选择地指定ModelMap中的哪些属性需要转存到Session中,以便下一个请求属对应的ModelMap的属性列表中还能访问到这些属性。

这一功能是通过类定义处标注 @SessionAttributes 注解来实现的。

   实例

 

1,类代码:

 

2,User类代码:

 

3,页面:

 

 

 

4,清理Session中的数据

 

@RequestMapping("/logout")

public String logout(SessionStatus status) {

status.setComplete();

return "success.jsp";

}

 

 

  @CookieValue:绑定数据到Cookie

   实例

 

 

页面获取Cookie数据:

  @ModelAttribute:绑定数据到Model

@ModelAttribute具有三个作用:

 

①绑定请求参数到命令对象:放在功能处理方法的形式参数上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用;

 

②暴露表单引用对象为模型数据:放在处理器的一般方法(非功能处理方法)上时,是为表单准备要展示的表单引用对象,如注册时需要选择的所在城市等,而且在执行功能处理方法(@RequestMapping注解的方法)之前,自动添加到模型对象中,用于视图页面展示时使用;

 

 

③暴露@RequestMapping方法返回值为模型数据:放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为模型数据,用于视图页面展示时使用。

   实例

posted on 2018-01-31 23:26  東風★破  阅读(138)  评论(0)    收藏  举报

导航