可以使用servlet中的过滤器功能过滤非法用户,也就是非法用户在地址栏中直接输入某个页面的时候会直接跳到登录页,而在Struts2中的拦截器好像都是拦截一些Action请求,而这种直接在地址栏中输入的情况怎么拦截呢,请教?

解决方案 »

  1.   

    你开发中,从所的请求都是以.action结尾的,有时候登陆界面不是,直接是个jsp
    其他你所使用的jsp页面都放在web-inf目录下,那么任何人就不能直接访问jsp页面了
      

  2.   

    你试了吗?
    拦截器是可以拦截的呀
    你在web.xml中配置的应该是这样的吧<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    应该是所有的请求全要经过struts2的,而如果你要是配置的拦截器,在请求执行前,如果你不在拦截器中指定排除,那么就一定会被拦截,此时,你就可以向在servlet中的过滤器校验那样,对用户的合法性进行校验了~~
      

  3.   

    从写FilterDispatcher的doFilter方法你好像用的是AbstractInterceptor吧
      

  4.   

    获取action名字,有些除了登陆
    其它都拦截
      

  5.   

    写个类继承自AbstractIntercepter  并且实现里边的方法就可以了。
      

  6.   

    拦截器我都已经写好,如下
    public String intercept(ActionInvocation arg0) throws Exception {
    // TODO Auto-generated method stub
    ActionContext ctx=arg0.getInvocationContext();
    Map session=ctx.getSession();
    String user=(String)session.get("user");
    if(user!=null&&user.equals("ydm"))
    {
    return arg0.invoke();
    }
    else
    {
    return Action.LOGIN;
    }
    }
    我的意思,首先登陆的页面你不能拦截,只有没有经过登陆而直接在地址栏中输入的时候,该如何拦截,该如何配置
    假如现在有一个普通的show.jsp页面,如果没有登录而直接在地址栏中输入访问的,我应该不让他访问,应该怎样配置我自定义好的拦截器
      

  7.   

    没人告诉你用了struts2之后就不能用过滤器了而且拦截器是根据namespace来拦截的 没理由拦截不到请求 
      

  8.   

    你的这个方法是AbstractInterceptor的。它只有你执行.action请求时才起作用。要对.jsp拦截,要不你就从写FilterDispatcher的doFilter方法 要不就实现javax.servlet.Filter,自己在web.xml中加上要过虑的jsp
      

  9.   

    奥,是这样的呀,也就是说Struts2中的拦截器不能向过滤器那样拦截jsp页面吗
      

  10.   


      谁告诉你用了struts2以后就不能用过滤器了???
      谁告诉你楼主是要拦截action请求来着??别人要的是拦截jsp页面~看清楚了