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

SpringMVC项目Tomcat部署后访问/show报错求助

解决SpringMVC项目启动报错及请求映射找不到的问题

咱们一步步拆解并解决你遇到的两个核心问题:

一、启动阶段"未找到指定类/包[classpath:config/spring-mvc.xml]的注解类"报错

问题根源

你在web.xml中给DispatcherServlet配置了contextClass为org.springframework.web.context.support.AnnotationConfigWebApplicationContext,这个类的作用是加载基于Java注解的配置类(比如带@Configuration注解的类),但你同时又指定了contextConfigLocation指向XML配置文件spring-mvc.xml——这两种配置方式完全冲突,Spring会误以为你要从指定路径加载注解类,自然找不到,从而抛出错误。

解决方案(二选一,推荐第一种)

方案1:保留XML配置(最直接)

删除DispatcherServlet的contextClass初始化参数,因为Spring默认的XmlWebApplicationContext就是专门用来加载XML配置的。修改后的servlet配置如下:

<servlet>
    <servlet-name>springServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:config/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

方案2:改用注解配置(适合喜欢注解驱动的场景)

如果想切换到纯注解配置,需要:

  • 删除contextConfigLocation参数;
  • 创建一个Spring MVC配置类(比如MvcConfig),用注解替代XML配置:
    @Configuration
    @EnableWebMvc
    @ComponentScan(basePackages = "com.yihao.controller")
    public class MvcConfig implements WebMvcConfigurer {
        // 配置视图解析器
        @Bean
        public InternalResourceViewResolver viewResolver() {
            InternalResourceViewResolver resolver = new InternalResourceViewResolver();
            resolver.setViewClass(JstlView.class);
            resolver.setPrefix("/WEB-INF/");
            resolver.setSuffix(".jsp");
            return resolver;
        }
    
        // 配置文件上传解析器
        @Bean
        public CommonsMultipartResolver multipartResolver() {
            CommonsMultipartResolver resolver = new CommonsMultipartResolver();
            resolver.setDefaultEncoding("utf-8");
            resolver.setMaxUploadSize(20971520);
            resolver.setMaxInMemorySize(20971520);
            return resolver;
        }
    
        // 启用默认Servlet处理静态资源
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }
    }
    
  • 确保web.xml中DispatcherServlet的contextClass参数保留,这样Spring会自动扫描并加载你的注解配置类。

二、访问/show时"DispatcherServlet'springServlet'中无URI[/show]的请求映射"报错

问题根源

这个问题是第一个报错的连锁反应:因为DispatcherServlet的上下文没有正确加载,spring-mvc.xml中的<context:component-scan base-package="com.yihao.controller" />没有生效,导致你的ShowView控制器类没有被Spring容器管理,自然不会注册/show的请求映射。

额外检查细节

当解决第一个问题后,还需要确认两个小细节:

  1. 确保ShowView类的@RequestMapping("/show")注解拼写正确(你的代码里是没问题的);
  2. 控制器方法返回的"showView",结合视图解析器的prefix="/WEB-INF/"和suffix=".jsp",需要保证项目的WEB-INF目录下存在showView.jsp文件,否则后续会出现视图找不到的错误。示例showView.jsp可以这样写:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Show Page</title>
</head>
<body>
    <h1>${msg}</h1>
    <p>Method: ${method}</p>
</body>
</html>

验证步骤

  1. 重新打包WAR包,部署到Tomcat;
  2. 启动Tomcat,查看启动日志,确认"未找到指定类/包"的错误已经消失;
  3. 访问http://localhost:9035/show,应该能正常跳转到showView.jsp页面,显示对应的内容。

内容的提问来源于stack exchange,提问作者林万程

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:12:37