HTTP Status 405 - Request method 'GET' not supported

练习SpringMVC时,页面显示405错误,最后查到源头是POST与GET请求的问题。下面给出解决方案,并回顾下HTTP请求的内容

一、运行流程

流程:默认加载index.jsp->重定向到controller中toLogin方法->toLogin方法return “login” 找到登陆页->login.jsp 表单post提交登录信息->controller中login方法处理登录?重定向到queryAll方法,显示出信息:失败,返回到登陆页。

可以看到,项目树结构很简单,就是cotroller、entity、jsp
这里写图片描述

图1.1 项目树结构

这里写图片描述
图1.2 流程

问题出在这里:当提交登录表单后,本应该queryAll的,然后就报错405

二、出现的错误

这里写图片描述

图2.1 405错误

三、解决方案

<!--请求方式应该为GET-->
@RequestMapping(value="/queryAll",method=RequestMethod.GET)
    public ModelAndView queryAll() {
    //TODO
    }
<!--或者不写,可以同时处理GET和POST请求-->
@RequestMapping(value="/queryAll")
    public ModelAndView queryAll() {
    //TODO
    }

四、总结

简单说,HTTP协议中定义了浏览器和服务器进行交互的不同方法(共8种)。常用的方法有2种,分别是GET,POST等。这四种方法可以理解为,对服务器资源的获取(查)、提交资源(更新)。

全部方法可以在spring-web-3.2.9.RELEASE-sources.jar源码中看到,RequestMethod是枚举类型,定义了8种方式。
这里写图片描述

图4.1 RequetMethod

GET:从服务器上获取数据,也就是所谓的查,仅仅是获取服务器资源,不进行修改。

POST:向服务器提交数据,这就涉及到了数据的更新,也就是更改服务器的数据。

PUT:PUT的英文含义是放置,也就是向服务器新添加数据,就是所谓的增。

DELETE:从字面意思也能看出,这种方式就是删除服务器数据的过程。

参考[Http中post 和 get 请求区别]:https://my.oschina.net/u/1765168/blog/1786797

猜你喜欢

转载自blog.csdn.net/qq_35206244/article/details/81512947