SpringMVC(一、快速入门)
1、SpringMVC 概述
SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。
SpringMVC 已经成为目前最主流的 MVC 框架之一,并且随着 Spring3.0 的发布,全面超越 Struts2,成为最优 秀的 MVC 框架。它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时 ,它还支持 RESTful 编程风格的请求。
它是一个典型的教科书式的 mvc 构架,而不像struts等都是变种或者不是完全基于 mvc 系统的框架,对于初学者或者想了解 mvc 的人来说我觉得 spring 是最好的,它的实现就是教科书!第二它和tapestry一样是一个纯正的 servlet 系统,这也是它和 tapestry 相比 struts 所具有的优势。而且框架本身有代码,看起来容易理解。
2、SpringMVC 快速入门
开发步骤:
① 导入 SpringMVC 相关坐标
② 配置 SpringMVC 核心控制器 DispathcerServlet
③ 创建 Controller 类和视图页面
④ 使用注解配置 Controller 类中业务方法的映射地址
⑤ 配置 SpringMVC 核心文件 spring-mvc.xml
⑥ 客户端发起请求测试
1、导入坐标
导入 Spring 和 SpringMVC 的坐标
导入 Servlet 和 Jsp 的坐标
2、在 web.xml 配置 SpringMVC 的核心控制器
3、创建 Controller 类和视图页面
创建 Controller 和业务方法
创建视图页面 index.jsp
4、测试
3、SpringMVC 流程图示
小结
SpringMVC 的开发步骤
4、SpringMVC 组件解析
1、SpringMVC 的执行流程
① 用户发送请求至前端控制器 DispatcherServlet。
② DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。
③ 处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果 有则生成)一并返回给 DispatcherServlet。
④ DispatcherServlet 调用 HandlerAdapter 处理器适配器。
⑤ HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器)。
⑥ Controller 执行完成返回 ModelAndView。
⑦ HandlerAdapter 将 controller 执行结果 ModelAndView 返回给 DispatcherServlet。
⑧ DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。
⑨ ViewReslover 解析后返回具体 View。
⑩ DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet 响应用户。
2、SpringMVC 组件解析
前端控制器:
DispatcherServlet 用户请求到达前端控制器,它就相当于 MVC 模式中的 C,DispatcherServlet 是整个流程控制的中心,由 它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。
处理器映射器:
HandlerMapping HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的 映射方式,例如:配置文件方式,实现接口方式,注解方式等。
处理器适配器:
HandlerAdapter 通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理 器进行执行。
处理器:Handler 它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由 Handler 对具体的用户请求进行处理。
视图解析器:
View Resolver View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即 具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。
视图:
View SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView 等。最 常用的视图就是 jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程 序员根据业务需求开发具体的页面
3、SpringMVC 注解解析
@RequestMapping
作用:
用于建立请求 URL 和处理请求方法之间的对应关系
位置:
类上,请求 URL 的第一级访问目录。此处不写的话,就相当于应用的根目录
方法上,请求 URL 的第二级访问目录,与类上的使用 @ReqquestMapping 标注的一级目录一起组成访问虚拟路径
属性:
value:用于指定请求的 URL。它和 path 属性的作用是一样的
method:用于指定请求的方式
params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和配置的一模一样
例如:
params = {"accountName"},表示请求参数必须有 accountName
params = {"moeny!100"},表示请求参数中 money 不能是 100
mvc 命名空间引入
命名空间:
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
约束地址:http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
组件扫描 SpringMVC 基于 Spring 容器,所以在进行 SpringMVC 操作时,需要将 Controller 存储到 Spring 容器中,如果使 用 @Controller 注解标注的话,就需要使用进行组件扫描。
5、SpringMVC 的 XML 配置解析
1、视图解析器
SpringMVC 有默认组件配置,默认组件都是 DispatcherServlet.properties 配置文件中配置的,该配置文件地址 org/springframework/web/servlet/DispatcherServlet.properties,该文件中配置了默认的视图解析器,如下:
翻看该解析器源码,可以看到该解析器的默认设置,如下:
我们可以通过属性注入的方式修改视图的的前后缀
小结
SpringMVC 的相关组件
• 前端控制器:DispatcherServlet
• 处理器映射器:HandlerMapping
• 处理器适配器:HandlerAdapter
• 处理器:Handler
• 视图解析器:View Resolver • 视图:View
SpringMVC 的注解和配置
• 请求映射注解:@RequestMapping
• 视图解析器配置:
REDIRECT_URL_PREFIX = "redirect:"
FORWARD_URL_PREFIX = "forward:"
prefix = ""; suffix = "";
版权声明: 本文为 InfoQ 作者【斯】的原创文章。
原文链接:【http://xie.infoq.cn/article/ba74c3cd8946d425624b6b8d5】。文章转载请联系作者。
评论