因为struts(不论2还是1)不支持,或者说我没找到拦截的方法
所以自己写了一个阻断器,用于阻断特定的网页,或者放过特定的网页访问

下面的附上使用指南
interdictor.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC 
    "-//JavaZone//DTD Interdictor Configuration 1.0//EN"
    "interdictor.dtd"
>
<interdictors>

    
<!-- 
        该锁将控制是否使用该interdict
        并且该值只能使用boolean型值
        当该值为true时,就进行全部放过操作
        当该值为false时,就进行阻断操作
     
-->
    
<lock-name>interdictLock</lock-name>
    
    
<!-- 
        配置debug输出
         注意,
    
-->
    
<debug>True</debug>
    
<!-- 阻断器配置  -->
    
<interdictor>

        
<!-- 
            设置阻断器,阻断所有以.jsp为后缀的请求
            请注意,必须使用.jsp而不是jsp因为当你拦截servlet的时候
            你可以输入servlet作为后缀,所以本拦截机制不会给你默认添加.后缀
           
-->
        
<interdict-suffix>.jsp</interdict-suffix>
        
        
<exclude-requests>
            
<request>homepage.jsp</request>
            
<request>login.jsp</request>
            
<request>register.jsp</request>
            
<request>index.jsp</request>
<!--            <request>error/error.jsp</request>-->
            
<request>template/viewNotePlate.jsp</request>
        
</exclude-requests>
        
<!--
            exclude-requests和interdict-requests两个请求关系详细解释:
            1.当阻断请求列表存在,而放过列表不存在时,将只阻断阻断请求列表中元素,而放过其余请求
            2.当阻断请求列表不存在,而放过请求列表存在时,将只放过放过请求列表中元素,而阻断所有阻断元素
            3.当两个列表都存在的时候,将阻断阻断请求列表中元素,并以放过请求列表中元素为更高权限
            例如,两个列表中都有error.jsp,那么该请求将被放过
            4.当两个列表都不存在时
            注意:这里的所有url都是相对地址,都是危机basecontext之后的所有部分
        
-->

        
<result-page>/error/error.jsp</result-page>
        
<!-- 
            阻断之后跳转的页面
            这里是用于重定向的url
         
-->
    
</interdictor>
    
</interdictors>

interdictor.dtd
<!--interdictor must is no less than one-->
<!ELEMENT interdictors (
    lock-name?,
    debug,
    interdictor+
)
>

<!--interdictor element-->
<!ELEMENT interdictor (
    interdict-suffix,
    interdict-requests?,
    exclude-requests?,
    result-page
)
>

<!-- the suffix of the request name-->
<!ELEMENT interdict-suffix (#PCDATA)>
<!--interdict request list-->
<!ELEMENT interdict-requests (
    request+
)
>
<!--excluded request list-->
<!ELEMENT exclude-requests (
    request+
)
>

<!--request element-->
<!ELEMENT request (#PCDATA)>

<!--the when interdict it will redirect to-->
<!ELEMENT result-page (#PCDATA)>

<!--this name is use in session to control interdictor-->
<!ELEMENT lock-name (#PCDATA)>

<!-- if debug is true ,application will print the infomation on the console -->
<!ELEMENT debug (#PCDATA)>
然后是web.xml
<!-- 过滤加载器,防止非法.jsp后缀访问 -->
    
<!-- 除了配置之外,添加自己的 -->
    
<filter>
        
<filter-name>interdictorFilter</filter-name>
        
<filter-class>com.javazone.interdict.InterdictFilter</filter-class>
        
<init-param>
            
<param-name>configFileLocation</param-name>
            
<param-value>Interdictor.xml</param-value>
        
</init-param>
    
</filter>
    
<filter-mapping>
        
<filter-name>interdictorFilter</filter-name>
        
<url-pattern>/*</url-pattern>
    
</filter-mapping>


说明:
1.lock-name是用于session级的锁操作,如果你想在程序里使用重定向,而又不希望下一个定位的网页被拦截掉,需要使用到该锁,具体操作如下
session.put("interdictLock", Boolean.TRUE);
2.注意url的书写正确性,否则会出现不可预知的错误
其他的。。。大家一起找bug,如果找到了就告诉我
这里是下载地址:
3.该阻断器filter配置一定要写到所有filter配置前面,否则起不到拦截的作用
http://www.cnitblog.com/Files/zcy860511/javazone.interdictor.rar