当前位置:首页 > springmvc注解
对于各种注解而言,排第一的当然是“@Controller”,表明某类是一个controller。
“@RequestMapping”请求路径映射,如果标注在某个controller的类级别上,则表明访问此类路径下的方法都要加上其配置的路径;最常用是标注在方法上,表明哪个具体的方法来接受处理某次请求。
? 1 @Controller 2 @RequestMapping(value=\) 3 public class BookController { 4 5 @RequestMapping(value=\) 6 public String getTitle(){ 7 return \; 8 } 9 10 @RequestMapping(value=\) 11 public String getContent(){ 12 return \; 13 } 14 }
由于BookController类加了value=\的“@RequestMapping”的注解,所有相关路径都要加上\,即请求的url分别为:
1. 2.
http://localhost:8080/book/title http://localhost:8080/book/content
\的value值前后是否有“/”对请求的路径没有影响,即value=\、\、\其效果是一样的
\的属性
? value: 指定请求的实际url
1. 普通的具体值。如前面的value=\。 2. 含某变量的一类值
?
1 @RequestMapping(value=\) 2 public String getBookById(@PathVariable String bookId,Model model){ 3 model.addAttribute(\, bookId); 4 return \; 5 }
? ?
路径中的bookId可以当变量,@PathVariable 注解即提取路径中的变量值
? 3.ant风格
@RequestMapping(value=\:可匹配“/get/id1”或“/get/ida”,但不匹配“/get/id”或“/get/idaa”;
@RequestMapping(value=\:可匹配“/get/idabc”或“/get/id”,但不匹配“/get/idabc/abc”;
@RequestMapping(value=\:可匹配“/get/id/abc”,但不匹配“/get/idabc”; @RequestMapping(value=\:可匹配“/get/id/abc/abc/123”或“/get/id/123”,也就是Ant风格和URI模板变量风格可混用;
4. 含正则表达式的一类值
@RequestMapping(value=\:可以匹配“/get/123-1”,但不能匹配“/get/abc-1”,这样可以设计更加严格的规则。 可以通过@PathVariable 注解提取路径中的变量(idPre,idNum)
5. 或关系
@RequestMapping(value={\即 /get或/fetch都会映射到该方法上
?
ST})
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
@RequestMapping(value=\
? params
@RequestMapping(params=\,请求参数包含“action=del”,如:http://localhost:8080/book?action=del
? headers
@RequestMapping(value=\:表示请求的URL必须为“/header/id 且 请求头中必须有“Accept =application/json”参数即可匹配。
1、 @PathVariable
当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。 示例代码:
@Controller
@RequestMapping(\ public class RelativePathUriTemplateController {
@RequestMapping(\
public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
// implementation omitted } }
上面代码把URI template 中变量 ownerId的值和petId的值,绑定到方法的参数上。若方法参数名称和需要绑定的uri template中变量名称不一致,需要在@PathVariable(\指定uri template中的名称。
2、 @RequestHeader、@CookieValue
@RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上。
示例代码:
这是一个Request 的header部分:
Host localhost:8080
Accept text/html,application/xhtml+xml,application/xml;q=0.9 Accept-Language fr,en-gb;q=0.7,en;q=0.3 Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive 300
@RequestMapping(\
public void displayHeaderInfo(@RequestHeader(\ @RequestHeader(\ { }
上面的代码,把request header部分的 Accept-Encoding的值,绑定到参数encoding上了, Keep-Alive header的值绑定到参数keepAlive上。
@CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上。
例如有如下Cookie值:
JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84 参数绑定的代码:
@RequestMapping(\
public void displayHeaderInfo(@CookieValue(\ { }
即把JSESSIONID的值绑定到参数cookie上。
3、@RequestParam, @RequestBody
@RequestParam
A) 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;
B)用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;
C) 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定; 示例代码:
@Controller
@RequestMapping(\ @SessionAttributes(\ public class EditPetForm {
@RequestMapping(method = RequestMethod.GET)
public String setupForm(@RequestParam(\ Pet pet = this.clinic.loadPet(petId); model.addAttribute(\ return \
共分享92篇相关文档