springmvc中@PathVariable和@RequestParam的区别

 我来答
千锋教育
2016-08-20 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
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-www-form-urlencoded编码的内容,提交方式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);return"petForm";}@RequestBody该注解常用来处理Content-Type:不是application/x-www-form-urlencoded编码的内容,例如application/json,application/xml等;它是通过使用HandlerAdapter配置的HttpMessageConverters来解析postdatabody,然后绑定到相应的bean上的。因为配置有FormHttpMessageConverter,所以也可以用来处理application/x-www-form-urlencoded的内容,处理完的结果放在一个MultiValueMap里,这种情况在某些特殊需求下使用,详情查看FormHttpMessageConverterapi;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式