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的数据存储格式 背景 最近公司扩展了很多国外客户,那么一个很严重的问题就是翻译,对于国外客户来说,肯定看不懂中文,那就要项目中提供切换各自国家语言的功能. 由于每个 ...
随机推荐
- Linux启动redis提示 /var/run/redis_6379.pid exists, process is already running or crashed
执行启动命令:service redisd start 提示信息:/var/run/redis_6379.pid exists, process is already running or crash ...
- Linux学习-DNS服务相关
一.DNS服务简介 1.基本概念 (1) DNS( Domain Name System )域名系统,是一种组织成域层次结构的计算机和网络服务命名系统,是一个应用层协议,使用TCP与UDP的53端口, ...
- NIO编程之多客户端聊天系统
1. 服务端 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; im ...
- Flask学习笔记02之配置文件
1. Flask默认的配置 Flask实例中包含了它的配置信息 #实例化一个Flask对象 app = Flask(__name__) # 打印默认配置信息 print(app.config) 打印结 ...
- php array_slice()函数 语法
php array_slice()函数 语法 作用:在数组中根据条件取出一段值,并返回.大理石平台支架 语法:array_slice(array,start,length,preserve) 参数: ...
- 我的Podfile如下
# Uncomment this line to define a global platform for your projectuse_frameworks!(http://www.my516.c ...
- Linux shell - scp命令用法
例子: 远程复制一个文件从服务器A (172.0.0.0) /home/test/file1.txt 到 服务器B (172.0.0.1) /home/test 服务器A和服务器B的用户是 test ...
- java 将数据库中的每一条数据取出放入数组或者List中
1.如何将数据库中数据按照行(即一整条数据)取出来,存入到数组当中? public static String str = null; // 将StringBuffer转化成字符串 public st ...
- 牛客提高D4t3 清新题
分析 树上从下往上线性基合并即可 并不需要启发式/xyx 代码 #include<iostream> #include<cstdio> #include<cstring& ...
- ngrinder压力测试
文章目录 另一篇 部署demo 写脚本 压力测试 目标主机监控 可能报错 总结: 另一篇 https://blog.csdn.net/dataiyangu/article/details/888518 ...