java - 在单个 web.xml 中添加多个 servlet

标签 java spring servlets

我正在尝试在单个 web.xml 中运行两个 Servlet 类,但它不起作用,每个 servlet 类独立运行良好。

web.xml:

<servlet>
    <servlet-name>spring-ws</servlet-name>
    <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
    <init-param>
        <param-name>transformWsdlLocations</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>spring-ws</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<session-config>
    <session-timeout>240</session-timeout>
</session-config>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-ws-servlet.xml
     /WEB-INF/health-page-servlet.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

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

<servlet-mapping>
    <servlet-name>health-page</servlet-name>
    <url-pattern>/health.htm</url-pattern>
</servlet-mapping>

如果你能发现我做错了什么,请告诉我。

我尝试了以下链接,但它对我不起作用 Can I use Spring MVC and Spring WS in one single application?

最佳答案

这行不通。映射到 /* 上的那个超越所有请求。您需要将其映射到 /相反,它只会拦截与所有其他现有 servlet 不匹配的请求(包括隐式映射到 *.jsp 的 JSP servlet 和所有“正常”静态资源,如 CSS/JS/图像文件!)。另见 Difference between / and /* in servlet mapping url pattern .

如果还需要能够提供静态资源,那么最好将其映射到更具体的 URL 模式,如 /ws/*并创建一个 Filter它检查请求 URI,然后相应地转发。该过滤器又可以安全地映射到 /* 上.另请参阅此答案以获取更具体的代码示例:How to access static resources when mapping a global front controller servlet on /* .

关于java - 在单个 web.xml 中添加多个 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016805/

相关文章:

java - 我在哪里可以找到@Inject jar

java - 如何检查选项卡是否已在 JavaFX 的 TabPane 中打开

java - log4j 相对文件路径

java - Java 中的 Spring Boot Web 应用程序有问题吗?

javascript - 当Java程序循环访问数千个数据时,如何显示最终用户可见的进度条?

java - 如何在实时线程中向 HTTP 请求发送 HTTP 响应

java - 无法正确退出或完成我的应用程序 android( Activity )

spring - 使用分区步骤在 Spring Batch 中访问 @JobScope bean

spring - hasRole 总是返回 403

java - 使用 HTTPServlet 调用的相对路径