Spring MVC—@RequestMapping注解的介绍

@RequestMapping注解的介绍和使用

1、@RequestMapping介绍
  1. 用于方法上:表示用来匹配要处理的请求
  2. 用于类上:表示为当前类的所有方法的请求地址添加一个前置路径,访问的时候必须要添加此路径
  • 为什么需要用于类上?

    因为方法一个项目中,多个方法用到同一个RequestMapping值时,就会报错。此时就需要使用在类上,一确保找到相应的类上的方法。一般很少用。

2、@RequestMapping的属性值

1、value属性值(如果不写默认就是value)
  • 要匹配的请求

    @RequestMapping(value = "/helalo")
        public String hello() {
            System.out.println("成功!");
            return "hello";
        }
    
2、path属性值
  • 和value属性值一样,要匹配的请求
3、method属性值
  • 限制发送请求的方式: POST GET,不配置时,POST和GET请求都可以访问。

    //只接受GET请求
    @RequestMapping(value = "/hello",method = RequestMethod.GET)
        public String hello() {
            System.out.println("成功!");
            return "hello";
        }
    
    
    
    //只接受POST请求
    @RequestMapping(value = "/hello",method = RequestMethod.POST)
        public String hello() {
            System.out.println("成功!");
            return "hello";
        }
    
    
    //当不添加method属性值时,GET和POST都能请求
    @RequestMapping(value = "/hello")
        public String hello() {
            System.out.println("成功!");
            return "hello";
        }
    

    在jsp中编写GET和POST请求

    注意:需要在jsp中嵌套java,获取请求路径。(如果没有导入jspAPI将会找不到request)

     <!--获取请求地址-->
      <%
        pageContext.setAttribute("ctp",request.getContextPath());
      %>
    
    <%@ page import="org.springframework.asm.Attribute" %><%--
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
        <!--获取请求地址-->
      <%
        pageContext.setAttribute("ctp",request.getContextPath());
      %>
        
        <!--POST请求-->
      <form action="${ctp}/hello" method="post">
        <input type="text"><br>
        <input type="submit">
      </form>
        
        <!--GET请求-->
      <body>
      <a href="${ctp}/hello">GET请求</a>
      $END$
      </body>
    </html>
    
    
4、patams
  • 表示请求要接受的参数,如果定义了这个属性,那么发送的时候必须要添加参数

  • 匹配规则:

    1. 直接写参数的名称

      @RequestMapping(value = "/hello",params = {"name"})
      //表示带有name属性的请求才能访问
      
       @RequestMapping(value = "/hello",params = {"name"})
          public String hello(String name) {
              System.out.println(name);
              System.out.println("成功!");
              return "hello";
          }
      

      访问:http://localhost:8080/mashibing_springmvc_01_war_exploded/hello?name=sss

    2. 请求不能包含的参数

      @RequestMapping(value = "/hello",params = {"!name"})
      //表示带有name参数的请求会被拒绝访问。
      

      访问:http://localhost:8080/mashibing_springmvc_01_war_exploded/hello?name=sss会被拒绝访问,但是参数name换成其他参数就可以。

    3. 表示请求中需要要包含的参数但是可以限制值

      @RequestMapping(value = "/hello",params = {"name=jiang","age"})
      //表示带有name参数值为jiang且带有age属性的请求才能访问
      
        @RequestMapping(value = "/hello",params = {"name=jiang","age"})
          public String hello(String name) {
              System.out.println(name);
              System.out.println("成功!");
              return "hello";
          }
      

      访问:http://localhost:8080/mashibing_springmvc_01_war_exploded/hello?name=jiang&age=12

5、 headers
  • 填写请求头信息
@RequestMapping(value = "/hello",headers={"User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0"})
//只有特性的请求头才能访问,由于请求限制 
6、 produces
  • 限制请求中Context-Type
7、consumers
  • 限制响应中的Context-Type
3、@RequestMapping模糊匹配
  • ?:可以代替任意字符
  • *:能代替任意多的字符和一层路径
  • **:能代替多层路径

示例

@RequestMapping(value = "/controller/hello"
@RequestMapping(value = "/**/h*llo?")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值