论坛首页 Java企业应用论坛

Controller 层拦截器设计的思考

浏览 2209 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-08-09  
struts的过滤器配置就是误入歧途。为了添加一个过滤器,你需要做以下几件事情:

1. 定义一个拦截器类
2. 接着将其配置到struts.xml文件中
3. 接着还要将这个拦截器放到你想拦截的action配置中

神那,搞什么…. 一个拦截器而已….

还有一种普遍的需求是,几个Action方法调用前都要获取一个对象A,然后这个对象在action中接着用。这个时候struts的机制就有点为难了。
在我看来,拦截器也是可以在使用普通的方法和声明来实现的。比如同一个类里

```
class C
{
   @BeforeFilter
   private final static Map $b = map(only, list("a","c"));
  
   public void a(){
   }
  
   public void c(){
   }
  
   public void d(){
   }
  
   private void b(){
   }
}
```
   @BeforeFilter 声明,当执行a,c方法的时候,先调用b方法。我们可以看到,拦截器就是一个简单的私有方法。通过@BeforeFilter 声明拦截
   那些方法。把这些被拦截的方法升级为action的时候,这个私有的b方法就是一个纯种的拦截器了。
  
   对于跨controller的拦截器,你可以定义在父类。其实就是把b移动到父类上即可。
  
   是否非常简单呢?而且能解决我之前提到的对象共享的问题。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics