struts2技术内幕笔记2(struts2概览与设计模式)

来源:互联网 发布:淘宝网客户端下载 编辑:程序博客网 时间:2024/05/18 06:47

1 Struts2核心作用就是帮助处理Http请求。应用场景:帮助编写复杂的、可扩展的web应用。

2 Struts2程序入口,遵循了Servlet标准,在web.xml中配置filter,StrutsPrepareAndExcuteFilter源码,只是一个继承了Filter接口的实现类:一,Struts2初始化,init方法驱动执行。二,Struts2处理Http请求,doFilter方法驱动执行。(先预处理之后交给Xwork)

3 Struts2核心设计理念在于消除核心程序对运行环境(Web容器)的依赖,这一过程也是Struts2的解耦过程。

4 ThreadLocalm模式:Web线程安全问题,Web容器默认采用单例模式(单servlet实例)多线程来处理Http请求,这种处理能够减少Servlet实例开销,从而缩短Http请求时间。(Servlet对象是一个无状态单例对象Servlet在不同的线程池中运行,Servlet中变量在不同线程中共享,于是,Servlet对象内部变量不是线程安全的)解决方案:同步机制,但是会使得Web应用效率低。最佳实践:ThreadLocal模式:java.lang.Servlet类。(ThreadLocal模式与synchronized关键字:synchronized采用了“以时间换空间”的方式,让不同的线程排队访问。threadLocal采用了“以空间换时间”的方式,为每一个线程都提供一份变量的副本,从而实现同时访问而互不影响)。threadLocal解决的是同一线程中隶属于不同开发层次的数据共享问题。

5 装饰模式:能够动态的为一个对象添加一些额外的行为职责。装饰模式比继承更合理的地方:装饰模式产生的 初衷是装饰类对默认目标实现类的行为扩展,然而装饰类却并不对默认目标实现类形成依赖。

原始接口:定义一个接口方法。

默认目标实现类:对于原始接口的默认实现方式。

装饰实现类:和默认目标实现类一样实现了原始接口,同时内部封装了一个原始接口的对象实例,这个实例往往被初始化默认为目标实现类。

具体装饰类:继承装饰类,既可以调用原始接口的对象实例获得默认实现类的行为方式并在其中加入扩展实现,还可以自由添加新的行为职责(新的方法)

6 策略模式:仅仅是一个接口的多个实现类在运行期间的选择性替换。

7 构造模式:客户端调用构造的接口,接口下面有具体实现类,具体实现类再构造出产品。

8 责任链模式:后续


原创粉丝点击