Focus on my subject! Powered by HendyZhu

永久域名:http://hendy.cnblogs.com

导航

Struts2 Interceptor浅解(一)

  Interceptor(拦截器)顾名思义就是在某个时间发生之前将其拦截,并插入相应的处理过程。从这点上看,拦截器相当于Sevlert规范中的Filter ,但是Struts2的拦截器完全独立于Servlet 的Filter ,而且两者有着截然不同的实现。

  拦截器在AOP中用于某个方法或字段被访问前进行拦截,然后在之前或之后进行插入某些操作。这是AOP实现的一种策略。什么事AOP呢,中文意思就面向切面编程。是一种消除代码重复的一种方法,是面向思想的一种延续。例如,如果需要对系统中各个方法进行日志记录,这种日志记录方法散布在多个类中。面对这样的情况最节的方法就是创建一个基类,将日志的功能放在其中,并让这些类实现这个基类。所以这个需求必须早期就应该提出,否则以后要修改很多散列在系统周末中的代码,这样无疑会增加出错的几率,并加大系统的维护难度。

  相信大家都有过很多程序表现出一些不能自然是和单个程序模块或者一个紧密相关的程序模块的行为。例如:日志记录、对上下文敏感错误的处理、性能优化以及设计模式等,这些“横切关节点”因为跨越了给定编程模型中的职责界限。因为横切行为是分散的,所以编程人员要应用AOP,这就是AOP产生的原因。同时必须将横切关注点进行模块化。通过划分的Aspect代码,横切关注点变得容易处理。我们可在编译时更改、删除或者插入系统的Aspect,甚至重用之。

  在Struts2中,有许多action的操作都要在进行登录之后才可以进行,那么简单的解决方法就是就是在每个action都增加登录判断的操作,这个通过代码的服装黏贴就能完成,如果后期需要修改,只要的每个action方法中修改就可以了。如果定义了拦截器,在用户进入action之前,就可以斗用用户名密码进行一些判断,然后知道用户拥有哪些权限,这也就是权限的控制,用拦截器可以实现权限的控制。(待续)

posted on 2009-11-09 10:33  Hendy Chu  阅读(296)  评论(0编辑  收藏  举报