[@Controller]3 详解@CookieValue,@PathVariable,@RequestBody,@RequestHeader,@RequestParam
[@Controller]3 详解@CookieValue,@PathVariable,@RequestBody,@RequestHeader,@RequestParam
A、@CookieValue
org.springframework.web.bind.annotation.CookieValue
public @interface CookieValue
Annotation which indicates that a method parameter should be bound to an HTTP cookie. Supported for annotated handler methods in Servlet and Portlet environments.
这个注释表示一个方法参数绑定到一个HTTP cookie。支持Servlet和Portlet环境。
The method parameter may be declared as type Cookie or as cookie value type (String, int, etc).
这个方法的参数可声明为Cookie类型或String, int等。
A.1、@CookieValue的属性
String value
The name of the cookie to bind to.
绑定的cookie名称。
boolean required
Whether the header is required.
Default is true, leading to an exception being thrown in case the header is missing in the request. Switch this to false if you prefer a null in case of the missing header.
Head是否需要。默认是true,请求中头丢失将抛出一个异常。False,请求中头丢失将返回null。
Alternatively, provide a defaultValue, which implicitly sets this flag to false.
因此,提供一个defaultValue。
String defaultValue
The default value to use as a fallback. Supplying a default value implicitly sets required() to false.
当required为false,请求中头丢失将返回这个值。
B、@PathVariable
Annotation which indicates that a method parameter should be bound to a URI template variable. Supported for RequestMapping annotated handler methods in Servlet environments.
这个参数指出方法的一个参数绑定到一个URI template变量。在Servlet环境中的被@RequestMapping注释的处理器方法。
B.1、@PathVariable的属性
value
The URI template variable to bind to.
绑定URI template变量。
举例说明
@Controller
public class HelloWorldController { @RequestMapping("/helloWorld/{userId}")
public String helloWorld(ModelMap model,@PathVariable("userId") String userId) {
model.addAttribute("attributeName", userId);
return "helloWorld";
}
}
当URI template变量和方法的参数名称一样时,可以省略value的定义,@PathVariable达到同样的效果。
C、@RequestBody
Annotation which indicates that a method parameter should be bound to the web request body. Supported for annotated handler methods in Servlet environments.
这个注释它指示一个方法的参数绑定到一个web请求的body。它支持Servlet环境中的注释处理器方法。
举例说明
@Controller
public class HelloWorldController {
@RequestMapping("/hello.do")
public String helloWorld(Model model,@RequestBody String reqBody) {
model.addAttribute("message", reqBody);
return "helloWorld";
}
}
这时这个参数reqBody的值是请求页面的form表单的所有值。
D、@ RequestHeader
Annotation which indicates that a method parameter should be bound to a web request header. Supported for annotated handler methods in Servlet and Portlet environments.
这个注释它指示一个方法的参数绑定到一个web请求的头信息。它支持Servlet和Portlet环境中的注释处理器方法。
D.1、@ RequestHeader的属性
String defaultValue
The default value to use as a fallback.
默认返回值。
Boolean required
Whether the header is required.
是否需要header。
String value
The name of the request header to bind to.
绑定的请求头名称。
举例说明
@Controller
public class HelloWorldController {
@RequestMapping("/hello.do")
public String helloWorld(Model model,@RequestHeader("Accept") String info) {
model.addAttribute("message", info);
return "helloWorld";
}
}
这时这个参数info将获得请求的Accept头信息。
E、@RequestParam
org.springframework.web.bind.annotation.RequestParam
Annotation which indicates that a method parameter should be bound to a web request parameter. Supported for annotated handler methods in Servlet and Portlet environments.
这个参数指出一个方法的参数应绑定到一个web请求的参数。支持Servlet和Portlet环境下注释处理器的方法。
E.1、@RequestParam的属性
E.1.1、value
The name of the request parameter to bind to.
绑定的请求参数的名称。
@RequestParam(value="abc")等同于@RequestParam("abc")
E.1.2、required
Whether the parameter is required.
是否需要参数。
Default is true, leading to an exception thrown in case of the parameter missing in the request. Switch this to false if you prefer a null in case of the parameter missing.
默认为true,若请求中没有参数会导致抛出一个异常。若设置为false,若请求中没有参数就会返回null。
Alternatively, provide a defaultValue, which implicitly sets this flag to false.
在required=false时,最好设置一个defaultValue默认值。
@RequestParam(value = "abc",required=false)
E.1.3、defaultValue
The default value to use as a fallback. Supplying a default value implicitly sets required() to false.
当required=false时,设定默认值。
举例说明
@Controller
@RequestMapping("/a")
public class HelloWorldController {
@RequestMapping("/b")
public String helloWorld(Model model,@RequestParam("a") String abc) {
model.addAttribute("message", abc);
return "helloWorld";
}
}
F、@ResponseBody
Annotation which indicates that a method return value should be bound to the web response body. Supported for annotated handler methods in Servlet environments.
这个注释它指示一个方法的返回值应该绑定到一个web响应的body中。它支持Servlet环境中的注释处理器方法。
应用@ResponseBody将会跳过视图处理,而是调用合适HttpMessageConverter,将返回值写入输出流。
举例说明
@Controller
@RequestMapping("/a")
public class HelloWorldController {
@RequestMapping("/b")
@ResponseBody
public String helloWorld() {
return "helloWorld";
}
}
或者这样定义
@Controller
public class HelloWorldController {
@RequestMapping("/a/b")
public @ResponseBody String helloWorld() {
return "helloWorld";
}
}
这时访问/a/b时,不是返回一个view名为helloWorld的视图,而是作出一个响应,其内容为helloWorld。
[@Controller]3 详解@CookieValue,@PathVariable,@RequestBody,@RequestHeader,@RequestParam的更多相关文章
- SpringMVC【开发Controller】详解
前言 本文主要是讲解在Controller中的开发,主要的知识点有如下: 编码过滤器 使用注解开发 注解@RequestMapping详解 业务方法接收参数 字符串转日期 重定向和转发 返回JSON ...
- SpringMVC学习总结(三)——Controller接口详解(2)
4.5.ServletForwardingController 将接收到的请求转发到一个命名的servlet,具体示例如下: package cn.javass.chapter4.web.servle ...
- Spring中@Component注解,@Controller注解详解
在使用Spring的过程中,为了避免大量使用Bean注入的Xml配置文件,我们会采用Spring提供的自动扫描注入的方式,只需要添加几行自动注入的的配置,便可以完成 Service层,Controll ...
- Spring中@Component注解,@Controller注解详解
在使用Spring的过程中,为了避免大量使用Bean注入的Xml配置文件,我们会采用Spring提供的自动扫描注入的方式,只需要添加几行自动注入的的配置,便可以完成 Service层,Controll ...
- Spring MVC 之@Controller@RequestMapping详解
一:配置web.xml 1)问题:spring项目中有多个配置文件mvc.xml dao.xml 2)解决:在web.xml中 <init-param> <param-name& ...
- SpringMVC学习总结(三)——Controller接口详解(1)
4.12.ParameterizableViewController 参数化视图控制器,不进行功能处理(即静态视图),根据参数的逻辑视图名直接选择需要展示的视图. <bean name=&quo ...
- SpringMVC异常处理机制详解[附带源码分析]
目录 前言 重要接口和类介绍 HandlerExceptionResolver接口 AbstractHandlerExceptionResolver抽象类 AbstractHandlerMethodE ...
- OkHttp3源码详解(一) Request类
每一次网络请求都是一个Request,Request是对url,method,header,body的封装,也是对Http协议中请求行,请求头,实体内容的封装 public final class R ...
- SpringMVC @ModelAttribute 详解
[@Controller]4 详解@ModelAttribute http://blog.sina.com.cn/s/blog_6d3c1ec601017q4p.html A.@ModelAttrib ...
随机推荐
- silverlight webclient实现上传、下载、删除、读取文件
1.上传 private void Button_Click_1(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = ...
- LINQ技巧:如何通过多次调用GroupBy实现分组嵌套
问题如上,解决如下,目标在最下面:结果: using System; using System.Linq; using System.Collections.Generic; namespace Co ...
- gulp插件
gulp是趋势 gulp完全开发指南 => 快来换掉你的Grunt吧 gulp的工作流程:文件流--文件流--文件流......因为grunt操作会创建临时文件,会有频繁的IO操作,而gulp使 ...
- 应用js改变问章字体大小
刚来公司的时候领导给分配的都是一些简单的简单的简单的.....任务 一次叫我把文章的字体大小变换功能写出来.在网上搜了很多都不管用!不过功夫不负有心人还是被我找到了!拿出来分享下! <scrip ...
- hdu 5690 2016"百度之星" - 初赛(Astar Round2A) All X 快速二次幂 || 寻找周期
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5690 题意:m个数字全为x mod k ?= c;其中m <= 1010,0 < c,k ...
- Mac OS X 10.10.2 Yosemite jdk 环境变量配置
我的Mac系统版本是OS X 10.10.2 Yosemite,为了用Eclipse做android开发,安装了jdk 1.7, 但是如果想使用IntelliJ IDE做android开发的话,就需要 ...
- CentOS安装thrift
下载thrift依赖的东西 yum -y install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-dev ...
- Ubuntu首次开启root用户
最近一直在学习linux,选择ubuntu作为联系的操作系统.然后一直发现自己所创建的用户和root用户不是一个概念,执行好多命令的时候都提示没有权限.这样,最后终于发现原来是ubuntu是默认关闭r ...
- php中const与define的使用区别 详解
1.const用于类成员变量定义,一旦定义且不能改变其值.define定义全局常量,在任何地方都可以访问. 2.define不能在类中定义而const可以. 3.const不能在条件语句中定义常量 i ...
- unity项目实现“再按一次退出程序”提示功能
unity项目,再按一次退出程序,按第一次做提示,再按一次,程序退出. float _waitTime = 2f;//前后两次按退出间隔时间 void OnGUI() { ) { GUI.Label( ...