标签:
struts2是一款体现关注点分离思想的架构。
struts2将我们web开发中的各个需要处理的细节都封装到了拦截器中(Interceptor),每个拦截器负责自己独立的功能。
例如:参数拦截器(params),令牌拦截器(Interceptor-stack)
我们也可以指定自己的拦截器来拓展struts2的功能(自定义拦截器)
把变化点错落有致的封装在软件系统的不同部分。
系统的一个部分发生了变化,不会影响到其他部分
即使需要改变,也能够清晰的识别出哪些部分需要改变。
如果需要拓展架构,将影响最小化,已经可以工作的美格尔部分将继续工作。
struts2中也体现了MVC的设计思想
控制器C(StrutsPrepareAndExecuteFilter)就是我们在web.xml中声明的struts2核心类
模型M(Action)
视图V(JSP)
当用户发出请求后
1:首先经过struts2框架的核心控制器(strutPrepareAndExecuteFiler)
2:核心控制器依次查找ActionMapper来决定调用这个请求是否调用action。如果actionMapper决定调用action,那么核心控制器就把请求的处理器控制权委托给actionProxy
3:actionProxy通过configuration manager查询struts框架的很新配置文件(struts.xml)找到,所要调用的action类
4:然后actionproxy创建一个actionInvocation实例,该实例负责命令模式的实现,包括激活action 的任意拦截器。
5:在action执行完成后之后,actionInvocation实例负责根据action的返回结果码在struts.xml配置文件中找到所需要的result。然后该结果通常是jsp或者freemarker模板。也可能是action。
6:action配置的拦截器将再次执行(执行顺序和调用的时候相反)
7:服务器响应将通过web.xml文件中配置的struts2框架核心控制器返回。
(下一篇文章中将讲述:手动实现struts2框架)
需要读者对以下知识点了解:
1.xml解析器,XPath表达式(dom4j)
2.Servlet技术
3.java内省(BeanUtils)
4.ThreadLocal线程本地化类
5.递归调用
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/zhaolijing2012/article/details/47174313