spring mvc各种注解

@ResponseBody

作用: 

      该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区,即:直接写入HTTP response body中,和response.getWriter().print(xxx)效果类似。

使用时机:

      返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;


@PathVariable是用来对指定请求的URL路径里面的变量 

eg: Java代码 

  1. @RequestMapping(value = "form/{id}/apply", method = {RequestMethod.PUT, RequestMethod.POST})  
@RequestMapping(value="/updateView/{id}")
    public ModelAndView updateView(@PathVariable(value = "id") String id){
        ModelAndView mav = new ModelAndView("demo/personUpdate");
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("id", id);
        Person person = personService.findPersonById(map);
        mav.addObject("person", person);
        return mav;
    }

 {id}在这个请求的URL里就是个变量,可以使用@PathVariable来获取

 @PathVariable和@RequestParam的区别就在于:@RequestParam用来获得静态的URL请求参数;@PathVariable用来获得动态的URL请求入参


http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2 

你可以把这地址分开理解,其中问号前半部分:http://localhost:8080/Springmvc/user/page.do 这个就是路径,是你的请求url,而如果这个路径上有数据匹配,用的就是@PathVariable  如 
@RequestMapping(value="/page{pageNo}.do") 
public String page(@PathVariable int pageNo){} 
【注意:看下这地方的@RequestMapping的地址,对照我上面说的路径】 

问号的后面部分就是请求参数部分,是要向请求路径提交的参数信息,用的就是@RequestParam ,对于这种参数,如果你要用的话,代码应该如下: 
@RequestMapping(value="/page.do") 
public String page(@RequestParam int pageSize,@RequestParam  int pageNow){} 

【注意:这个代码的RequestMapping地址只需要/page.do就行】 


其实你只要把什么叫请求路径,什么叫请求参数分清楚,也就能理解@PathVariable和@RequestParam 

我再举个例子,就拿你这个问题在iteye上的地址为例,http://www.iteye.com/problems/101566 这个如果对应sprimgmvc里面,想获取问题编号101566,因为这个地址直接就是请求路径,是一个url,所以代码中用的应该是@PathVariable,如下: 
@RequestMapping(value="/problems/{problemId}") 
public String showProblem(@PathVariable int problemId){}


两者的作用都是将request里的参数的值绑定到contorl里的方法参数里的,区别在于,url不同 

@PathVariable的url是这样的:http://host:port/.../path/参数值 

@RequestMapping("/bookings/{booking}") 
public String getBooking(@PathVariable Long booking) { 




而@RequestParam的url是这样的:http://host:port/.../path?参数名=参数值 

@RequestMapping(method = RequestMethod.GET) 
    public String setupForm(@RequestParam("petId") int petId, ModelMap model) { 
        Pet pet = this.clinic.loadPet(petId); 
        model.addAttribute("pet", pet); 
        return "petForm"; 

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值