您的位置:首页 > 编程语言 > Java开发

【Struts2框架】(一)原理分析

2015-07-31 21:13 302 查看

一.struts概念

        struts2是一款体现关注点分离思想的架构。

        struts2将我们web开发中的各个需要处理的细节都封装到了拦截器中(Interceptor),每个拦截器负责自己独立的功能。

        例如:参数拦截器(params),令牌拦截器(Interceptor-stack)

        我们也可以指定自己的拦截器来拓展struts2的功能(自定义拦截器)

二.struts2的特点

1.关注点分离/解耦

        把变化点错落有致的封装在软件系统的不同部分。

        系统的一个部分发生了变化,不会影响到其他部分

        即使需要改变,也能够清晰的识别出哪些部分需要改变。

        如果需要拓展架构,将影响最小化,已经可以工作的美格尔部分将继续工作。

2.mvc

struts2中也体现了MVC的设计思想

        控制器C(StrutsPrepareAndExecuteFilter)就是我们在web.xml中声明的struts2核心类

        模型M(Action)

        视图V(JSP)



三.Struts2的处理流程

     图中用数字表示了,请求的流转过程



当用户发出请求后

    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.递归调用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: