SpringMVC-概述和入门程序
三层架构和MVC
- B/S三层架构
- 表现层:web层,一般使用MVC模型
- 业务层:service层
- 持久层:dao层
- MVC模型
- Model:数据模型,JavaBean的类,用来进行数据封装
- View:指JSP、HTML用来显示数据给用户
- Controler:用来接收用户的请求,整个流程的控制器
SpringMVC概述
- 是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。
- Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。
- 使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。
SpringMVC 和 Struts2 对比
- 共同点:
- 它们都是表现层框架,都是基于 MVC 模型编写的。
- 它们的底层都离不开原始 ServletAPI。
- 它们处理请求的机制都是一个核心控制器。
- 区别:
- Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter
- Spring MVC 是基于方法设计的,而 Struts2 是基于类,Struts2 每次执行都会创建一个动作类。所以 Spring MVC 会稍微比 Struts2 快些。
- Spring MVC 使用更加简洁,同时还支持 JSR303, 处理 ajax 的请求更方便(JSR303 是一套 JavaBean 参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们 JavaBean 的属性上面,就可以在需要校验的时候进行校验了。)
- Struts2 的 OGNL 表达式使页面的开发效率相比 Spring MVC 更高些,但执行效率并没有比 JSTL 提升,尤其是 struts2 的表单标签,远没有 html 执行效率高。
SpringMVC的入门程序
- 创建WEB项目,引入坐标(jar包)
- 在web.xml中配置前端控制器DispatcherServlet
- 编写springmvc.xml的配置文件
- 编写index.jsp和HelloController控制器类
- 在WEB-INF目录下创建pages文件夹,编写success.jsp的成功页面
- 启动Tomcat服务器,进行测试
入门案例的执行流程
1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,就会加载springmvc.xml配置文件
2. 开启了注解扫描,那么HelloController对象就会被创建
3. 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解找到执行的具体方法
4. 根据执行方法的返回值,再根据配置的视图解析器,去指定的目录下查找指定名称的JSP文件
5. Tomcat服务器渲染页面,做出响应
SpringMVC组件
- DispatcherServlet: 前端控制器
- 用户请求到达前端控制器,它就相当于 mvc 模式中的 c,dispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet 的存在降低了组件之间的耦合性。
- HandlerMapping:处理器映射器
- HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
- Handler:处理器
- 它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由Handler 对具体的用户请求进行处理。
- HandlAdapter:处理器适配器
- 通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行
- View Resolver:视图解析器
- View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。
- View:视图
- SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是 jsp。
- 一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。
@Controller注解
- 指示Spring类的实例是一个控制器类
- 需要在SpringMVC的配置文件中添加相应的扫描配置
@RequestMapping注解
- 作用是建立请求URL和处理方法之间的对应关系
- 作用在类上:第一级的访问目录,不写的化相当于应用根目录,写的话需要以/开头
- 作用在方法上:第二级的访问目录
- 属性
-
value:默认属性,地址
-
method:指定请求的方式,RequestMethod.GET...
- 组合注解:GetMapping,PostMapping,PutMapping,DeleteMapping,PatchMapping
-
params:指定限制请求参数的条件
-
headers:指定限制请求消息头的条件
-
注意:以上条件出现2个以上时,是与的关系
-