Spring MVC从入门到精通:HelloKoding-Courses中的XML配置与视图技术实践
HelloKoding-Courses项目提供了丰富的Spring MVC实践案例,其中基于XML配置的springmvc-xml-jsp和springmvc-xml-thymeleaf模块是学习传统Spring MVC开发的绝佳资源。本文将通过这两个模块,详细讲解Spring MVC的XML配置方式以及JSP与Thymeleaf视图技术的应用,帮助新手快速掌握Spring MVC的核心开发技能。
一、环境准备:快速搭建Spring MVC开发环境
要开始Spring MVC的学习,首先需要准备好开发环境。HelloKoding-Courses项目中的Spring MVC示例使用Maven进行项目管理,以下是关键的环境配置步骤:
1.1 Maven依赖配置
在spring-mvc-examples/springmvc-xml-jsp/pom.xml文件中,定义了Spring MVC项目的核心依赖:
- Spring Web和Spring WebMVC:提供Spring MVC核心功能
- Servlet API:Web应用基础
- JUnit:单元测试支持
- Logback:日志管理
核心依赖配置片段如下:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
1.2 项目结构
Spring MVC项目通常遵循标准的Maven目录结构,HelloKoding-Courses中的示例也不例外:
springmvc-xml-jsp/
├── src/
│ ├── main/
│ │ ├── java/ # Java源代码
│ │ ├── resources/ # 资源文件
│ │ └── webapp/ # Web应用资源
│ │ └── WEB-INF/
│ │ ├── views/ # 视图文件
│ │ └── *.xml # Spring配置文件
│ └── test/ # 测试代码
└── pom.xml # Maven配置
二、Spring MVC XML核心配置详解
Spring MVC的XML配置是传统项目中常用的配置方式,HelloKoding-Courses提供了清晰的配置示例,让我们深入了解关键配置文件。
2.1 Spring MVC配置文件(appconfig-mvc.xml)
在spring-mvc-examples/springmvc-xml-jsp/src/main/webapp/WEB-INF/appconfig-mvc.xml中,配置了Spring MVC的核心组件:
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<mvc:annotation-driven/>
<mvc:resources mapping="/resources/**" location="/resources/"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
关键配置说明:
<mvc:annotation-driven/>:启用Spring MVC注解支持<mvc:resources/>:配置静态资源访问InternalResourceViewResolver:JSP视图解析器,指定视图文件的前缀和后缀
2.2 Web应用配置(web.xml)
web.xml是Web应用的部署描述符,位于src/main/webapp/WEB-INF/目录下,主要配置DispatcherServlet:
<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/appconfig-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
DispatcherServlet是Spring MVC的前端控制器,负责接收所有请求并进行分发处理。
三、视图技术实践:JSP与Thymeleaf
HelloKoding-Courses提供了两种视图技术的实现:JSP和Thymeleaf,让我们分别了解它们的配置和使用。
3.1 JSP视图技术
在springmvc-xml-jsp模块中,使用JSP作为视图技术。视图解析器配置如下:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
对应的JSP视图文件位于src/main/webapp/WEB-INF/views/hello.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello Spring MVC</title>
</head>
<body>
<h1>Hello, ${name}!</h1>
</body>
</html>
3.2 Thymeleaf视图技术
在springmvc-xml-thymeleaf模块中,展示了如何使用Thymeleaf作为视图技术。Thymeleaf的配置更为复杂一些,需要配置模板解析器、模板引擎和视图解析器:
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML5"/>
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver"/>
</bean>
<bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine"/>
</bean>
对应的Thymeleaf视图文件位于src/main/webapp/WEB-INF/views/hello.html:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello Spring MVC</title>
</head>
<body>
<h1 th:text="'Hello, ' + ${name} + '!'"></h1>
</body>
</html>
四、控制器开发:处理用户请求
在Spring MVC中,控制器负责处理用户请求并返回相应的视图。HelloKoding-Courses中的示例控制器位于src/main/java/com/hellokoding/springmvc/HelloController.java:
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello(Model model, @RequestParam(value="name", required=false, defaultValue="World") String name) {
model.addAttribute("name", name);
return "hello";
}
}
控制器说明:
@Controller:标识该类为Spring MVC控制器@RequestMapping("/hello"):映射URL路径到该方法Model:用于传递数据到视图@RequestParam:获取请求参数- 返回值"hello":指定要渲染的视图名称
五、运行与测试:快速启动应用
HelloKoding-Courses中的Spring MVC示例配置了Jetty插件,可以快速启动应用:
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty-maven-plugin.version}</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webApp>
<contextPath>/</contextPath>
</webApp>
</configuration>
</plugin>
启动命令:
mvn jetty:run
应用启动后,访问http://localhost:8080/hello?name=Spring即可看到效果。
六、总结:选择合适的技术栈
通过HelloKoding-Courses中的Spring MVC示例,我们学习了XML配置方式和两种视图技术的应用:
- JSP:适合简单项目,开发快速,有丰富的标签库支持
- Thymeleaf:适合需要更好的模板功能和前后端分离的项目,支持HTML5标准
在实际开发中,可以根据项目需求选择合适的视图技术。同时,虽然XML配置是传统方式,但了解它有助于我们更好地理解Spring MVC的工作原理。
HelloKoding-Courses项目中还有更多Spring MVC相关的示例,如registration-login-spring-xml-maven-jsp-mysql模块展示了更复杂的注册登录功能,感兴趣的读者可以进一步学习探索。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



