目录:
Spring MVC - 搭建 - 基于xml
1. 新建 Maven webapp 项目
2. pom.xml
<!-- Spring Web MVC 框架,用于构建基于Spring的Web应用 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.1.11</version>
</dependency>
3. spring-config.xml
src/main/resources/spring-config.xml
用来扫描 dao、service 的 Bean
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义Spring配置文件的版本和编码 -->
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描指定包下的所有组件,自动注册为Spring Bean -->
<!-- base-package属性指定了需要扫描的包,这里包括了service和dao层的包 -->
<context:component-scan base-package="com.springmvc.service, com.springmvc.dao"/>
</beans>
4. spring-mvc-config.xml
src/main/resources/spring-mvc-config.xml
用来扫描 controller 的 Bean
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义Spring配置文件的版本和编码 -->
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描指定包及其子包下的所有组件,自动注册为Spring Bean -->
<context:component-scan base-package="com.springmvc.controller"/>
</beans>
5. web.xml
src/main/webapp/WEB-INF/web.xml
<!-- 定义Web应用程序的配置文件,遵循Web应用程序2.3规范 -->
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<!-- 设置应用程序的显示名称 -->
<display-name>Archetype Created Web Application</display-name>
<!-- 配置Spring框架的上下文加载监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 指定Spring配置文件的位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-config.xml</param-value>
</context-param>
<!-- 配置Spring MVC的DispatcherServlet -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定Spring MVC的配置文件位置 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc-config.xml</param-value>
</init-param>
<!-- 设置servlet在应用启动时的加载顺序 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 配置Spring MVC的url映射 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
5.1. 代码解释
<!-- 定义Web应用程序的配置文件,遵循Web应用程序2.3规范 -->
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
- 功能: 这段代码定义了整个Web应用程序的配置文件,它遵循的是Web应用程序2.3的DTD(Document Type Definition)规范,确保了XML文档的结构正确性和一致性。
<web-app>
<!-- 设置应用程序的显示名称 -->
<display-name>Archetype Created Web Application</display-name>
- 功能:
<display-name>
标签用于设置Web应用程序的显示名称,在服务器管理界面或日志中会使用这个名称来标识你的应用。
<!-- 配置Spring框架的上下文加载监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
- 功能:
<listener>
标签用于注册一个监听器,这里注册的是Spring
的ContextLoaderListener
。这个监听器会在Web应用启动时自动加载Spring
的ApplicationContext
,使得Spring
的Bean
可以在Web
环境中被管理和使用。
<!-- 指定Spring配置文件的位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-config.xml</param-value>
</context-param>
- 功能:
<context-param>
标签用于设置Web
应用的初始化参数。这里的contextConfigLocation
参数指定了Spring
配置文件的位置,即classpath:spring-config.xml
。这意味着Spring
框架会在类路径下查找名为spring-config.xml
的配置文件。
<!-- 配置Spring MVC的DispatcherServlet -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定Spring MVC的配置文件位置 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc-config.xml</param-value>
</init-param>
<!-- 设置servlet在应用启动时的加载顺序 -->
<load-on-startup>1</load-on-startup>
</servlet>
- 功能:
<servlet>
标签用于配置一个Servlet
,这里是Spring MVC
的核心组件DispatcherServlet
。<servlet-name>
指定了Servlet的名字,<servlet-class>
指定了Servlet的实现类。<init-param>
用于设置Servlet的初始化参数,这里设置了contextConfigLocation
参数,指定Spring MVC
配置文件的位置。<load-on-startup>
元素用于指定Servlet
在Web
应用启动时的加载顺序,数字越小加载越早,这里设置为1
意味着在应用启动时优先加载。
<!-- 配置Spring MVC的url映射 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
- 功能:
<servlet-mapping>
标签用于将Servlet映射到特定的URL模式上。这里的<servlet-name>
必须与之前配置的<servlet>
中的名字相匹配。<url-pattern>
指定了Servlet
的URL
映射规则,/
表示所有的请求都会被DispatcherServlet
处理,这是Spring MVC
的默认行为。
6. HelloController.java
src/main/java/com/springmvc/controller/HelloController.java
/**
* 控制器类,用于处理HTTP请求并提供相应的视图进行展示。
*/
@Controller
public class HelloController {
/**
* 处理请求映射为/hello的HTTP请求。
* 该方法返回一个字符串"redirect:index.jsp",指示Spring MVC重定向到index.jsp页面。
* 主要用于展示一个简单的"Hello World!"消息。
*
* @return 返回重定向的URL字符串,指向index.jsp页面。
*/
@RequestMapping("/hello")
public String sayHello() {
System.out.println("Hello World!");
return "redirect:index.jsp";
}
}
7. index.jsp
src/main/webapp/index.jsp
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
8. 运行
http://localhost:8080/hello