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

Spring MVC部署WebSphere Liberty时所有Spring URL均返回404问题

排查Spring MVC在WebSphere Liberty上的404及JSP访问问题

结合你给出的环境配置(Eclipse Oxygen+WDT、Spring MVC 4.3.14、Java 8、WebSphere Liberty Core 18.0.0.1,启用webProfile-6.0等特性),针对部署后Spring URL全404、JSP访问不完整的问题,给你梳理几个关键排查步骤:

1. 先确认DispatcherServlet的核心配置是否正确

DispatcherServlet是Spring MVC的入口,配置错误直接导致所有Spring URL无法映射:

  • 检查web.xml里的DispatcherServlet映射规则,确保它能覆盖你需要的URL路径,比如最常用的映射到根路径/:
    <servlet>
        <servlet-name>springMvcDispatcher</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>springMvcDispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  • 如果你用的是注解驱动(比如@EnableWebMvc),一定要确保DispatcherServlet的上下文配置扫描到了你的Controller类(比如@ComponentScan指定了Controller所在的包)。

2. 查看Liberty日志,确认Spring是否完成初始化

很多时候404是因为Spring上下文根本没启动:

  • 打开Liberty服务器的server/logs/messages.log,搜索关键词:
    • Initializing Spring FrameworkServlet:确认DispatcherServlet是否启动
    • Mapped "{[/your-url],methods=[GET]}":确认Controller的方法是否被正确映射
      如果找不到这些日志,要么是web.xml配置有误,要么是Spring依赖缺失,导致初始化失败。

3. 排查Liberty特性与Spring的兼容性冲突

你启用的webProfile-6.0对应Java EE 6(Servlet 3.0、JSP 2.2),和Spring MVC 4.3.14理论上兼容,但要注意几个点:

  • jaxrs-1.1特性的影响:如果你的Controller包含REST接口(比如@RestController),Liberty自带的JAX-RS 1.1可能会和Spring MVC的REST处理逻辑冲突。可以先临时移除jaxrs-1.1特性,重启服务器测试是否解决问题。
  • 确认webProfile-6.0的特性是否覆盖了你需要的功能,不需要的特性尽量关闭,减少冲突可能性。

4. 解决JSP访问不完整的问题

JSP能部分访问说明容器能处理JSP,但Spring的视图解析可能有问题:

  • 检查Spring配置里的视图解析器,确保前缀、后缀和JSP文件路径匹配:
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    
    比如Controller返回"home",对应的JSP必须放在/WEB-INF/views/home.jsp位置。
  • 避免在JSP中使用JSP 2.2不支持的语法(比如某些EL表达式的新特性),否则会导致页面渲染不完整。

5. 检查依赖是否完整且无冲突

  • 确认WEB-INF/lib下包含所有Spring MVC必需的依赖:spring-webmvc、spring-web、spring-context等,且版本统一为4.3.14,不要混入其他版本的Spring jar包(比如旧版本的spring-core)。
  • 用Eclipse WDT的Dependency Explorer查看项目依赖,排查并排除冲突的jar包。

6. 验证web.xml的版本兼容性

确保web.xml的版本和webProfile-6.0匹配(对应Servlet 3.0),根元素配置如下:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

如果web.xml版本是2.5,Servlet 3.0的注解特性(比如@WebServlet)会失效,如果你是用注解注册DispatcherServlet的话,就会导致无法启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:16:19