Spring MVC Request method 'POST' not supported错误
2016-05-26 14:40
399 查看
Spring配置相关问题
web.xml配置问题
在刚接触spring mvc的时候,没有仔细研究过url-pattern,在使用下属配置的时候,出现了问题<servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
具体的问题是jsp页面的资源访问不到,原来上述的配置会拦截以*.jsp等结尾的url连接,并交给dispather处理,如果controller没有配置相应的方法,就会出现资源访问不到的错误,于是,我在网上查到了下述的方法,来解决这个问题,即在spring mvc的spring-servlet.xml文件中添加如下的代码
<!-- 由于web.xml中设置是:由SpringMVC拦截所有请求,于是在读取静态资源文件的时候就会受到影响(说白了就是读不到) --> <!-- 经过下面的配置,该标签的作用就是:所有页面中引用"/js/**"的资源,都会从"/resources/js/"里面进行查找 --> <!-- 我们可以访问http://IP:8080/xxx/js/my.css和http://IP:8080/xxx/resources/js/my.css对比出来 --> <mvc:resources mapping="/js/**" location="/resources/js/"/> <mvc:resources mapping="/css/**" location="/resources/css/"/> <mvc:resources mapping="/WEB-INF/**" location="/WEB-INF/"/>
自认为解决了问题的我,则发现,当我使用一个form表单,通过POST方法来提交数据,会出现问题,后台相应的controller方法如下:
@RequestMapping(value="/dologin", method=RequestMethod.POST) public String login(String userNm, String userPwd) { System.out.println(userNm); return "login"; }
视图解析器配置如下:
<!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/" /> <property name="suffix" value=".jsp" /> </bean>
按照我对spring mvc的理解,返回的“login”应该会被解析为login.jsp页面,并返回给前台,但是,这里就出现了一个错误:
Request method ‘POST’ not supported
经过我实验发现,这里返回的“login”会以url链接的形式交给dispatcher来处理,所以出现了这个问题。但是如果将
@RequestMapping(value="/dologin", method=RequestMethod.POST)中的method设置为GET方法,表单提交数据的形式也改为get,则不会出现这个错误,即“login”不会被交给dispatcher,而是会被解析为login.jsp。
解决方法
由于配置<url-pattern>/*</url-pattern>这种格式是为了防止用户能够直接访问jsp资源,所以我将所有的jsp页面都放在WEB-INF路径 下,这样用户就不能直接访问jsp页面资源,同时,将
<url-pattern>/*</url-pattern>改为
<url-pattern>/</url-pattern>,这两种格式的区别是前者拦截所有的url链接,后者则不拦截*.jsp这种形式的链接,这样当我使用一个form表单,通过POST方法来提交数据的时候,后台方法返回的“login”会被正确解析为login.jsp页面,返给前台。
相关文章推荐
- Java-常见错误集锦
- 借助 Java 9 Jigsaw,如何在 60 秒内创建 JavaFX HelloWorld 程序?
- Eclipse之properties文件编辑器中将Unicode码显示为翻译后的字符
- SpringMVC中使用Interceptor拦截器详解
- java反射获取类属性类型
- iOS消息推送(Java实现)
- eclipse修改注释中的@author和格式化
- java消息机制
- 关于Java字符串编码与解码
- 基于Maven的S2SH(Struts2+Spring+Hibernate)框架搭建
- Practical Java 读书笔记
- java写入excel文件poi
- 数据库查询结果、Ibatis的ResultMap与JavaBean的对应关系
- 吹捧一下Java策略模式,策略在手,万事无忧
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- Java面向对象之接口
- 深入理解Java:SimpleDateFormat安全的时间格式化
- 接口与抽象类区别
- struts2+spring+hibernate整合步骤《开源》
- spring中@param和mybatis中@param使用区别