You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Web应用与WebService设置不同的上下文路径?

配置方案

1. 调整web.xml中的Servlet映射

这是实现路径分离的核心步骤,分别为Axis、Spring MVC、JSF配置专属的URL映射规则:

Axis SOAP服务映射

将Axis核心Servlet绑定到/ws/*路径,确保所有WebService请求都转发至Axis处理:

<servlet>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/ws/*</url-pattern>
</servlet-mapping>

Spring MVC DispatcherServlet映射

把Spring的DispatcherServlet绑定到/web/*,负责处理WebApp的所有请求:

<servlet>
    <servlet-name>springDispatcher</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>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springDispatcher</servlet-name>
    <url-pattern>/web/*</url-pattern>
</servlet-mapping>

JSF FacesServlet映射

调整JSF的Servlet映射,使其仅处理/web/路径下的JSF页面请求:

<servlet>
    <servlet-name>FacesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>FacesServlet</servlet-name>
    <url-pattern>/web/*.xhtml</url-pattern>
</servlet-mapping>

2. 适配Spring MVC配置

在Spring MVC配置文件(如spring-mvc-config.xml)中,修正视图解析器的前缀,匹配/web/上下文的视图目录:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/web/" />
    <property name="suffix" value=".xhtml" />
</bean>

如果WebApp包含静态资源(CSS、JS、图片等),配置Spring MVC的资源映射规则:

<mvc:resources mapping="/web/resources/**" location="/WEB-INF/resources/" />

3. 调整JSF页面与导航配置

  • JSF页面中的资源引用和跳转路径,需基于/web/上下文,可通过EL表达式动态获取:
<link rel="stylesheet" href="#{request.contextPath}/web/resources/css/style.css" />
<h:button value="返回首页" outcome="/web/index.xhtml" />
  • 在faces-config.xml的导航规则中,目标视图路径需添加/web/前缀:
<navigation-rule>
    <from-view-id>/web/login.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>success</from-outcome>
        <to-view-id>/web/home.xhtml</to-view-id>
        <redirect />
    </navigation-case>
</navigation-rule>

4. 验证配置结果

部署应用后,可通过以下路径验证:

  • WebService WSDL:http://localhost:8080/ws/[你的服务名]?wsdl
  • WebApp首页:http://localhost:8080/web/index.xhtml

内容的提问来源于stack exchange,提问作者Homselan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:53:37