环境:tomcat8
在刚开始做spring mvc的期末项目时, 出现以下错误
org.springframework.web.servlet.PageNotFound
handleHttpRequestMethodNotSupportedWARNING: Request method ‘POST’ not supported
在前台, 我使用form的post方式, 发送form的data去后台的controller, 经过service处理后, 想要进行正确和错误分别转发到不同的URL的做法.
后台:
@RequestMapping(value = "/login", method = RequestMethod.POST)
@Override
public String receiveRequest(HttpServletRequest request) {
....
return "URL";
}
URL的不同对应着不同的结果:
page.html 用get的方式 成功 地址栏不变化
从上面的四个结果, 我猜测:
tomcat不支持html格式, 而且forward和redirect是tomcat内部的指令名字
http://stackoverflow.com/questions/4584410/redirect-in-spring-mvc
Also note that redirect: and forward: prefixes are handled by UrlBasedViewResolver, so you need to have at least one subclass of UrlBasedViewResolver among your view resolvers, such as InternalResourceViewResolver.
大概意思是说:
InternalResourceViewResolver继承了UrlBasedViewResolver
supports InternalResourceView (i.e. Servlets and JSPs) and subclasses such as JstlView.
然而我从其他资料里查到 InternalResourceViewResolver支持HTML格式
redirect和forward区别
redirect , 重定向, 地址栏变化, html文件可以正确地获取其文件
forward 转发,不能正确获得文件
直接url和forward:的结果很相似, 然而对于/page/index.html这个地址的处理, forward是这样的”forward:/page/index.html” ,使用渲染器的是”index.html”, 猜测: 其实直接写URL的方式是通过forward的方式,转发到渲染器,渲染器再进行处理, 然后出来.
报错报的是405 error
猜测是文件不可以访问
后来我再使用get模式来测试, 发现, 是可以get是可以访问, 也就是问题处于:我用post提交password和username, forward的时候也是同样是post方式, 然而post方式在tomcat似乎不可以access 静态文件.
考虑到post被认定是修改网页的功能, 可以因此被禁止使用…
这可能是tomcat不support吧..
也可能是spring mvc设置的< resource >的配置
如果有人知道真相~ 请务必告诉我!!
番外:
https://spring.io/guides/gs/serving-web-content/官网的文档上没xml配置文件, 似乎是直接用spring boot自动操作的…T_T