### Spring MVC 概述 Spring MVC 是 Spring Framework 的一部分,主要负责处理 Web 层的请求。它基于 Model-View-Controller (MVC) 架构模式,并提供了丰富的功能来简化 Web 开发。Spring MVC 提供了一种清晰的方式来组织代码,使得开发人员能够更轻松地管理和维护应用程序。 ### Spring MVC 框架结构 Spring MVC 的核心组件包括: 1. **DispatcherServlet**:作为前端控制器,用于处理所有的 HTTP 请求和响应。 2. **HandlerMapping**:用于查找处理请求的控制器(Handler)。 3. **HandlerAdapter**:适配控制器处理程序,支持不同的控制器类型。 4. **Handler**:实际处理请求的组件,可以是任意 Java 类。 5. **ModelAndView**:包含了模型数据和视图名称的对象,用于向视图层传递数据。 6. **ViewResolver**:根据视图名称解析具体的视图对象。 7. **Model**:包含数据的对象,通常用于向视图传递数据。 8. **配置文件**:<servletName>-servlet.xml,用于配置 DispatcherServlet 的行为。 ### HTTP 请求地址映射 在 Spring MVC 中,请求地址映射是通过 `@RequestMapping` 注解完成的,它可以标注在类级别或方法级别。该注解支持多种 URL 表达式,包括标准的 URL、Ant 风格的 URL 和带 `{xxx}` 占位符的 URL。 #### Ant 风格的 URL 表达式示例 - `/user/*/createUser`:匹配 `/user/aaa/createUser`、`/user/bbb/createUser` 等 URL。 - `/user/**/createUser`:匹配 `/user/createUser`、`/user/aaa/bbb/createUser` 等 URL。 - `/user/createUser??`:匹配 `/user/createUseraa`、`/user/createUserbb` 等 URL。 - `/user/{userId}`:匹配 `/user/123`、`/user/abc` 等 URL。 - `/user/**/{userId}`:匹配 `/user/aaa/bbb/123`、`/user/aaa/456` 等 URL。 - `company/{companyId}/user/{userId}/detail`:匹配 `company/123/user/456/detail` 等 URL。 #### 绑定 `{xxx}` 中的值 通过 `@PathVariable` 注解可以将 URL 中的参数绑定到方法参数上。例如: ```java @RequestMapping("/{userId}") public ModelAndView showDetail(@PathVariable("userId") String userId) { ModelAndView mav = new ModelAndView(); mav.setViewName("user/showDetail"); mav.addObject("user", userService.getUserById(userId)); return mav; } ``` 在这个例子中,URL 中的 `userId` 参数会被自动绑定到方法参数 `userId` 上。 ### HTTP 请求数据的绑定 Spring MVC 支持自动绑定 HTTP 请求参数到控制器的方法参数上。这意味着开发者可以直接在控制器方法中声明需要的参数类型,而无需手动解析请求。 ### 数据转换、格式化、校验 为了更好地处理不同类型的数据,Spring MVC 提供了数据转换、格式化和校验的支持。这些操作可以通过自定义的转换器、格式化器以及校验器实现。 ### 数据模型控制 通过模型(Model),Spring MVC 允许开发者向视图层传递数据。这通常通过向 `Model` 对象添加属性来完成,然后这些属性可以在视图层直接访问。 ### 视图及解析器 视图解析器(ViewResolver)负责根据视图名称找到对应的视图。Spring MVC 默认支持 JSP 视图,但也可以配置为支持其他类型的视图,如 Thymeleaf、Freemarker 等。 ### Spring MVC 3.0 新特性 - **支持 REST 风格的 URL**:允许使用更加友好且符合 REST 原则的 URL。 - **添加更多注解**:例如 `@RestController` 可以简化控制器的编写。 - **引入 HTTP 输入输出转换器**(`HttpMessageConverter`):使开发者能够更容易地处理 HTTP 请求和响应。 - **与数据转换、格式化、验证框架无缝集成**:提高数据处理的能力。 - **对静态资源处理提供特殊支持**:简化静态资源的处理。 - **更加灵活的控制器方法签名**:可以完全独立于 Servlet API 编写控制器方法。 Spring MVC 不仅提供了一种强大的方式来处理 Web 请求,还提供了一系列高级特性来满足复杂的应用需求。通过学习和掌握 Spring MVC,开发者可以构建出高性能且易于维护的 Web 应用程序。
剩余73页未读,继续阅读
- 粉丝: 17
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助