提问人:Shin 提问时间:6/8/2022 最后编辑:Shin 更新时间:6/9/2022 访问量:707
Spring 5.3.9 MVC XML配置:ViewResolver未映射到控制器
Spring 5.3.9 MVC XML Configuration: ViewResolver Not Mapping To Controller
问:
我开始学习 Spring Framework,目前正在学习 Spring MVC。我使用的是 Spring 5.3 版,并且在 views 目录中加载 JSP 文件时遇到问题。我从注释中了解到他们删除了后缀模式匹配,但我不知道我的 XML 配置应该是什么来匹配此新更改。
有人可以帮我解决这个问题,并向我展示Spring 5.3 MVC的XML配置应该是什么。它让我的进步停止了整整三天!
注意:我知道 Spring Boot 是现在的常态,但我想从头开始学习 Spring,即使它使用起来更乏味。
附加说明:我完全使用XML配置。
我目前没有使用构建工具,因为我稍后会学习一个。我从命令行构建我的项目:
cd 到 webapp 文件夹 --> jar -cvf mvc-test.war * --> 在 Tomcat 9 服务器上运行
JDK:11
IDE:VS 代码
我的控制器类:
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/")
public String showPage() {
return "test-page";
}
}
我的 web.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>spring-mvc-demo</display-name>
<absolute-ordering />
<!-- Spring MVC Configs -->
<!-- Step 1: Configure Spring MVC Dispatcher Servlet -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-mvc-demo-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet -->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
我的spring-mvc-demo-servlet.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- Step 3: Add support for component scanning -->
<context:component-scan base-package="com.controller" />
<!-- Step 4: Add support for conversion, formatting and validation support -->
<mvc:annotation-driven/>
<!-- Step 5: Define Spring MVC view resolver -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
我的项目结构如下(对不起,我不知道如何格式化):
根 Projet 文件夹:mvc-test
mvc-test:src 和 webapp 文件夹
来源:main/java/com/controller/HomeController.java
web应用:WEB-INF
WEB-INF:库,视图,spring-mvc-demo-servlet.xml,web.xml
视图:测试页.jsp
答: 暂无答案
评论
org.springframework.web.servlet.view.UrlBasedViewResolver
org.springframework.web.servlet.view.InternalResourceViewResolver
<url-pattern>/</url-pattern>
InternalResourceViewResolver
UrlBasedViewResolver
test-page.jsp
/WEB-INF/views/
webapp
jar -cvf ....