用spring + struts2 做开发,
用struts2的filter可以获取到所有的struts2的请求。
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
但是现在有个问题,怎么能够把.jsp这样的请求给过滤掉?因为现在做的权限判断是针对 当前登录后的用户及用户权限和action及action中的方法这四个来控制的。但是现在发现个问题,就是  如果直接输入 http://*/*/*/*.jsp之后也能够直接跳转到jsp页面,有时候因为页面中需要一些初始化数据,而这样的方式进入的话是没有这些初始化数据的。所以想问一下大家平时开发的时候系统中怎么来控制这样的请求的?  希望尽量能够用filter或者spring的一些机制能够处理掉,不希望每个页面都添加一个 权限判断的 java代码。

解决方案 »

  1.   

    希望尽量能够用filter或者spring的一些机制能够处理掉,不希望每个页面都添加一个 权限判断的 java代码。1.如果你用 filter的话,先想会有多少个后缀,然后直接用那些后缀得了
    或者
    2.你用 spring security 来做访问的控制
    spring security 做访问控制的话,不需要你在页面上写代码,而且与业务完全解耦
      

  2.   

    把jsp放到web-info下,这样外面就不可以通过浏览器直接访问了
    这个和filter没多大关系的、
      

  3.   


    呵呵 好办法,以前一直没这么干过,但是这样的话页面提示是404,而我想提示别的信息比如 直接访问jsp页面的时候,如果用户没有登录,那么提示 ==》 用户未登录!有可能是因为权限不够,但是如果有人知道了页面的请求连接,那么他用自己的账号登录之后,如果直接这样访问 。jsp ,我能够提示 权限不够
      

  4.   

    写一个filter,用filter过滤。当前用户请求页面可以通过servlet.getRequestPath()获取,如果是.jsp等结尾的,转到你的提示页面。另外,权限建议使用ralasafe(www.ralasafe.org/zh)绝对比spring security好用。配置文件非常少,只有数据源和用户信息2个配置文件。具体到你说的权限,主要是功能权限。你可以看看这里面的UrlAclFilter和LoginFiltre是否满足你的需求:http://www.ralasafe.org/zh/guide/reference/safe.html
      

  5.   

    我在一分钟前发的帖子  那框架里面的C控制器  就是为你这个问题 设计的
    http://topic.csdn.net/u/20100816/14/c4a1a328-5dbf-4c90-b9d8-a55adafada83.html?90655
      

  6.   

    其实方有好多,可以写个过滤器,在请求路径的后面加个特殊字符,比如说:
    list_xx.do 然后可以根据xx来判断xx可以保存在session中,这样就可以判断了
      

  7.   

    直接在页面上做判断,把用户存入session中,如果session为空则response.sendRedirect("XXXX")。如果想把跳转页面的url隐藏住,就用dispacher
      

  8.   

    呵呵 谢谢各位了 昨天用 Filter + struts2的AbstractInterceptor 结合给解决了。