如何使Spring MVC和普通JSP在一个应用程序中共存

时间:2013-07-22 19:16:07

标签: spring jsp

假设我有一个带有JPA作为后端的Spring MVC应用程序。现在,我们希望为用户提供简单的UI,以便对某些属性文件执行简单配置。将它与主要的Spring应用程序分开是有意义的,因为某些配置与Spring MVC有关,因此当主UI通过Spring MVC启动主应用程序时它会失败。

但是如何在同一个Web应用程序中注册servlet(Spring和普通JSP)?

<!-- Handles Spring requests -->
<servlet>
    <servlet-name>SpringApplication</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/mvc-config.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>


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

<servlet>
    <servlet-name>PlainJSPApplication</servlet-name> <!--Is it ok to separate request to different servlet like this?-->
    <servlet-class>com.app.plainJSP</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>PlainJSPApplication</servlet-name>
    <url-pattern>/config</url-pattern> <!--How to handle mapping so not conflict to Spring main application-->
</servlet-mapping>

我认为在SAME web.xml中注册另一个servlet类是很常见的,可以吗?以及如何处理该请求URL模式,因为“/”已分配给Spring servlet?

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以通过使用不同的url模式映射来分离Spring托管控制器和您自己的servlet。

对Spring控制器的请求由DispatcherServlet管理。基本上,它只是一个Servlet,当你将url映射到它时,它会自动被Spring看到,从而将它映射到正确的控制器,视图等。

<强>的web.xml

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

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


    <servlet>
        <servlet-name>PlainJSPApplication</servlet-name> <!--Is it ok to separate request to different servlet like this?-->
        <servlet-class>com.app.plainJSP</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>PlainJSPApplication</servlet-name>
        <url-pattern>*.htm</url-pattern>
        <url-pattern>*.html</url-pattern>
        <url-pattern>*.bmk</url-pattern>
        <!-- other url pattern ... -->
        <!-- other url pattern ... -->
        <!-- other url pattern ... -->
    </servlet-mapping>

在这里,所有以.do结尾的请求都将被Spring看到。其他人将被您的servlet看到。

所以,只要你不损害这种映射,Spring MVC&amp;您的普通servlet将优雅地集成。