struts工作原理(图解)
Struts2框架的工作原理:

1.服务器启动,会加载我们的xml配置文件中的内容。
2.服务器启动之后,过来一个servlet请求,如user类中的save方法。请求过来先过过滤器(strutsPrepareAndExecuteFilter)。
3.执行过滤器的时候要去加载很多配置文件,xml中由对应的关系,根据链接去加载struts.xml。根据struts中的配置去找相应的action,在从action中找相应的方法。
4.struts.xml文件由谁来管理?框架内部有一个配置的管理者Configuration Manager来管理struts.xml。
5.通过Configuration Manager能生成一个Action的代理对象Actionproxy。这个代理对象就相当于上下文,通过上下文能得到ActionInvocation对象。就相当于ActionContext与Action的关系一样,是明星与经纪人的关系。
6.ActionInvocation对象能管理所有的拦截器和action。
7.通过一些配置找到action,在访问action之前要经过很多的拦截器,执行完毕之后返回一个结果。结果又返回来经过拦截器。所以拦截器执行了两次。拦截器在处理action的时候是1,2,3的顺序,当执行结果经过过滤器的时候是3,2,1的顺序。
8.执行结果经过拦截器后,最后将结果返回给我们的页面进行显示。
9.需要记的第一个对象:Configuration Manager,用来管理配置文件。通过它可以得到Action代理对象。
10.需要记的第二个对象:ActionProxy,代理对象,相当于上下文。通过代理对象可以得到ActionInvocation对象
11.需要记的第二个对象:ActionInvocation对象,用来管理所有的拦截器。
分为两个部分:
1.服务器启动的时候,做一些什么事情?
2.请求过来的时候,做什么事情。
struts工作原理(图解)的更多相关文章
- 菜鸟学Struts2——Struts工作原理
在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...
- [JavaEE,MVC] Struts工作原理
基本概念 Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用.和其他的java架构一 ...
- Hibernate、Spring和Struts工作原理及使用理由
1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory3.打开Sesssion4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭Sesst ...
- struts工作原理
在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller.ActionProxy.ActionMapping.Configuration Man ...
- struts工作原理不错的解释___
Struts 使用 Model 2 架构.Struts 的ActionServlet 控制导航流.其他Struts 类,比如Action, 用来访问业务逻辑类.当 ActionServlet 从容器接 ...
- SpringMVC工作原理图解
SpringMVC的工作原理图: SpringMVC流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherServlet收到请求调用HandlerMa ...
- struts2中struts.xml和web.xml文件解析及工作原理
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp ...
- Struts自定义拦截器&拦截器工作原理
0.拦截器的调用原理: 拦截器是一个继承了序列化接口的普通接口.其工作原理是讲需要被拦截的对象作为参数传到intercept()方法内,在方法内部对此对象进行处理之后再执行原方法.intercept( ...
- Hibernate工作原理及为什么要用?. Struts工作机制?为什么要使用Struts? spring工作机制及为什么要用?
三大框架是用来开发web应用程序中使用的.Struts:基于MVC的充当了其中的试图层和控制器Hibernate:做持久化的,对JDBC轻量级的封装,使得我们能过面向对象的操作数据库Spring: 采 ...
随机推荐
- 批处理-通过mono把c#编译成dll
::copyright@cjy @echo off ::mcs.exe address set addrMcs=D:\Program Files\Unity\Editor\Data\MonoBleed ...
- SpringBoot入门篇--使用Thymeleaf模板引擎进行页面的渲染
在做WEB开发的时候,我们不可避免的就是在前端页面之间进行跳转,中间进行数据的查询等等操作.我们在使用SpringBoot之前包括我在内其实大部分都是用的是JSP页面,可以说使用的已经很熟悉.但是我们 ...
- python 字符串与字节之间的相互转化
1.将字符串转化成字节 b'fffff' bytes('ffff', encoding='utf-8') 'ffff'.encode('utf-8') 2.将字节转化成字符串 str(data, en ...
- python入门-操作列表
1 Python根据缩进来进行判断代码行与前一个代码行的关系 for name in names: print(name) names = ['baker','david','philp','rose ...
- THINKPHP3.2.3增加阿里云短信接口思路整理
https://help.aliyun.com/document_detail/55359.html?spm=5176.product44282.4.7.O4lc1n 阿里云短信服务地址,感冒的下载看 ...
- 循环神经网络(RNN)
1. 场景与应用 在循环神经网络可以用于文本生成.机器翻译还有看图描述等,在这些场景中很多都出现了RNN的身影. 2. RNN的作用 传统的神经网络DNN或者CNN网络他们的输入和输出都是 ...
- 网络性能测试工具iperf
参考网站:https://www.cnblogs.com/yingsong/p/5682080.html https://docs.azure.cn/zh-cn/articles/azure-oper ...
- openlayers3入门教程
...
- git 提交文件到gitee
1.新建文件夹 打开gitbash 初始化仓库 git.init 2.把要提交的文件copy到文件夹 3.git add. 4.git remote add master(分支) 远程仓库 5 ...
- re(正则)模块
import re # re 存在5种使用方式 #1. macth #2.search #3.findall #4.split #5 sub re.match('^chen', 'chenhua123 ...