本帖最后由 deduct1 于 2011-10-19 07:38:21 编辑

解决方案 »

  1.   

    struts2是基于拦截器弄成的,defaultStack会拦截所有的action不仅仅是乱输入,它会做很多事情,最重要一个是获得页面传参。你查看源码就知道了。这个不用我们手动去配置的,在struts-default.xml里就有配置。如果我们要另外写自己的拦截器才要配置这个,不然struts2就没什么作用了。
      

  2.   

    在struts.xml中这样配置了,defaultStack这个拦截器会拦哪个action?是不是在用户输入一个不存在的,如乱输一个8d6ht5fv.action,就会调用defaultStack这个拦截器?1,会拦截所有action
    2,是不是在用户输入一个不存在的,如乱输一个8d6ht5fv.action,你乱输入一个,struts2会先寻找相对应的action,action都没找到,怎么拦截?
      

  3.   

    如果你在<package name="login" extends="struts-default" namespace="/"> 中extends 了这个过滤器,那它就会拦截这个package下得action。
    你也可以自定义一些过滤器但是你要注意自定义了拦截器后,默认拦截器就会失效,而如果你定义了自己的拦截器就要继承一些支持struts运行的默认拦截器,否则struts不能正常运行~
      

  4.   

    在运行action之前进行拦截,可用于权限控制。
      

  5.   

    1.    理解拦截器
    1.1.    什么是拦截器:拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。谈到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。1.2.    拦截器的实现原理:大部分时候,拦截器方法都是通过代理的方式来调用的。Struts 2的拦截器实现相对简单。当请求到达Struts 2的ServletDispatcher时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器。如下图: