0

我想要两个 servlet(我正在使用 Jetty)提供这样的 URL:

host/aaa/submit  
host/bbb/submit

我尝试将 servlet 的路径规范分别设置为aaabbb,但随后出现异常

two controller methods annotated with @RequestMapping(value = {"/submit"})

(尽管有问题的两种方法是在两个不同的 servlet 使用的两个单独的控制器类中定义的)。
相反,如果我将两个 servlet 的 pathspecs 设置为/并将其更改@RequestMappingsaaa/submitand bbb/submit,我将得到 404。(我想这并不令人惊讶——不确定它应该如何有效地与两个“默认”servlet 一起工作)

我应该如何映射这些 URL?(先发制人 - 它们确实需要是单独的 servlet -aaa部分应该使用或不使用 DB,bbb部分应该在没有 DB 的情况下失败)

以防万一,这里是 Jetty 上下文:

    <property name="servletHandler">
        <bean class="org.mortbay.jetty.servlet.ServletHandler">
            <property name="servlets">
                <list>
                    <bean name="aaaServlet" class="org.mortbay.jetty.servlet.ServletHolder">
                        <property name="name" value="aaa" />
                        <property name="servlet">
                            <bean class="org.springframework.web.servlet.DispatcherServlet" />
                        </property>
                        <property name="initParameters">
                            <map>
                                <entry key="contextConfigLocation" value="classpath:aaa-context.xml" />
                            </map>
                        </property>
                    </bean>
                    <bean name="bbbServlet" class="org.mortbay.jetty.servlet.ServletHolder">
                        <property name="name" value="bbb" />
                        <property name="servlet">
                            <bean class="org.springframework.web.servlet.DispatcherServlet" />
                        </property>
                        <property name="initParameters">
                            <map>
                                <entry key="contextConfigLocation" value="classpath:bbb-context.xml" />
                            </map>
                        </property>
                    </bean>
                </list>
            </property>
            <property name="servletMappings">
                <list>
                    <bean class="org.mortbay.jetty.servlet.ServletMapping">
                        <property name="servletName" value="aaa" />
                        <property name="pathSpec" value="/" />
                    </bean>
                    <bean class="org.mortbay.jetty.servlet.ServletMapping">
                        <property name="servletName" value="bbb" />
                        <property name="pathSpec" value="/" />
                    </bean>
                </list>
            </property>
        </bean>
    </property>

两个控制器看起来像这样:

@Controller
public class AaaController {
  @RequestMapping(value = {"/aaa/submit"}, method = (RequestMethod.POST))
  public void handleAaaSubmitPostRequest(final HttpServletRequest request,
                                       final HttpServletResponse response,
                                       @RequestBody String body) throws IOException {
}

@Controller
public class BbbController {
  @RequestMapping(value = {"/bbb/submit"}, method = (RequestMethod.POST))
  public void handleBbbSubmitPostRequest(final HttpServletRequest request,
                                       final HttpServletResponse response,
                                       @RequestBody String body) throws IOException {
}
4

1 回答 1

0

由于您的控制器似乎在不同的 mvc 上下文中,因此您需要根据以下内容更改控制器:

@Controller
public class AaaController {
  @RequestMapping(value = {/*aaa*/"/submit"}, method = (RequestMethod.POST))
  public void handleAaaSubmitPostRequest(final HttpServletRequest request,
                                       final HttpServletResponse response,
                                       @RequestBody String body) throws IOException {
}

    @Controller
public class BbbController {
  @RequestMapping(value = {/*bbb*/"/submit"}, method = (RequestMethod.POST))
  public void handleBbbSubmitPostRequest(final HttpServletRequest request,
                                       final HttpServletResponse response,
                                       @RequestBody String body) throws IOException {
}

发生这种情况是因为 Spring MVC 总是使用没有 servlet 上下文的路径。

于 2013-02-27T11:54:07.277 回答