Spring MVC模式
Spring MVC 是一个基于 Java 的实现了 MVC 设计模式的 Web 框架,它是 Spring Framework 的一部分,用于处理 Web 应用程序中的请求。Spring MVC 通过使用 DispatcherServlet 来处理 HTTP 请求,并将请求分发给相应的处理器(Controller),然后将模型(Model)和视图(View)返回给客户端。
核心组件:
-
DispatcherServlet:前端控制器,用于接收所有 HTTP 请求并将其分发给相应的处理器。
-
HandlerMapping:将请求映射到处理器(Controller)。
-
Controller:处理业务逻辑,并返回模型和视图。
-
ModelAndView:包含了模型和视图的信息。
-
ViewResolver:根据逻辑视图名解析出实际的视图。
-
View:渲染模型数据,生成响应的 HTML 内容。
工作流程:
-
用户发送请求至前端控制器(DispatcherServlet)。
-
DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller。
-
DispatcherServlet 将请求发送给相应的 Controller。
-
Controller 执行业务逻辑,并返回一个 ModelAndView 对象。
-
DispatcherServlet 查询一个或多个 ViewResolver,找到实际的视图。
-
视图渲染模型数据,生成响应的 HTML 内容。
-
DispatcherServlet 将响应返回给用户。
优点:
-
高度可配置,提供了大量扩展点。
-
代码更加模块化,易于维护。
-
支持多种视图技术,如 JSP、Freemarker、Thymeleaf 等。
-
集成了 Spring Framework,方便进行依赖注入、声明式事务管理等。
-
提供了大量的内置功能,如文件上传、数据验证、类型转换等。
使用示例:
- 添加依赖:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.10</version> </dependency> </dependencies> - 配置 web.xml:
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> - 创建 Controller:
@Controller public class HelloController { @RequestMapping("/hello") public ModelAndView hello() { ModelAndView modelAndView = new ModelAndView("hello"); modelAndView.addObject("message", "Hello, World!"); return modelAndView; } } - 创建视图(hello.jsp):
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Hello</title> </head> <body> <h1>${message}</h1> </body> </html>
这样,当你访问 /hello 路径时,就会看到 "Hello, World!" 的消息。
这只是 Spring MVC 的一个非常简单的示例,实际上它有很多高级功能,如数据验证、文件上传、异常处理等。希望这个介绍能帮助你更好地理解 Spring MVC。