比如我有100个action,但我唯独不拦截登录的action.
求在url-pattern里该怎么配?之拦截剩下的action先别提其他方式,就这个方式能不能实现?求解

解决方案 »

  1.   

    url-pattern特别傻,只支持后缀/*和前缀*.action两种功能。想实现复杂匹配的,都要先用filter拦截所有请求,然后在代码里自己匹配。
      

  2.   

    s2的拦截器struts2拦截器只对action拦截,而不拦截jsp.
    仅对某个方法做拦截不拦截Urlfilter是针对url的拦截
      

  3.   

    1. <action name="manage" class="com.ManageAction">  
    2.             <interceptor-ref name="log">  
    3.                 <param name="name">日志拦截</param>  
    4.                 <!-- 设置需要拦截的方法,指定多个方法以逗号隔开 -->  
    5.   
    6.                 <param name="includeMethods">execute,add</param>  
    7.                 <!-- 设置不需要拦截的方法,execute在includeMethods中同时存在,execute会被拦截 -->  
    8.                 <param name="excludeMethods">search,execute</param>  
    9.             </interceptor-ref>  
    10.             <result name="succee">/welcome.jsp</result>  
    11.          </action>  
      

  4.   

    我表达问题,是配置在web.xml里面那个filter.
      

  5.   

    意思说就是光用url-pattern不能完成了.
      

  6.   

    你的登录别用struts做不就行了吗,自己定义个servlet做,...
      

  7.   


       public class AuthorityInterceptor extends AbstractInterceptor {
           ActionContext ac = invocation.getInvocationContext();
           String name = ac.getActionInvocation().getProxy().getActionName();
           if(name.equals("login")){
              return invocation.invoke();
           }
           Sysout.out.print("没有权限");
           return null;
       }
      

  8.   


    s2的拦截器struts2拦截器只对action拦截,而不拦截jsp.
    仅对某个方法做拦截不拦截Urlfilter是针对url的拦截
    看不懂吗?还是我没说清除
      

  9.   

    我自己也有几个另外的方法,
    但是我只想讨论这个方案,因为项目接手时已经做了大半了,改不了结构.所以才问问这个情况的解决方案我就是要拦截url,防止别人直接输入地址来绕过登录.看看来没什么好办法
      

  10.   

    因为所有跳转都是内部跳转,我能确保一般用户无法获得jsp的url所以我才直接说成action的(url).ok
      

  11.   

    有两种方案解决
    1、单独弄一个Action类放置login
    2、可以对action进行过滤的
      

  12.   

    3、Interceptor里可以按照8#同志的做法做的
    不过要通过代码的方式而已直接改配置不是更好的么还有啊
    你为什么只用一个Action呢
    这样不方便对不同的权限进行拦截啊
    比如管理员和普通员工肯定不是同一种权限的吧
    所以你最好分开
    写多个拦截器
    总比你这样写100个action要好