基于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
相关产品推荐
相关产品推荐

