【问题标题】:Spring Rest API definition using MultiActionController使用 MultiActionController 的 Spring Rest API 定义
【发布时间】:2013-02-19 17:30:01
【问题描述】:

我正在使用 JBoss servlet 引擎中的 Java/Spring/Maven 并利用 MultiActionController 设置 REST api。

例如I want to do is to group requests to a Single controller: 所有/requestA goes to Controller a,有几种不同请求的方法,比如 - /requestA/add.do goes to add-function

  • /requestA/delete.do goes to delete-function.

我一直在阅读 Spring 文档: http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch18s02.htmlhttp://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch16s03.html#mvc-controller-multiaction

但是我在 xml 中的调度程序配置中遇到了一些问题。 有谁知道如何在 Spring MVC 中实现这一点的好例子。

springapp-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <bean name="/test/*.do" class="org.test.TestControllerA" />
</beans>

web.xml

   <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <display-name>springTest</display-name>

    <servlet>
        <servlet-name>springapp</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springapp</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
</web-app>

和 Java 控制器

    public class TestControllerA extends MultiActionController {

    @RequestMapping("/TEST")
    public ModelAndView add(HttpServletRequest request, HttpServletResponse response) throws Exception {
    System.out.println("Test42");
    return new ModelAndView();
  }
}

【问题讨论】:

  • 向我们展示 Spring xml
  • 你的url映射怎么样?
  • 已更新代码
  • 基于配置/test/add.do应该去add()是不是发生了
  • 您可能必须将`@RequestMapping("/TEST")` 移动到类级别并将映射更改为`@RequestMapping("/test")`

标签: java spring rest servlets web.xml


【解决方案1】:

您缺少 servlet 映射

<servlet-mapping>
    <servlet-name>springapp</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

您的网址具有扩展名*.do,但未映射到springapp。所以把上面的配置添加到你的web.xml

【讨论】:

  • 我得到:在 Jboss 日志中名称为“springapp”的 DispatcherServlet 中未找到带有 URI [/MY-PROJECT-0.0.1-SNAPSHOT/test/add.do] 的 HTTP 请求的映射。
  • 添加 .do 并删除 @RequestDefinition 有帮助,在 servlet conf 中有双重映射。
猜你喜欢
  • 2013-10-15
  • 2016-04-27
  • 1970-01-01
  • 2012-03-08
  • 2013-07-02
  • 2018-10-11
  • 2017-03-17
  • 2016-03-29
  • 2013-01-16
相关资源
最近更新 更多