SpringMVC学习笔记(二)之@RequestMapping

本文详细解析了Spring MVC框架中@RequestMapping注解的使用方法及其参数含义,包括如何通过value/path、method、params、headers、consumes及produces等属性来精确控制HTTP请求的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@requestMapping里面的注解包含的参数如图:

                                                           

       requestMapping是一个用来处理请求地址映射的注释,可用在类或者方法上。用在类上,表示类中的所有响应请求的方法都是以该地址作为父路径,提供初步的请求信息,方法定义处的@RequestMapping 提供进一步的细分映射信息。

  • 若类定义处未标注@requestMapping,则方法处标记的URL为web应用的根目录;
  • 若类定义处标注@requestMapping,则URL为类上+方法上的映射路径组合。

requestMapping有8个属性,下面我们进行说明:

  • value/path:指定请求的实际地址,指定地址可以是url template模式。
  • method:指定请求的method类型,如GET,POST等。
  • params:指定request中必须包含某些指定的参数值,方法才进行处理。
  • headers:指定request中必须包含某些指定的header值,方法才进行处理。
  • consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
  • produces:指定返回的内容类型。仅当请求头中的(Accpet)类型中,包含指定类型,才返回

1.value/path

  • controller
@RequestMapping("/webb")
public class DemoController {
   @RequestMapping("/demo1")
    public ModelAndView handle01(){
        ModelAndView mv=new ModelAndView();
        mv.addObject("msg","ModelAndView01");
        mv.setViewName("handle01");
        return mv;
    }
  • jsp页面
<a href="/webb/demo1.htm">demo1</a>

 

  • controller

@PathVariable:路径变量绑定到参数

 @RequestMapping(value="/demo3/{id}.htm")
    public ModelAndView handle03(@PathVariable("id") int id){
        ModelAndView mv=new ModelAndView();
        mv.addObject("msg","ModelAndView03"+id);
        mv.setViewName("handle01");
        return mv;
    }
  • jsp页面
<a href="/webb/demo3/22.htm">demo3</a>

 

2.method

  • controller
@RequestMapping(value="/demo2.htm",method={RequestMethod.GET,RequestMethod.POST})
    public ModelAndView handle02(){
        ModelAndView mv=new ModelAndView();
        mv.addObject("msg","ModelAndView02");
        mv.setViewName("handle01");
        return mv;
    }
  • jsp页面
<a href="/webb/demo2.htm">demo2</a>

3.params

  • controller
@RequestMapping(value="/demo4_1")
    public String handle04_1(Model model, @RequestParam("name") String name, @RequestParam("age")int age){
        model.addAttribute("name",name);
        model.addAttribute("age",age);
        return "handle01";
    }
  • jsp页面
<a href="/webb/demo4_1.htm?name=lissi&age=23">demo4_1</a>

 

  • controller
 @RequestMapping(value="/demo4_2",params={"name","age"})
    public String handle04_2(){
        return "handle01";
    }
  • jsp页面
<a href="/webb/demo4_2.htm?name=lissi&age=23">demo4_2</a>

4.consumes

  • controller
 @RequestMapping(value="/demo5",method=RequestMethod.POST,consumes = "application/x-www-form-urlencoded")
    public String handle05(){
        return "handle01";
    }
  • jsp页面
<form action="/webb/demo5.htm" method="post">
    用户名:<input type="text" name="username"/>
    <input type="submit" value="提交"/>
</form>

这里的Content-Type对应的值要是写错,如application/json,会出现以下异常

5.produces

  • controller
@ResponseBody
    @RequestMapping(value="/demo6",method=RequestMethod.GET,produces = "text/html")
    public String handle06(Model model, User user){
       model.addAttribute("user",user);
        return "{name:'lisi',age:22,sex:'f'}";
    }
  • jsp页面
<a href="/webb/demo6.htm">demo6</a>

6.headers

  • controller
 @RequestMapping(value="/demo7",method=RequestMethod.GET,headers = {"Accept-Encoding=gzip, deflate, br"})
//@RequestMapping(value="/demo7",method=RequestMethod.GET,headers = "Accept-Encoding")
    public String handle07(){
            return "handle01";
    }
  • jsp页面
<a href="/webb/demo7.htm">demo7</a>

 

注意:headers将“:”改为“=”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值