好网站建设公司哪个好呀模板之家官网
一、SpringMVC 简介
SpringMVC 是基于 MVC 设计模式的轻量级 Web 框架,核心功能包括:
- 请求分发:通过
DispatcherServlet
统一处理请求。 - 注解驱动:使用
@Controller
、@RequestMapping
简化开发。 - 视图解析:支持 JSP、Thymeleaf 等多种视图技术。
在三层架构中的位置:
- 表现层:SpringMVC 负责处理用户请求(如
/user/login.form
)。 - 业务层:Spring 的 Service 层处理业务逻辑。
- 持久层:MyBatis 或 Hibernate 操作数据库。
二、项目快速搭建
1. 创建 Maven 项目
添加以下依赖(以 Spring 5.3.10 为例):
<dependencies><!-- SpringMVC 核心 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.10</version></dependency><!-- Servlet API --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency>
</dependencies>
2. 配置 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>classpath:springmvc-config.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcher</servlet-name><!-- 拦截规则配置 --><url-pattern>*.form</url-pattern></servlet-mapping>
</web-app>
3. 创建 SpringMVC 配置文件
文件:src/main/resources/springmvc-config.xml
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="..."><!-- 扫描控制器包 --><context:component-scan base-package="com.example.controller" /><!-- 开启注解驱动 --><mvc:annotation-driven /><!-- 放行静态资源(可选) --><mvc:resources mapping="/static/**" location="/static/" />
</beans>
三、核心配置详解
1. servlet-name
与配置文件的对应关系
- 默认规则:SpringMVC 默认加载
WEB-INF/[servlet-name]-servlet.xml
(如dispatcher-servlet.xml
)。 - 自定义路径:通过
contextConfigLocation
参数指定配置文件路径(推荐)。
2. url-pattern
拦截模式
模式 | 行为 | 适用场景 | 注意事项 |
---|---|---|---|
*.form | 仅拦截以 .form 结尾的请求 | 传统 Web 项目 | 需手动放行静态资源 |
/ | 拦截所有非 JSP 请求(包括静态资源) | 前后端分离项目 | 需配置静态资源映射 |
/* | 拦截所有请求(包括 JSP) | 不推荐使用 | 导致 JSP 无法渲染 |
3. 静态资源处理
在 springmvc-config.xml
中添加:
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/js/**" location="/js/" />
四、最佳实践与常见问题
1. 配置推荐
- 传统 Web 项目:使用
*.form
拦截模式,JSP 直接访问。 - RESTful API 项目:使用
/
拦截模式,放行静态资源。
2. 常见问题解决
问题 | 原因 | 解决方案 |
---|---|---|
静态资源 404 | 未配置资源映射 | 添加 <mvc:resources> |
JSP 无法访问 | 误用 /* 拦截模式 | 改为 / 或 .form 模式 |
Controller 未生效 | 包扫描路径错误 | 检查 component-scan 配置 |
五、完整配置示例
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>classpath:springmvc-config.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>
springmvc-config.xml
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="..."><!-- 控制器包扫描 --><context:component-scan base-package="com.example.controller" /><!-- 开启注解驱动 --><mvc:annotation-driven /><!-- 静态资源放行 --><mvc:resources mapping="/static/**" location="/static/" />
</beans>
六、扩展内容
- RESTful 支持:使用
@GetMapping
、@PostMapping
简化请求映射。 - 数据绑定:通过
@RequestParam
获取参数,@RequestBody
接收 JSON。 - 视图解析器:配置
InternalResourceViewResolver
简化视图路径:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/" /><property name="suffix" value=".jsp" />
</bean>