POST请求的Spring Controller 405错误

时间:2015-08-14 13:17:06

标签: spring maven post http-status-code-405

我正在关注此Tutorial。它有一个构建错误,我通过在POM.xml中添加以下代码来修复它

$announcement_message= $_POST['message'];

该项目按预期正常运作。现在我添加了一个简单的表单,它向控制器发送一个post请求。搜索页面如下所示

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-war-plugin</artifactId>
     <version>2.3</version>
     <configuration>
          <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

控制器看起来像这样(即使我对搜索参数进行硬编码,请求也没有到达控制器)

<form name='SearchForm' action="<c:url value='/search' />" method='POST'>
    <center>Search By Name : <input type="text" name="name" id="name" /><input type="Submit" name="action" value="Search"> </td></center>
</form>

我有相关的服务和模态以及DAO类来进行检索。如果我将请求更改为GET,它将按预期工作。但是当我尝试POST方法时,我得到405异常。

@ResponseBody
@RequestMapping(value="/search" , method=RequestMethod.POST)
public ModelAndView searchUser(HttpServletRequest request, HttpServletResponse response){

    ModelAndView model = new ModelAndView("searchPage");
    model.addObject("userDTOList", userService.searchUser("sam"));
    return model;
}

我在这做错了什么?提前致谢

1 个答案:

答案 0 :(得分:1)

本教程使用 springSecurityFilterChain ,并配置 CSRF 保护, Spring Security 3.2.3 ,请将以下内容添加到 searchpage.html

<input type="hidden"
name="${_csrf.parameterName}"
value="${_csrf.token}"/>