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

Java学习笔记-Struts2工作机制

2016-03-27 16:38 519 查看
1.Servlet Filter(过滤器)技术:Servlet过滤器是在Java Servlet规范中定义的,它能够对过滤器关联的URL请求和相应进行检查和修改。

过滤器的用处:

(1)权限控制。通过过滤器实现访问的控制,当用户访问某个链接或者某个目录的时候,可利用过滤器判断用户是否有访问权限。

(2)字符集处理。可以在过滤器中处理request和response的字符集,而不用在每个Servlet和JSP中进行单独处理。

(3)其他一些场合。如计数器,数据加密,访问触发器,日志用户访问分析。

所有过滤器都必须实现java.Servlet.Filter接口,它含有三个必须实现的方法:

(1)init(FilterConfig):过滤器的初始化方法,Servlet容器创建过滤器实例后将调用这个方法。这个方法可以通过FilterConfig参数读取web.xml文件中过滤器的初始化参数。

(2)doFilter(ServletRequest,ServletResponse,

FilterChain):这个方法完成实际的过滤操作,当用户请求与过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法,在返回响应之前也会调用此方法。FilterChain参数用于访问过滤器链上的下一个过滤器。

过滤器必须与指定的URL关联才能发挥作用,关联的方式有三种:与一个URL关联(xxx.jsp),与一个URL目录下的所有资源关联(/*),与一个Servlet关联(Servlet名称)。

(3)destroy():Servlet容器在销毁过滤器实例前调用此方法,释放过滤器占有的资源。

2.struts2的设计思想: 用Servlet Filter 技术将Servlet API 隐藏于框架之内,一个请求在struts2框架内被处理,大致分为以下几个步骤,如下图所示

(1)客户端初始化一个指向Servlet的容器(如tomcat)的请求。

(2)这个请求经过一系列的过滤器(Filter)。

(3)接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action。

(4)如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求交给ActionProxy。

(5)ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类。

(6)ActionProxy创建一个ActionInvocation的实例。

(7)ActionInnovation实例使用命名模式来调用,在调用Action的过程前后,涉及相关拦截器的调用。

(8)一旦Action执行完毕,ActionInnovation负责根据struts.xml中的配置找到对应的返回结果。



图 Struts2内部工作机制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: