SpringMVC method属性与http请求方法一致
在springMVC中,@requestMapping注解有method属性,在没有指定method的值时,默认映射所有http请求方法,如果仅想接收一种请求方法,需用method=RequestMethod.GET
或其他 请求方法指定,如果提交表单时form标签中method的请求方法与requestMapping中指定的不同,则会报错。如:
表单如下:
- <form id="frLogin" name="frLogin" method="post" action="./loginmvc/login">
- <table>
- <tr>
- <td>姓名</td>
- <td><input type="text" name="txtName" id="txtName"/></td>
- </tr>
- <tr>
- <td>姓名</td>
- <td><input type="password" name="pwd" id="pwd"/></td>
- </tr>
- <tr>
- <td align="right"><input type="submit" value="登录"/></td>
- <td><input type="reset" value="重填"/></td>
- </tr>
- </table>
- </form>
- @RequestMapping(value="/login",method=RequestMethod.GET)
- public String login(HttpServletRequest request,HttpServletResponse response){
- String strName=request.getParameter("txtName");
- String strPassword=request.getParameter("pwd");
- String sResult="loginError";
- if(StringUtils.isBlank(strName)&&StringUtils.isBlank(strPassword)){
- sResult="loginOK";
- }
浏览器报错为:
HTTP Status 405 - Request method 'POST' not supported
type Status report
message Request method 'POST' not supported
description The specified HTTP method is not allowed for the requested resource.
因此在建立映射时,应当注意http请求方法与requestMapping注解一致,或者在注解中不再指定method,而是默认通过枚举自动映射所有http请求方法
- public enum RequestMethod {
- GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
- }
- RequestMethod[] method() default {};