ssm科普篇
springMVC执行步骤:
1、用户发送请求到前端控制器,前端控制器根据请求信息来决定选择页面控制器,并将请求委托给它
2、页面控制器收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,并进行验证,然后将命令对象委托给业务对象
处理;处理完后返回一个ModelAndView(模型数据和逻辑试图名)
3、前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染
4、前端控制器收回控制权,将响应返回给用户。
springMVC核心架构的主要流程
1、用户请求给DispatcherServlet前端控制器,前端控制器收到请求后委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制
2、DispatcherServlet前端控制器给HandlerMapping类控制器,类控制器将会把请求映射为HandlerExecutionChain对象(包含一个Handler处
理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,方便后续添加新的映射策略。
3、DispatcherServlet前端控制器给HandlerAdapter方法控制器,方法控制器将会处理器包装给适配器,从而支持多种类型的处理器,即适配器
设计模式的应用,从而很容易支持很多类型的处理器
4、HandlerAdapter方法控制器给处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用对应的处理器的处理方法,完成功能处理;
并返回一个ModelAndView对象(包含模型数据,逻辑视图名)
5、ModelAndView的逻辑视图名给ViewResolver视图控制器,ViewResolver将把逻辑视图名解析为具体的view,通过这种策略模式,也可以换成其他
视图技术。
6、将控制权返给DispatcherServlet,由DispatcherServlet返回响应给用户
在web.xml中配置view分发器
<servlet>
<servlet-name>xxx</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>xxx</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
配置HandlerMapping(页面控制器)
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
支持多种类型的页面控制器
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
viewResoler的配置
<bean class="org.springframework.web.servlet.view.InternalResouceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
Spring MVC四大核心接口
1、DispatcherServlet接口
前端控制器,所有的请求都需要经过它来进行统一分发处理。 在DispatcherServlet将请求分发给spring controller之前。需要借助于spring提供的
HandlerMapping定位具体的controller
2、HandlerMapping接口
请求到controller映射
3、HandlerAdapter接口
处理器给你处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的处理方法,并完成功能处理;返回一个ModelAndView对象
4、ViewResolver接口
在web应用中查找view对象,从而将相应结果渲染给用户
ssm科普篇的更多相关文章
- 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制
[原创]分布式之数据库和缓存双写一致性方案解析(三) 正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...
- PDG科普篇
作者:马健邮箱:stronghorse_mj@hotmail.com发布:2009.09.26 更新历史 2014.11.11补充了文字版PDG的部分内容增加CX PDF等打包格式的相关内容 2009 ...
- Nodejs的运行原理-科普篇
前言 Nodejs目前处境稍显尴尬,很多语言都已经拥有异步非阻塞的能力.阿里的思路是比较合适的,但是必须要注意,绝对不能让node做太多的业务逻辑,他只适合接收生成好的数据,然后或渲染后,或直接发送到 ...
- Andriod Studio科普篇——4.关于编译的常见问题
1.android支持库未安装 编译不过,提示如下: Could not find any version that matches com.android.support:appcompat-v7: ...
- Andriod Studio科普篇——3.关于gradle插件的常见问题
1.andriod gradle插件版本过低. 出错位置: dependencies{ classpath 'com.android.tools.build:gradle:0.10.2' } 提示信息 ...
- Android Studio科普篇——2.误区
1.删除一行是ctrl+x? 这是一个被谣传得很广泛的快捷键,但其实删除一行的快捷键不是ctrl+x,而是ctrl+y.ctrl+x在不选中内容的情况下,是剪切当前行,而ctrl+y才是删除当前行,它 ...
- Android Studio科普篇——1.几个个性化设置
本人未研读过android-studio使用文档,亦未去好好琢磨它的各种使用技巧等.以下内容均来自个人使用经验,如有讹误,还请指正. 1.主题. File->Settings, 搜索Theme, ...
- 初级Java面试题 – SSM框架篇
加入我的QQ群(701974765) 获取更多好用又好玩的软件,还有不定期发放的福利呦(- ̄▽ ̄)- Spring的优点/对Spring的理解 Spring的AOP编程 Spring的IOC Spri ...
- MongoDB入门系列之科普篇
目录 背景 对比 MongoDB的数据存储格式 背景 最近公司扩展了很多国外客户,那么一个很严重的问题就是翻译,对于国外客户来说,肯定看不懂中文,那就要项目中提供切换各自国家语言的功能. 由于每个 ...
随机推荐
- VR和AR
VR 虚拟现实,比如你天气很炎热,戴上VR眼镜,出现在你眼前的是哈尔滨的冰雪世界 AR 增强现实,比如你站在一片碧绿的草地上,给你身边来一匹快马 想想一个单身狗去电影院,给你身边来一个美女作陪,这是多 ...
- 如何从Word带图粘贴到编辑器中
这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用 后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下) ...
- 状压DP常用操作
1. 判断一个数字x二进制下第i位是不是等于1. 方法:if ( ( ( 1 << ( i - 1 ) ) & x ) > 0) 将1左移i-1位,相当于制造了一个只有第i位 ...
- Spring源码解读--(一)源码下载
走在Java程序员这条路上,网上Java各种工具满天飞,写个简单的CRUD,相信是个开发都能写出来,于是在思考如何可以在同行业中更有竞争力(其实就是如何赚更多钱).那么,老大给我推荐了Spring源码 ...
- 麦子lavarel---16、日志
麦子lavarel---16.日志 一.总结 一句话总结: 一定要养成打印日志查看日志的好习惯,非常节约时间和便于查错 1.console.Log(“获取类别数据:"):console.Lo ...
- Duplicate entry '4799' for key 'PRIMARY'
增加1条SQL记录报错: Operation failed: There was an error while applying the SQL script to the database. Exe ...
- day46----JavaScript的函数及对象小结
一:函数 01:普通函数 function f1(){ console.log("Helleo world") } f1(); //调用函数 -->Helleo world ...
- maven 依赖调解
项目A有两条依赖关系 A->B->C->X(1.0),A->D->X(2.0) ,X是A的传递性依赖,但是两条路径上有两个版本的依赖,会选择哪个呢? maven 依赖调 ...
- $_POST,$_GET,$_REQUEST区分
PHP $_REQUEST PHP $_REQUEST 用于收集 HTML 表单提交的数据. 下面的例子展示了一个包含输入字段及提交按钮的表单.当用户通过点击提交按钮来提交表单数据时, 表单数据将发送 ...
- python中函数的嵌套和作用域链
1.三元运算if条件成立的结果 if 条件 else 条件不成立的结果例如: a=20 b=10 c=a if a>b else b print(c) 2.命名空间 全局命名空间:创建的存储“变 ...