Spring MVC Servlet被POST请求击中两次

Xtreme骑自行车的人

使用Spring MVC来为我的Web应用程序实现RESTful服务时,我遇到了一个疏远的问题。在执行GET请求时,一切似乎都可以正常工作,但是,我在执行POST请求时要处理的行为使我感到困惑。好吧,我已经实现了这个非常基本的控制器代码:

@Controller
@RequestMapping("/services")
public class RestService {

    @RequestMapping(value = "/test/post", method = RequestMethod.POST)
    public void postTest(@RequestBody String postString)
            throws PersistenceException {
        System.out.println(postString);
    }

}

当我使用Curl对它执行POST请求时:

curl --data "Hello world" http://localhost:8080/SpringMVC-REST/services/test/post

第一次正确访问我的控制器并显示字符串。但是,不知道为什么,Spring MVC中的servlet被再次调用后,在这种情况下,有一个错误的URL请求。该框架显然找不到匹配的服务案例:

2014年6月2日下午4:06:21 org.springframework.web.servlet.DispatcherServlet noHandlerFound警告:在DispatcherServlet中,名称为URI [/ SpringMVC-REST / services / test / services / test / post]的HTTP请求未找到映射'mvc-dispatcher'

在第一种和第二种情况下,调试器的堆栈似乎略有不同:

第一种情况

第二种情况

似乎第二次Spring MVC框架试图渲染输出,即使我对此不感兴趣,因为我没有通过Web UI访问它。我使用的servlet配置是标准配置:

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>Spring MVC REST</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>
                    org.springframework.web.servlet.DispatcherServlet
                </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

Tomcat 6和Tomcat 7和spring-web 3.2.8.RELEASE发生在我身上。有人可以在这里看到问题吗?

Karibasappa GC

@ResponseBody在方法返回类型之前使用..它应该可以解决您的问题。

所以应该像

@Controller
@RequestMapping("/services")
public class RestService {

    @RequestMapping(value = "/test/post", method = RequestMethod.POST)
    public @ResponseBody void postTest(@RequestBody String postString)
            throws PersistenceException {
        System.out.println(postString);
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring MVC InterceptorHandler用DeferredResult调用了两次

来自分类Dev

Spring MVC发布请求

来自分类Dev

Spring MVC发布请求

来自分类Dev

Spring MVC自定义事件扩展了两次调用的ApplicationEvent

来自分类Dev

关于Spring MVC中的servlet

来自分类Dev

Spring MVC错误请求与@requestbody

来自分类Dev

Spring MVC处理AJAX请求

来自分类Dev

Spring MVC中的请求响应

来自分类Dev

Spring MVC中的PUT请求

来自分类Dev

Spring MVC请求中断的钩子

来自分类Dev

排球请求被击中两次

来自分类Dev

我是否必须检索两次以使用Spring MVC保存一对一关联?

来自分类Dev

Spring MVC Controller每个请求触发5次!为什么?

来自分类Dev

Spring MVC请求映射接受多级请求

来自分类Dev

Spring MVC-不支持请求方法“ POST”

来自分类Dev

Spring MVC- REST POST-错误请求400

来自分类Dev

在Spring MVC中的POST请求中处理外语

来自分类Dev

在 Spring MVC 中显式使用 POST 请求值

来自分类Dev

Spring MVC/Simple Post 请求不起作用

来自分类Dev

在Spring MVC上使用Servlet 3.0的MultipartConfig

来自分类Dev

Spring MVC 404错误http请求

来自分类Dev

Spring MVC请求映射不起作用

来自分类Dev

Spring MVC“请求处理失败” 500错误

来自分类Dev

Spring MVC Ajax 400错误请求

来自分类Dev

Ajax使用Spring MVC获取请求

来自分类Dev

Spring MVC 400错误请求Ajax

来自分类Dev

Spring MVC请求和响应流说明

来自分类Dev

Spring MVC损坏的请求参数处理

来自分类Dev

Ajax调用Spring MVC Controler错误的请求