SSM框架--springMVC浅析《一》之开发流程及组件介绍
2017-11-27 18:19
417 查看
一、概述
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web
应用程序的全功能 MVC 模块。
使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,
如Struts1,Struts2等。Spring
MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。
spring
web MVC 和struts2都是表现层框架,
·springMVC是spring的一部分,所以我们可以从spring的整体结构中看出。
二、springmvc简易处理流程
三、springMVC开发步骤
1、创建web项目
2、导入开发jar包
3、在构建路径顶端创建springmvc.xml配置文件
4、配置前端控制器(DispatcherServlet)
注:加载springmvc配置文件时,默认路径为为:/WEB-INF/[servlet的名字]-servlet.xml
拦截规则:/* :拦截所有,包括(.jsp .js .png .css等) 不建议使用
*.action :拦截以action结尾的动作 肯定能用到
/ :拦截所有,但是不包括.jsp,包括(.js .png .css等) 建议使用
此处要和struts2的拦截规则区分
5、controller层
注:@Contorller注解是有springMVC配置文件中注解扫描解析
@RequestrianMapping(value="/items/itemsList.action")此注解的含义为访问items/itemsList.action动作时将触发此方法,
具体的后边说到springmvc具体执行流程时会细说。
ModelAndView是springmvc提供的一个对象,看源码可得
model:用来表示模型(封装数据)
view:指定数据显示的视图
6、部分jsp代码
四、springMVC架构
1、架构图
2、架构流程
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器
5、执行处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户
3、组件说明
一个中心(DispatcherServlet)
三个基本点(HandlerMapping、HandlerAdapter、ViewReslover)
Handler(处理器)
View(视图)
DispatcherServlet:前端控制器
用户请求到达前端控制器,DispatcherServlet就相当于MVC中的C,它是整个流程控制的中心,
由它调用各个组件处理用户请求,很好的降耦合。
HandlerMapping:处理器映射器
负责根据用户请求的URL找到相应的handler(处理器),springmvc提供了不同的映射器实现不同的映射方法,
例如:配置文件,实现接口,注解
HandlerAdapter:处理器适配器
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
Handler:处理器
后端控制器,对具体用户的请求进行处理
View:视图
springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。
4、组件详解
在【3、组件说明】中标红色的组件为框架提供不用我们编写,只需先配置后使用;标绿色的需要开发者编写
但是为什么我们只在web.xml中配置了前端控制器(DispatcherServlet),
而(HandlerMapping【处理器映射器】、HandlerAdapter【处理器适配器】、ViewResolver【视图解析器】)
三大组件我们没有配置,是因为我们使用的是默认的,而默认的组件就在DispatcherServlet.properties文件内容(标记的就是默认的三大组件)
但是springMVC提供的默认的HandlerMapping和HandlerAdapter已经被废弃了,源码如下(只看一个其他类似)
但是同时也给出了可用的org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
因此我们需要在springmvc.xml配置文件中手动配置可用的HandlerMapping和HandlerAdapter
注:由于配置处理器映射器和处理器适配器比较麻烦,所以可以采取注解驱动的方式
springmvc可以根据注解驱动,自动加载requestMappingHandlerMapping和requestMappingHandlerAdapter
视图解析器没有被废弃,可以正常使用,我们还可以添加一些属性配置来简化我们的开发的
那么controller层的代码就要更改了
原始的:mav.setViewName("/WEB-INF/JSP/items/itemList.jsp");
修改后:mav.setViewName("/items/itemList");
===================================================================================
尽人事,听天命。我相信只有那些疯狂到自以为能改变世界的人才会真正改变世界。
坚持别人不能坚持的坚持,终将收获别人不能收获的收获。这就是我,一个纯粹想靠技术改变命运的人。
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web
应用程序的全功能 MVC 模块。
使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,
如Struts1,Struts2等。Spring
MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。
spring
web MVC 和struts2都是表现层框架,
·springMVC是spring的一部分,所以我们可以从spring的整体结构中看出。
二、springmvc简易处理流程
三、springMVC开发步骤
1、创建web项目
2、导入开发jar包
3、在构建路径顶端创建springmvc.xml配置文件
<!-- 配置controller扫描包,多个包之间可以用“,”隔开 --> <context:component-scan base-package="com.springmvc.controller"></context:component-scan>
4、配置前端控制器(DispatcherServlet)
<!-- 配置前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 加载springmvc配置文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>
注:加载springmvc配置文件时,默认路径为为:/WEB-INF/[servlet的名字]-servlet.xml
拦截规则:/* :拦截所有,包括(.jsp .js .png .css等) 不建议使用
*.action :拦截以action结尾的动作 肯定能用到
/ :拦截所有,但是不包括.jsp,包括(.js .png .css等) 建议使用
此处要和struts2的拦截规则区分
5、controller层
@Controller public class ItemsController { @RequestMapping(value="/items/itemsList.action") public ModelAndView getItemsList(){ List<Items> itemList = new ArrayList<Items>(); itemList.add(new Items(1, "oppo", 2399F, new Date(), "质量好!1")); itemList.add(new Items(2, "apple", 2399F, new Date(), "质量好!2")); itemList.add(new Items(3, "honor", 2399F, new Date(), "质量好!3")); itemList.add(new Items(4, "meizu", 2399F, new Date(), "质量好!4")); itemList.add(new Items(5, "xiaomi", 2399F, new Date(), "质量好!5")); itemList.add(new Items(6, "vivo", 2399F, new Date(), "质量好!6")); ModelAndView mav = new ModelAndView(); mav.addObject("itemList", itemList); mav.setViewName("/items/itemList"); return mav; } }
注:@Contorller注解是有springMVC配置文件中注解扫描解析
@RequestrianMapping(value="/items/itemsList.action")此注解的含义为访问items/itemsList.action动作时将触发此方法,
具体的后边说到springmvc具体执行流程时会细说。
ModelAndView是springmvc提供的一个对象,看源码可得
/** View instance or view name String */ private Object view; /** Model Map */ private ModelMap model;
model:用来表示模型(封装数据)
view:指定数据显示的视图
6、部分jsp代码
<c:forEach items="${itemList }" var="item"> <tr> <td>${item.name }</td> <td>${item.price }</td> <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td>${item.detail }</td> <td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td> </tr> </c:forEach>
四、springMVC架构
1、架构图
2、架构流程
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器
5、执行处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户
3、组件说明
一个中心(DispatcherServlet)
三个基本点(HandlerMapping、HandlerAdapter、ViewReslover)
Handler(处理器)
View(视图)
DispatcherServlet:前端控制器
用户请求到达前端控制器,DispatcherServlet就相当于MVC中的C,它是整个流程控制的中心,
由它调用各个组件处理用户请求,很好的降耦合。
HandlerMapping:处理器映射器
负责根据用户请求的URL找到相应的handler(处理器),springmvc提供了不同的映射器实现不同的映射方法,
例如:配置文件,实现接口,注解
HandlerAdapter:处理器适配器
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
Handler:处理器
后端控制器,对具体用户的请求进行处理
View:视图
springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。
4、组件详解
在【3、组件说明】中标红色的组件为框架提供不用我们编写,只需先配置后使用;标绿色的需要开发者编写
但是为什么我们只在web.xml中配置了前端控制器(DispatcherServlet),
而(HandlerMapping【处理器映射器】、HandlerAdapter【处理器适配器】、ViewResolver【视图解析器】)
三大组件我们没有配置,是因为我们使用的是默认的,而默认的组件就在DispatcherServlet.properties文件内容(标记的就是默认的三大组件)
但是springMVC提供的默认的HandlerMapping和HandlerAdapter已经被废弃了,源码如下(只看一个其他类似)
但是同时也给出了可用的org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
因此我们需要在springmvc.xml配置文件中手动配置可用的HandlerMapping和HandlerAdapter
<!-- 配置处理器映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> <!-- 配置处理器适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
注:由于配置处理器映射器和处理器适配器比较麻烦,所以可以采取注解驱动的方式
springmvc可以根据注解驱动,自动加载requestMappingHandlerMapping和requestMappingHandlerAdapter
<mvc:annotation-driven/>
视图解析器没有被废弃,可以正常使用,我们还可以添加一些属性配置来简化我们的开发的
<!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp"/> <property name="suffix" value=".jsp"/> </bean>
那么controller层的代码就要更改了
原始的:mav.setViewName("/WEB-INF/JSP/items/itemList.jsp");
修改后:mav.setViewName("/items/itemList");
===================================================================================
尽人事,听天命。我相信只有那些疯狂到自以为能改变世界的人才会真正改变世界。
坚持别人不能坚持的坚持,终将收获别人不能收获的收获。这就是我,一个纯粹想靠技术改变命运的人。
相关文章推荐
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
- SSM框架系列学习总结8之SpringMVC核心组件介绍
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
- 工作流程组件介绍 ━ RDIFramework.NET ━ .NET快速信息化系统开发框架
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
- java二次开发 外包项目利器 springmvc SSM后台框架源码
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件WinForm业务平台
- ssm(springmvc4+spring4+mybatis3)整合实战-个人博客系统-util介绍与开发首页
- java快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码
- springMVC框架--SSM整合开发(二)
- SSM框架Web程序的流程(Spring SpringMVC Mybatis)
- SpringMVC(一)——流程框架总体介绍
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件WinForm业务平台
- ssm框架组件及介绍
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件WinForm业务平台
- SSM框架web程序的流程(spring springmvc mybatis)
- SSM(Spring,SpringMVC,MyBatis)整合开发流程
- java源码 springmvc mybatis SSM SSH 主流后台管理开发框架项目