springmvc 数据交互
一、Controller相关注解
1、@Controller与@RestController注解
①@Controller:添加在Controller 类上,指定Spring类的实例是一个控制器。
②@RestController:添加在Controller 类上,是一个复合注解,它包含了@Controller和@ResponseBody注解,指定控制器内每个方法都是由@ResponseBody注解的。
2、@RequestMapping注解
@RequestMapping:映射请求到控制器的方法,可匹配属性url、HTTP method、request parameters、headers、media types等,常用属性如下:
①value属性
说明:@RequestMapping注解的默认属性,支持使用通配符映射。
用法1:@RequestMapping 添加在Controller类上,代表类中方法一个公共的访问路径。
用法2:@RequestMapping(value=”url”)添加在方法上,其中value可以省略,允许多个url对应一个方法,格式为value={“url1″,”url2”}。
②method属性
说明:请求方式限定
@RequestMapping(method=”method”),其中method可以省略(支持全部),同一方法允许多种访问方式,如method ={RequestMethod.GET,RequestMethod.POST},
同样可以使用@GetMapping、@PostMapping、 @PutMapping、 @DeleteMapping、 @PatchMapping来精确映射。
③params属性
说明:请求参数限定
@RequestMapping(value=”url”,params={“username”,”password!=123456″})代表请求路径必须包含参数username,值不做要求,若包含参数password,值不能为123456。
④header属性
说明:请求头限定
@RequestMapping(value = “getUser”,headers = “Referer=http://www.test.com”)代表仅接收header中Referer属性包含http://www.test.com的请求(Referer可用于防盗链,恶意请求等)。
⑤consumers与produces属性
说明:请求响应媒体类型限定
3、@RequestParam注解
@RequestParam:用于将指定的请求参数赋值给方法中的形参,其中包含3个参数:
①value:请求参数(通常用于起别名)
②required:默认为true(请求参数不能为null),需设为false解除限制。
③defaultValue:参数为空的情况下,设置一个默认值(required自动设为 false)。
4、@PathVariable注解
@PathVariable:用来映射请求URL中绑定的占位符,并将对应参数绑定到controller处理方法的入参中。
5、@RequestBody与@ResponseBody注解
@RequestBody:作用在形参列表上,将前台发送过来的(json/xml)数据封装成javabean对象。
@ResponseBody:作用在方法上的,将方法的返回值以特定格式(json/xml)写入返回体中,从而将数据返还给客户端,不会进行视图解析及渲染HTML模板。
二、Controller方法返回值
1、ModelAndView
通过创建ModelAndView 对象,存储处理完后的结果数据,以及显示该数据的视图,其中Model代表模型,View代表视图,例如:addObject()存储数据,setViewName()存储视图。
2、String
①存储返回视图路径,通过形参Model对象携带数据,例如:addAttribute()以键值对形式存储数据(官方推荐方法,符合解耦思想)。
②return “forward:url”;实现转发
③return “redirect:url”;实现重定向
④添加@ResponseBody注解返回字符串
3、void
①通过形参HttpServletResponse对象携带数据,例如:getWriter().write(“字符串”)(适用于ajax异步请求,即不需要返回视图)。
②原始servlet中request.getRequestDispatcher(“url”).forward(request,response)实现转发。
③原始servlet中response.sendRedirect(“url”)实现重定向。
④添加@ResponseBody注解没有返回值
ps:
转发与重定向区别:
转发:
浏览器URL的地址栏不变;
是服务器行为(一次访问请求),2次跳转之间传输的信息不会丢;
重定向:
浏览器URL的地址栏改变;
是客户端行为(至少两次请求),2次跳转之间传输的信息会丢失;
springmvc 数据交互
原文地址:https://www.cnblogs.com/Jansens520/p/13384660.html