Spring MVC是一个基于Java的Web应用框架,用于构建灵活且易于维护的Web应用程序。
一、环境搭建
- 创建Maven项目(以Maven为例)
- 打开你喜欢的IDE(如IntelliJ IDEA或Eclipse),创建一个新的Maven项目。
- 在
pom.xml
文件中添加Spring MVC相关依赖。主要包括spring-webmvc
和javax.servlet-servlet-api
等。例如:
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.23(版本号可根据实际情况更新)</version>
</dependency>
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version>
</dependency>
- 配置web.xml(传统方式)或使用Java配置(Servlet 3.0+)
- 传统web.xml方式
- 在
WEB-INF
目录下创建web.xml
文件。 - 配置
DispatcherServlet
,这是Spring MVC的核心组件,它负责接收所有的HTTP请求并将它们分发给相应的控制器。例如:
- 在
- 传统web.xml方式
<web-app><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.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>
</web-app>
- Java配置方式(Servlet 3.0+)
- 创建一个类,例如
WebInitializer
,它实现WebApplicationInitializer
接口。 - 在这个类中,使用
AnnotationConfigWebApplicationContext
来加载Spring配置类,并将DispatcherServlet
注册到Servlet容器中。例如:
- 创建一个类,例如
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {return null;}@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class<?>[]{AppConfig.class(你的Spring配置类)};}@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}
}
- 创建Spring配置文件(如果使用传统方式)
- 在
WEB-INF
目录下创建spring-mvc.xml
(名称可自定义)。 - 配置组件扫描,让Spring能够找到你的控制器类。例如:
- 在
<?xml version="1.0" encoding="UTF - 8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-in-c1"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="com.example.controller(你的控制器包路径)"/>
</beans>
二、创建控制器(Controller)
- 定义控制器类
- 创建一个Java类,使用
@Controller
注解标记这个类为Spring MVC控制器。例如:
- 创建一个Java类,使用
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {@RequestMapping("/hello")public String sayHello() {return "hello(视图名称)";}
}
- 在这个例子中,
@RequestMapping
注解用于将一个URL路径(/hello
)映射到sayHello
方法。当用户访问/hello
这个URL时,sayHello
方法就会被调用。
- 处理请求参数
- 如果你的方法需要接收请求参数,可以使用
@RequestParam
注解。例如:
- 如果你的方法需要接收请求参数,可以使用
@RequestMapping("/add")
public String addNumbers(@RequestParam("num1") int num1, @RequestParam("num2") int num2) {int result = num1 + num2;// 可以将结果存储在模型中,传递给视图return "result(视图名称)";
}
- 这里
@RequestParam
注解指定了参数的名称(num1
和num2
),并且会自动将请求中的参数值转换为指定的类型(这里是int
)。
- 使用路径变量(Path Variable)
- 除了
@RequestParam
,还可以使用路径变量来获取URL中的参数。例如:
- 除了
@RequestMapping("/user/{id}")
public String getUserById(@PathVariable("id") int id) {// 根据id查询用户信息,然后传递给视图return "user(视图名称)";
}
- 在这个例子中,
{id}
是一个路径变量,@PathVariable
注解用于将URL中的变量值绑定到方法参数id
上。
三、创建视图(View)
- 选择视图技术
- Spring MVC支持多种视图技术,如JSP、Thymeleaf、FreeMarker等。
- 以JSP为例,需要在
web-app
目录下创建WEB-INF
目录(如果不存在),并在其中创建views
目录来存放JSP文件。
- 创建JSP视图(以JSP为例)
- 在
views
目录下创建hello.jsp
文件,例如:
- 在
<%@ page contentType="text/html;charset=UTF - 8" language="java" %>
<html>
<head><title>Hello Page</title>
</head>
<body><h1>Hello, Spring MVC!</h1>
</body>
</html>
- 当控制器方法返回
"hello"
这个视图名称时,Spring MVC会在视图解析器配置的路径下(这里是/WEB-INF/views
)找到hello.jsp
文件并进行渲染。
- 配置视图解析器(如果需要)
- 在
spring-mvc.xml
(传统方式)或配置类(Java配置方式)中配置视图解析器。以InternalResourceViewResolver(用于JSP)为例: - 传统方式(xml)
- 在
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"/><property name="suffix" value=".jsp"/>
</bean>
- Java配置方式
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
public class AppConfig {@Beanpublic InternalResourceViewResolver viewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views/");resolver.setSuffix(".jsp");return resolver;}
}
- 视图解析器会根据前缀和后缀来解析视图名称,找到对应的视图文件。
四、运行和测试
- 部署应用程序
- 将项目部署到一个Web服务器(如Tomcat、Jetty等)。
- 在IDE中,可以通过配置服务器并将项目添加到服务器来进行部署。
- 测试应用程序
- 启动Web服务器后,在浏览器中输入相应的URL(如
http://localhost:8080/your-application-context-root/hello
)来访问应用程序。 - 如果一切配置正确,应该能够看到相应的视图内容被渲染出来。
- 启动Web服务器后,在浏览器中输入相应的URL(如