Spring MVC POST请求转到GET

learn_more 发布于 2016/02/23 10:18
阅读 1K+
收藏 0
问题是这样的:
    使用 Spring MVC 框架,在Controller里面定义两个请求,URL是一致的,但是一个是GET,一个是POST,当我使用POST发送请求时,发现跳转到了GET,这是为什么呢?网上找了一下这个问题,答案是在URL后面加一个“/”,然后发送POST请求,发现真的可以,可是这是为什么呢?谁能推荐一本详细讲解Spring MVC 如何处理 HTTP 请求的书籍,这个问题不解决会增加很多麻烦。
例如:
@RestController
@RequestMapping("/hello/world")
ExamController{
    @RequestMapping(method=RequestMethod.GET)
    public get(){
        --------
    }
    @RequestMapping(method=RequestMethod.POST)
    public post(){
        --------
    }
}
在RestClient里面发POST请求 localhost:8080/hello/world ; 结果访问到了GET方法,调用 request.getMethod 返回的确是 GET 。

加载中
0
learn_more
learn_more
应该是访问的URL地址和静态资源的文件夹路径冲突了,静态资源地址的文件夹也是:
WebApp/hello/world/......
Controller的也是:
/hello/world
那么,一开始url请求到静态资源去,所以没有到过滤器那里,也没有进Spring的DispatchServlet,而是到了静态资源处发现没有对应的资源,但是应用服务器又存在,所以应用服务器做了 302 转发。
只要把Controller的url改为:
/hello/world/
就OK,或者不改URL,访问时访问地址为
/hello/world/

最后的建议就是:定义Controller里面的url时,在最后都要加一个“/”
返回顶部
顶部