假设我有一个带有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?
任何建议都将不胜感激。
答案 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将优雅地集成。