日期:2014-05-17  浏览次数:20567 次

Struts2如何过滤WEB-INF下面的JSP文件,求助!!!!
Struts2如何过滤WEB-INF下面的JSP文件,我写了一个过滤器,用来过滤未登录的用户,web.xml配置如下:
XML code

<filter>
        <filter-name>userFilter</filter-name>
        <filter-class>com.gotomycloud.filter.UserFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>userFilter</filter-name>
        <url-pattern>/WEB-INF/access_controlpc/*</url-pattern>
        <url-pattern>/WEB-INF/account/*</url-pattern>
        <url-pattern>/WEB-INF/client/*</url-pattern>
        <url-pattern>/WEB-INF/controlledpc/*</url-pattern>
        <url-pattern>/WEB-INF/CSK300/*</url-pattern>
        <url-pattern>/WEB-INF/order/*</url-pattern>
        <url-pattern>/WEB-INF/product/*</url-pattern>
        <url-pattern>/WEB-INF/remote_switchPC/*</url-pattern>
    </filter-mapping>

可是我在filter里面打印一句话,可一直没有打印,说明没有对上面的路径进行过滤,请问web.xml文件要如何进行配置,如果这种方法不行,那还有其它什么方法吗,求助。。。。

------解决方案--------------------
url-pattern是你在浏览器地址栏输入的url而不是文件的物理路径。
------解决方案--------------------
可以把请求到这些页面的action name写到mapping里试试
------解决方案--------------------
1 web-inf 目录下 的文件,是不允许客户端直接访问的。
2 如果是struts2进行 forword的话,是不会经过filter的。
3 filter 是拦截客户端请求的。


你明白么?
------解决方案--------------------
WEB-INF下的文件必须要进行action跳转,从struts.xml中配置的resutl进行加载,默认是不允许定位WEN-INF下的所有文件的
------解决方案--------------------
<url-pattern>/WEB-INF/access_controlpc/*</url-pattern>

这个是跟你浏览器地址栏上的url进行比较的,地址栏上不会显示/WEB-INF/把,一般只显示项目名称,

分别试一下以下4种。。

<url-pattern>/项目名/access_controlpc/*</url-pattern>
<url-pattern>项目名/access_controlpc/*</url-pattern>
<url-pattern>/access_controlpc/*</url-pattern>
<url-pattern>access_controlpc/*</url-pattern>