### Spring MVC 简单入门知识点详解 #### 一、Spring MVC 概述与工作流程 **Spring MVC** 是 Spring Framework 的一个重要模块,主要用于构建 Web 应用程序。它提供了模型-视图-控制器(Model-View-Controller,简称 MVC)架构的实现,帮助开发者更加清晰地分离业务逻辑和展示层。 ##### 1.1 工作流程 1. **用户发起请求**:用户通过浏览器或其他客户端向服务器发送 HTTP 请求。 2. **DispatcherServlet 接收请求**:`DispatcherServlet` 是 Spring MVC 的前端控制器,它负责接收 HTTP 请求并对其进行分发处理。 3. **HandlerMapping 映射处理器**:`DispatcherServlet` 将请求转发给 `HandlerMapping` 接口的实现类,根据 URL 映射规则找到合适的控制器方法(Handler)来处理请求。 4. **HandlerAdapter 处理请求**:`HandlerAdapter` 负责调用具体的 Handler 方法,并处理其参数和返回值。 5. **返回 Model 和 View**:控制器方法执行完成后,会返回一个 Model(数据模型)和一个 View(视图对象),其中 Model 包含了需要传递给视图的数据。 6. **渲染视图**:`ViewResolver` 解析视图名称,将其转换为实际的视图对象,并结合 Model 中的数据进行渲染。 7. **响应结果**:最终渲染后的视图结果被响应给客户端。 #### 二、核心组件分析 **2.1 DispatcherServlet** - **定义**:`DispatcherServlet` 是 Spring MVC 的入口点,它是一个标准的 Servlet,负责初始化 Spring IoC 容器,以及处理所有的 HTTP 请求和响应。 - **配置**:在 `web.xml` 文件中配置 `DispatcherServlet`,包括其名称、类路径和加载时机等。 - **示例代码**: ```xml <servlet> <servlet-name>httpInvoke-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>httpInvoke-dispatcher</servlet-name> <url-pattern>*.service</url-pattern> </servlet-mapping> ``` 上述配置中,`httpInvoke-dispatcher` 表示 Servlet 的名称,`org.springframework.web.servlet.DispatcherServlet` 是 `DispatcherServlet` 的全限定类名,`*.service` 表示任何以 `.service` 结尾的 URL 都将由 `httpInvoke-dispatcher` 来处理。 **2.2 HandlerMapping** - **定义**:`HandlerMapping` 是一个接口,用于映射 URL 到具体的 Controller 方法。Spring MVC 提供了多种实现,如 `SimpleUrlHandlerMapping` 和 `DefaultAnnotationHandlerMapping` 等。 - **实现类**: - **SimpleUrlHandlerMapping**:通过配置文件,把一个 URL 映射到 Controller。 - **DefaultAnnotationHandlerMapping**:通过注解,把一个 URL 映射到 Controller 类上。 - **示例代码**: ```xml <!-- 使用 SimpleUrlHandlerMapping 映射 URL 到 Controller --> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/entry.service">exporter</prop> </props> </property> </bean> <!-- 使用 DefaultAnnotationHandlerMapping 映射 URL 到 Controller --> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <ref bean="accessSecurityInterceptor"/> <ref bean="ssoSecurityInterceptor"/> </list> </property> </bean> ``` **2.3 Controller** - **定义**:Controller 是 MVC 架构中的控制器部分,主要负责处理用户的请求,并返回相应的 Model 和 View。 - **命名规范**:建议使用 `xxxController` 的形式命名控制器类。 - **实现方式**: - **非注解方式**:通常需要继承 `CommandController` 或其他控制器基类。 - **注解方式**:在类名前添加 `@Controller` 注解。 - **请求映射**:使用 `@RequestMapping` 注解来指定哪些 URL 请求可以触发当前控制器方法。 - **示例代码**: ```java @Controller public class ExampleController { @RequestMapping(value = "/example", method = RequestMethod.GET) public String handleRequest() { return "viewName"; // 返回视图名称 } } ``` #### 三、Spring MVC 实现细节 **3.1 请求参数绑定** - **自动绑定**:Spring MVC 支持自动将请求参数绑定到方法参数上。 - **示例代码**: ```java @RequestMapping(value = "/user/{id}", method = RequestMethod.GET) public String getUser(@PathVariable("id") int userId, Model model) { User user = userService.getUserById(userId); model.addAttribute("user", user); return "userDetail"; } ``` 在上述代码中,`@PathVariable` 用于获取 URL 中的动态部分(如 `{id}`),并将其绑定到方法参数 `userId` 上。 **3.2 视图渲染** - **视图解析**:`ViewResolver` 负责解析视图名称,并将其转换为具体的视图对象。 - **常用视图解析器**:`InternalResourceViewResolver` 和 `FreeMarkerViewResolver` 等。 - **示例代码**: ```xml <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> ``` 上述配置中,`prefix` 和 `suffix` 分别表示视图文件的前缀和后缀。 通过以上内容,我们可以了解到 Spring MVC 的基本工作原理及其核心组件的使用方法。掌握了这些基础知识之后,可以更加灵活地应用 Spring MVC 框架来开发功能强大的 Web 应用程序。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 从XML生成可与Ajax共同使用的JSON中文WORD版最新版本
- silverlight通过WebService连接数据库中文WORD版最新版本
- 使用NetBeans连接SQLserver2008数据库教程中文WORD版最新版本
- XPath实例中文WORD版最新版本
- XPath语法规则中文WORD版最新版本
- XPath入门教程中文WORD版最新版本
- ORACLE数据库管理系统体系结构中文WORD版最新版本
- Sybase数据库安装以及新建数据库中文WORD版最新版本
- tomcat6.0配置oracle数据库连接池中文WORD版最新版本
- hibernate连接oracle数据库中文WORD版最新版本