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

基于Java的Spring MVC配置报错:请求资源不可用,求排查

解决Spring MVC「请求资源不可用」问题

我正在搭建基于Java的Spring MVC项目,目前遇到「请求资源不可用(The requested resource is not available.)」错误,无法正常访问控制器。以下是项目相关文件、项目结构截图及错误截图,作为Java新手卡在配置环节,寻求帮助。


1. 检查POM.xml依赖配置

  • 确保Spring MVC、Servlet API、JSP/JSTL等核心依赖版本兼容,示例配置:
    <!-- Spring MVC核心依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.20</version>
    </dependency>
    <!-- Servlet API -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
    <!-- JSP依赖 -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
        <scope>provided</scope>
    </dependency>
    <!-- JSTL依赖 -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    
  • 确认打包方式为war,并配置maven-war-plugin:
    <packaging>war</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.2</version>
            </plugin>
        </plugins>
    </build>
    

2. 验证AppInitializer配置

  • 确保类继承AbstractAnnotationConfigDispatcherServletInitializer,并正确指定配置类与请求映射:
    public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
        @Override
        protected Class<?>[] getRootConfigClasses() {
            return new Class[]{WebMvcConfig.class};
        }
    
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return null;
        }
    
        @Override
        protected String[] getServletMappings() {
            return new String[]{"/"}; // 让DispatcherServlet处理所有请求
        }
    }
    

3. 检查WebMvcConfig配置

  • 配置类需添加@Configuration、@EnableWebMvc注解,正确配置组件扫描与视图解析器:
    @Configuration
    @EnableWebMvc
    @ComponentScan(basePackages = "com.yourpackage") // 替换为控制器所在包路径
    public class WebMvcConfig implements WebMvcConfigurer {
        @Bean
        public InternalResourceViewResolver viewResolver() {
            InternalResourceViewResolver resolver = new InternalResourceViewResolver();
            resolver.setPrefix("/WEB-INF/views/"); // 匹配JSP文件存放路径
            resolver.setSuffix(".jsp");
            return resolver;
        }
    }
    

4. 验证UserController注解和映射

  • 控制器类需添加@Controller注解,请求映射路径与访问URL匹配:
    @Controller
    public class UserController {
        @GetMapping("/home") // 访问URL应为http://localhost:8080/项目上下文/home
        public String home(Model model) {
            model.addAttribute("user", new User());
            return "home"; // 对应/WEB-INF/views/home.jsp
        }
    }
    
  • 注意项目部署后的上下文路径,若存在需拼在URL开头。

5. 确认项目结构和JSP位置

  • 确保JSP文件存放路径与视图解析器配置一致,标准结构示例:
    src/main/java
    └── com/yourpackage
        ├── AppInitializer.java
        ├── WebMvcConfig.java
        ├── controller
        │   └── UserController.java
        └── model
            └── User.java
    src/main/webapp
    └── WEB-INF
        └── views
            └── home.jsp
    
  • 检查home.jsp是否存在且无语法错误。

6. 查看服务器日志排查细节

启动服务器时查看控制台日志,重点关注Spring容器初始化异常、控制器未扫描到、依赖缺失等信息,这些通常是问题根源。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:03:48