练习SpringMVC时,页面显示405错误,最后查到源头是POST与GET请求的问题。下面给出解决方案,并回顾下HTTP请求的内容
一、运行流程
流程:默认加载index.jsp->重定向到controller中toLogin方法->toLogin方法return “login” 找到登陆页->login.jsp 表单post提交登录信息->controller中login方法处理登录?重定向到queryAll方法,显示出信息:失败,返回到登陆页。
可以看到,项目树结构很简单,就是cotroller、entity、jsp
问题出在这里:当提交登录表单后,本应该queryAll的,然后就报错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种方式。
GET:从服务器上获取数据,也就是所谓的查,仅仅是获取服务器资源,不进行修改。
POST:向服务器提交数据,这就涉及到了数据的更新,也就是更改服务器的数据。
PUT:PUT的英文含义是放置,也就是向服务器新添加数据,就是所谓的增。
DELETE:从字面意思也能看出,这种方式就是删除服务器数据的过程。
参考[Http中post 和 get 请求区别]:https://my.oschina.net/u/1765168/blog/1786797