Spring MVC @RequestMapping注解

RequestMapping注解既可以修饰方法也可以用来修饰类。
类定义处的该注解相对于根目录,而方法定义处的注解相对于类注解,没有类注解时相对于根目录。
要注意的地方时,在类中路径的编写要以”/”开头,而jsp文件中的请求路径不要“/”开头。
RequestMapping注解有很多参数,其中四个比较常用的是
value 请求路径
method 请求方法
params 请求参数
headers 请求头
下面是一个示例

    @RequestMapping(value="/headers",method=RequestMethod.POST,
            params={"userName","age!=10"},headers={"Accept-Encoding=gzip, deflate, br"})//请求头
    public String headers(){

        System.out.println("headers");
        return "success";
    }

如上请求参数中params指定了必须要有userNameage 两个字段,并且age 不能等于10(age等于直接使用=而不用==),请求头指定了Accept-Encoding必须等于gzip, deflate, br。
总的来说一个@RequestMapping注解可以十分精确的指定可以处理的请求。

另外,@RequestMapping注解还可以支持ant风格的注解,具体包括以下三种情况:
1. ?匹配一个字符 如/user/abc??匹配/user/abcxx
2. *匹配单层任意字符 如/user/*/abc匹配/user/abc/abc
3. **匹配多层任意字符 如/user/**/abc匹配 /user/abc 也匹配/user/abc/abc/abc

最后说一下HiddenHttpMethodFilter
这个Filter可以将请求方法中的POST改为PUT和DELETE。
POST、DELETE、PUT、GET方法分别对应数据库中的增删改查是一种较为合理的处理方式吧,要不然我看的视频里面也不会这么推荐吧,当然也不一定对,请各位大佬推荐。
使用HiddenHttpMethodFilter需要先在web.xml中配置这个Filter具体代码如下:

<filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern><!-- 过滤全部路径 -->
</filter-mapping>

配置这个之后就可以使用这个Filter了。
其使用方法较为简单,只需要在提交的POST表单里面添加一个隐藏的字段,具体如下:

<form action="xxx/yyy/111" method="post">
<input type="hidden" name="_method" value="PUT"> 
<input type="submit" value="request put">
</form>

上面的代码请求这个过滤器将一个POST方法改为一个PUT方法,然后在处理的Controller方法中需要加入一个对应请求的处理方法代码便可以运行了,请求处理方法如下:

    @RequestMapping(value="/xxx/yyy/{id}",method=RequestMethod.PUT)
    public String requestPut(@PathVariable(name="id") Integer id){
        System.out.println("PUT");
        return SUCCESS;
    }

这样就可以对id 对应的信息进行处理了。

注意:TOMCAT8可能会有一个405 - JSPs only permit GET POST or HEAD的错误,原因和解决办法,请参见https://stackoverflow.com/questions/24673041/405-jsp-error-with-put-method

解决办法:在return的字符串前加入”redirect:/”即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值