struts2 实现原理解析

struts2 操作 action servlet,是通过在web.xml中配置一个filter实现的

	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>	
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


而这个Filter StrutsPrepareAndExecuteFilter 实际做了下列工作
1.filter的init()方法建立一个Dispatcher对象
  以后struts2 都是围绕这个Dispatcher对象进行操作
 init()方法将参数FilterConfig对象传给Dispatcher对象,实际就是将ServletContext对象传递给Dispatcher对象
  而ServletContext包含了各种基本Servlet的运行环境,比如ServletContext提供了getAttribute(), setAttribute() 等方法
  所以,实际是Dispatcher对象接管了基本Servlet的一切功能
2.filter的doFilter()方法继续操作前面init()方法建立的作Dispatcher对象,将HttpServletRequest对象和HttpServletResponse对象传入Dispatcher中

Dispatcher对象是Struts2的核心操作对象,它主要实现实现了下面的工作
  1.它是线程安全的,即Dispatcher对象支持多线程,且每线程一副本
  2.Dispatcher对象的建立/构造,是接受了参数FilterDispatcher过滤器的FilterConfig传来的ServletContext,这样才接管了基本Servlet的一切功能
  3.FilterDispatcher过滤器的doFilter()方法,调用了Dispatcher对象的serviceAction()方法,并把HttpServletRequest对象和HttpServletResponse对象传入这个serviceAction()方法,就是整个Strtus2的主引擎.
 
serviceAction内部完成了多项功能:
  配置文件加载,配置初始化
 调用ActionProxy对象实现对Action类的执行
  ActionProxy对象又会按照Struts2的Stack结构依次执行Inteceptor,action,method

转自:http://blog.sina.com.cn/s/blog_6151984a0100kmkz.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值