Struts2初始化流程

在讲Struts2的初始化之前,应该为大家描述下Web应用中的过滤器Filter,这关系到我们对核心过滤器FilterDispatcher的正确理解。

Filter:一个filter是一个对象,为每个请求资源(一个servlet或静态内容) ,或响应一个资源,或两者,用于执行过滤任务。过滤器执行过滤是在doFilter方法中。每个过滤器方法访问一个FilterConfig对象从中获取初始化参数,filterConfig.getServletContext()可以获得ServletContext对象使用。过滤器的配置在Web应用程序的web.xml中。

init():初始化过滤器,它的输入参数javax.servlet.FilterConfig的一个实例,可以在这里初始化过滤要使用到的FilterConfig。该方法由Web容器自动调用。

doFilter():进行具体的过滤操作,这个方法以javax.servlet.ServletRequest请求信息, javax.servlet.ServletResponse响应信息,javax.servlet.FilterChain过滤链。过滤链,在Web应用程序中所有的过滤器会构成一个链状,符合过滤条件的程序将会根据定义的顺序执行所有链中的过滤器。在这个方法中调用FilterChain的 doFilter(javax.servlet.ServletRequest, javax.servlet.SerletResponse)方法就可以传递到链中的下一个过滤器。

destory():销毁过滤器,可以在这里释放使用完的资源,例如设置过滤器中FilterConfig为null。

综上所述,在Web应用启动时,会默认初始化Filter,调用Filter的init(FilterConfig filterConfig)方法,当请求到来时,会按顺序执行web.xml中所配置Filter的doFilter(ServletRequest req, ServletResponse res, FilterChain chain)方法。

Struts2的核心过滤器FilterDispatcher实现的就是StrutsStatics, Filter接口,所以它本质就是一个过滤器,如下图所示:

image

所以Struts2的初始化工作在Web应用启动时,就可以通过FilterDispatcher核心过滤器init(FilterConfig filterConfig)方法来完成了。如下图所示:

clip_image004

FilterDispatcher.init(FilterConfig filterConfig)方法中主要工作分为:

a) 创建Dispatcher类对象,将FilterDispatcher配置的初始化参数传到该对象中;

b) 加载并解析配置文件,配置文件分为属性配置文件、Bean配置文件两种。Struts2的配置文件包括系统默认的配置文件: default.properties、struts-default.xml,以及插件配置文件、应用配置文件:struts-plugin.xml、struts.xml、struts.properties、web.xml。那么这六种配置文件的加载顺序,如下:

1. default.properties

2. struts-default.xml

3. struts-plugin.xml

4. struts.xml

5. struts.properties

6. web.xml

加载顺序如下图所示:

clip_image006

c) 加载静态资源配置参数: packages,该参数用来配置自动搜寻目录;

小提示:

FilterDispatcher 实现的StrutsStatics接口,没有定义业务方法,只定义了若干个常量。Struts2对常用的接口进行了重新封装,比如HttpServletRequest、HttpServletResponse、HttpServletContext等。如下图所示:

clip_image008

转载于:https://my.oschina.net/xianggao/blog/75509

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值