struts2 的请求流程

struts2 的几个问题

1 什么时候加载web.xml 和strut.xml等等配置文件(是在服务器启动的时候,加载的是strutsPreparedAndExecutorFilter 里面的init方法 ,当服务器启动的时候,其实就已经把action 字节码文件已经加载到classloader 中了

2 通过什么样的方式找到了action

通过配置文件-----》Action的映射器----》Action的代理对象---》并且把action的对象链放在ActionProxy栈中,最后通过,通过方法名和action名称,ActionProxy类实例找到对应的action类实例(用户自己定义的类).,通过ObjectFactory创建action 实例,创建拦截器

 

 

struts2中涉及的设计模式有

拦截器中涉及的设计模式

动态代理去执行action 当中的方法,拦截器就是责任链模式

当服务器加载的时候,通过dom4j 的技术解析,相关的配置信息,解析struts.xml,或者是引入的xml文件

当服务器启动的时候就通过反射的机制把class 文件加载到classloader 中

上面的目的就是获得dispatch对象,最终执行action的也是dispatch 对象

通过配置文件得到Action的映射器,通过Action映射器得到Action的代理对象并且把action的对象链放在ActionProxy栈中,最后通过,通过方法名和action名称,ActionProxy类实例找到对应的action类实例(用户自己定义的类).,通过ObjectFactory创建action 实例,创建拦截器

拦截器的原理源码解读

https://www.cnblogs.com/hayasi/p/5882397.html

执行serviceAction 的方法的源码解读内容

 https://www.cnblogs.com/hayasi/p/5872944.html

创建action实例的方法

https://blog.csdn.net/qq_20610631/article/details/82426099

dispatch的对象的创建过程的源码分析 ,dispatcher 对象是本地线程对象不是

https://www.cnblogs.com/hayasi/p/5822169.html
https://www.cnblogs.com/hayasi/p/5832578.html
https://www.cnblogs.com/hayasi/p/5841721.html 

对于解析上面的代码的源码解读

 https://www.cnblogs.com/hayasi/p/5857183.html

对与上面的代码的解读

https://www.cnblogs.com/hayasi/p/5846643.html

 

我们通过拦截器里面去用动态代理(参考设计模式动态代理)的方式去创建action对象目的就是为了放行,执行action 后面的代码

执行action当中的execute() 方法执行了以后就放行

 

invocation.invoke() 就是通知struts2接着干下面的事情,目的就是放行

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值