// 一个IP,是一个32位无符号的二进制数。故用long的低32表示无符号32位二进制数。
public   long  getIP(InetAddress ip) {
        
byte [] b  =  ip.getAddress();
        
long  l  =  b[ 0 <<   24L   &   0xff000000L   |  b[ 1 <<   16L   &   0xff0000L
                
|  b[ 2 <<   8L   &   0xff00   |  b[ 3 <<   0L   &   0xff ;
        
return  l;
    }
在struts2相应的action中编写如下判断是否用户是校内用户的方法(方法参数中ip1的IP大小应该大于ip2的IP大小):
public   void  isSchoolUser(String ip1, String ip2)  throws  Exception {
         
//  得到用户的IP地址
        String s  =  ServletActionContext.getRequest().getRemoteAddr();
        
long  l  =  getIP(InetAddress.getByName(s));
         
//  设置IP地址段
         long  l1  =  getIP(InetAddress.getByName(ip1));
        
long  l2  =  getIP(InetAddress.getByName(ip2));
         
//  判断用户IP是否处在IP段中
         if  (l  >=  l1  &&  l  <=  l2) {
        ActionContext.getContext().getSession().put(
" isSchoolUser " , " yes " );
        }
    }

上面的方法中用到了InetAddress,所以需要引入java.net.InetAddress包;
接着再编写IP拦截器如下:

public   class  IpAuthorityInterceptor  extends  AbstractInterceptor {
    
public  String intercept(ActionInvocation invocation)  throws  Exception {
        ActionContext context 
=  invocation.getInvocationContext();
        Map
< String, String >  session  =  context.getSession();
        
if  ( " yes " .equals(session.get( " isSchoolUser " ))){
            
return  invocation.invoke();
        } 
else  {
            context.put(
" AuthorityError " " 你是外网用户无法访问此资源 " );
            
return   " error " ;
        }
    }
}


最后当然是配置IP拦截器,让它为你工作吧:

interceptors >
            
< interceptor name = " IpAuthorityInterceptor "
                
class = " web.IpAuthorityInterceptor " >
              
<!-- 此class对应你项目中的IpAuthorityInterceptor的编写位置 -->
            
</ interceptor >
            
< interceptor - stack name = " IpAuthority " >
                
< interceptor - ref name = " defaultStack " ></ interceptor - ref >
                
< interceptor - ref name = " IpAuthorityInterceptor " ></ interceptor - ref >
            
</ interceptor - stack >
        
</ interceptors >


 

此时在你的action中加入相应的配置就可以使用该IP拦截器了。

 



柴油发电机
发电机
柴油机
柴油发电机
13636374743(上海)
13291526067(嘉兴)