springmvc注解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

对于各种注解而言,排第一的当然是“@Controller”,表明某类是一个controller。“@RequestMapping”请求路径映射,如果标注在某个controller的类级别上,则表明访问此类路径下的方法都要加上其配置的路径;最常用是标注在方法上,表明哪个具体的方法来接受处理某次请求。?1234567891011121314@Controller@RequestMapping(value=/book)publicclassBookController{@RequestMapping(value=/title)publicStringgetTitle(){returntitle;}@RequestMapping(value=/content)publicStringgetContent(){returncontent;}}由于BookController类加了value=/book的“@RequestMapping”的注解,所有相关路径都要加上/book,即请求的url分别为:1.://localhost:8080/book/content@RequestMapping的value值前后是否有“/”对请求的路径没有影响,即value=book、/book、/book/其效果是一样的@RequestMapping的属性value:指定请求的实际url1.普通的具体值。如前面的value=/book。2.含某变量的一类值?12345@RequestMapping(value=/get/{bookId})publicStringgetBookById(@PathVariableStringbookId,Modelmodel){model.addAttribute(bookId,bookId);returnbook;}路径中的bookId可以当变量,@PathVariable注解即提取路径中的变量值3.ant风格@RequestMapping(value=/get/id?):可匹配“/get/id1”或“/get/ida”,但不匹配“/get/id”或“/get/idaa”;@RequestMapping(value=/get/id*):可匹配“/get/idabc”或“/get/id”,但不匹配“/get/idabc/abc”;@RequestMapping(value=/get/id/*):可匹配“/get/id/abc”,但不匹配“/get/idabc”;@RequestMapping(value=/get/id/**/{id}):可匹配“/get/id/abc/abc/123”或“/get/id/123”,也就是Ant风格和URI模板变量风格可混用;4.含正则表达式的一类值@RequestMapping(value=/get/{idPre:\\d+}-{idNum:\\d+}):可以匹配“/get/123-1”,但不能匹配“/get/abc-1”,这样可以设计更加严格的规则。可以通过@PathVariable注解提取路径中的变量(idPre,idNum)5.或关系@RequestMapping(value={/get,/fetch})即/get或/fetch都会映射到该方法上method:指定请求的method类型,GET、POST、PUT、DELETE等;@RequestMapping(value=/get/{bookid},method={RequestMethod.GET,RequestMethod.POST})params@RequestMapping(params=action=del),请求参数包含“action=del”,如:=delheaders@RequestMapping(value=/header/id,headers=Accept=application/json):表示请求的URL必须为“/header/id且请求头中必须有“Accept=application/json”参数即可匹配。1、@PathVariable当使用@RequestMappingURItemplate样式映射时,即someUrl/{paramId},这时的paramId可通过@Pathvariable注解绑定它传过来的值到方法的参数上。示例代码:@Controller@RequestMapping(/owners/{ownerId})publicclassRelativePathUriTemplateController{@RequestMapping(/pets/{petId})publicvoidfindPet(@PathVariableStringownerId,@PathVariableStringpetId,Modelmodel){//implementationomitted}}上面代码把URItemplate中变量ownerId的值和petId的值,绑定到方法的参数上。若方法参数名称和需要绑定的uritemplate中变量名称不一致,需要在@PathVariable(name)指定uritemplate中的名称。2、@RequestHeader、@CookieValue@RequestHeader注解,可以把Request请求header部分的值绑定到方法的参数上。示例代码:这是一个Request的header部分:Hostlocalhost:8080Accepttext/html,application/xhtml+xml,application/xml;q=0.9Accept-Languagefr,en-gb;q=0.7,en;q=0.3Accept-Encodinggzip,deflateAccept-CharsetISO-8859-1,utf-8;q=0.7,*;q=0.7Keep-Alive300@RequestMapping(/displayHeaderInfo.do)publicvoiddisplayHeaderInfo(@RequestHeader(Accept-Encoding)Stringencoding,@RequestHeader(Keep-Alive)longkeepAlive){}上面的代码,把requestheader部分的Accept-Encoding的值,绑定到参数encoding上了,Keep-Aliveheader的值绑定到参数keepAlive上。@CookieValue可以把Requestheader中关于cookie的值绑定到方法的参数上。例如有如下Cookie值:JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84参数绑定的代码:@RequestMapping(/displayHeaderInfo.do)publicvoiddisplayHeaderInfo(@CookieValue(JSESSIONID)Stringcookie){}即把JSESSIONID的值绑定到参数cookie上。3、@RequestParam,@RequestBody@RequestParamA)常用来处理简单类型的绑定,通过Request.getParameter()获取的String可直接转换为简单类型的情况(String--简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get方式中queryString的值,也可以处理post方式中bodydata的值;B)用来处理Content-Type:为application/x-编码的内容,提交方式GET、POST;C)该注解有两个属性:value、required;value用来指定要传入值的id名称,required用来指示参数是否必须绑定;示例代码:@Controller@RequestMapping(/pets)@SessionAttributes(pet)publicclassEditPetForm{@RequestMapping(method=RequestMethod.GET)publicStringsetupForm(@RequestParam(petId)intpetId,ModelMapmodel){Petpet=this.clinic.loadPet(petId);model.addAttribute(pet,pet);returnpetForm;}@RequestBody该注解常用来处理Content-Type:不是application/x-编码的内容,例如application/json,application/xml等;它是通过使用HandlerAdapter配置的HttpMessageConverters来解析postdatabody,然后绑定到相应的bean上的。因为配置有FormHttpMessageConverter,所以也可以用来处理application/x-的内容,处理完的结果放在一个MultiValueMapString,String里,这种情况在某些特殊需求下使用,详情查看FormHttpMessageConverterapi;@RequestParam@RequestBody@PathVariable等参数绑定注解详解(2013-08-1116:09:23)转载▼简介:handlermethod参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型)A、处理requeturi部分(这里指uritemplate中variable,不含queryString部分)的注解:@PathVariable;B、处理requestheader部分的注解:@RequestHeader,@CookieValue;C、处理requestbody部分的注解:@RequestParam,@RequestBody;D、处理attribute类型是注解:@SessionAttributes,@ModelAttribute;1、@PathVariable当使用@RequestMappingURItemplate样式映射时,即someUrl/{paramId},这时的paramId可通过@Pathvariable注解绑定它传过来的值到方法的参数上。示例代码:[java]viewplaincopy1.@Controller2.@RequestMapping(/owners/{ownerId})3.publicclassRelativePathUriTemplateController{4.5.@RequestMapping(/pets/{petId})6.publicvoidfindPet(@PathVariableStringownerId,@PathVariableStringpetId,Modelmodel){7.//implementationomitted8.}9.}上面代码把URItemplate中变量ownerId的值和petId的值,绑定到方法的参数上。若方法参数名称和需要绑定的uritemplate中变量名称不一致,需要在@PathVariable(name)指定uritemplate中的名称。2、@RequestHeader、@CookieValue@RequestHeader注解,可以把Request请求header部分的值绑定到方法的参数上。示例代码:这是一个Request的header部分:[plain]viewplaincop

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功