如何在spring 3 mvc中配置多个DispatcherServlet?

时间:2009-12-29 03:14:03

标签: spring-mvc

我最近使用的是春季3。 我想使用REST。 问题是,我想使用许多不同的路径。如通知/ *,用户/ *等。 我知道如何配置一个。

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

<servlet-mapping>
  <servlet-name>notice</servlet-name>
  <url-pattern>/notice/*</url-pattern>
</servlet-mapping>

所以,如果我想在web.xml中添加/ user / *,我该怎么办?如何配置? 感谢

3 个答案:

答案 0 :(得分:5)

只需在web.xml中为用户servlet创建新的servletservlet-mapping元素:

<!-- notice servlet and servlet-mapping ... -->

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

<servlet-mapping>
   <servlet-name>user</servlet-name>
   <url-pattern>/user/*</url-pattern>
</servlet-mapping>

然后创建所需的user-servlet.xml Spring配置文件并将其放在与现有notice-servlet.xml相同的位置,以便用户DispatcherServlet可以加载其配置。

答案 1 :(得分:3)

你真的想拥有几个调度程序servlet吗?我建议将调度程序映射到/

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

然后在您的控制器中,您将映射到不同的“子网址”。例如@RequestMapping(value =“/ users”,method = RequestMethod.GET)来映射您的用户。 reference manual很好地解释了如何映射网址。

答案 2 :(得分:0)

不建议拥有多个servlet。一旦创建的servlet将不会消失,并且将保留在内存中,直到重新启动应用程序。这将导致已完成其目的的servlet使用内存。

因此,建议仅使用一个称为前端控制器的servlet。它应该控制所有请求。有关其他网址,请使用NA的答案中提到的@RequestMapping映射它们。