<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yj10864

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      8 Posts :: 1 Stories :: 9 Comments :: 0 Trackbacks
    基本思想:先將的IP地址轉(zhuǎn)換成long型的數(shù),然后比較IP的大小來(lái)判斷是否處在符合條件的IP地址段。
    IP地址轉(zhuǎn)化成long型數(shù)的算法
     1
     2  // 一個(gè)IP,是一個(gè)32位無(wú)符號(hào)的二進(jìn)制數(shù)。故用long的低32表示無(wú)符號(hào)32位二進(jìn)制數(shù)。  
     3    public long getIP(InetAddress ip) {  
     4           byte[] b = ip.getAddress();  
     5          long l = b[0<< 24L & 0xff000000L | b[1<< 16L & 0xff0000L  
     6                 | b[2<< 8L & 0xff00 | b[3<< 0L & 0xff;  
     7           return l;  
     8       }
      
     9
    10// 一個(gè)IP,是一個(gè)32位無(wú)符號(hào)的二進(jìn)制數(shù)。故用long的低32表示無(wú)符號(hào)32位二進(jìn)制數(shù)。
    11public long getIP(InetAddress ip) {
    12        byte[] b = ip.getAddress();
    13        long l = b[0<< 24L & 0xff000000L | b[1<< 16L & 0xff0000L
    14                | b[2<< 8L & 0xff00 | b[3<< 0L & 0xff;
    15        return l;
    16    }
    在struts2相應(yīng)的action中編寫(xiě)如下判斷是否用戶(hù)是校內(nèi)用戶(hù)的方法(方法參數(shù)中ip1的IP大小應(yīng)該大于ip2的IP大小):
     1   public void isSchoolUser(String ip1, String ip2) throws Exception {  
     2             // 得到用戶(hù)的IP地址  
     3            String s = ServletActionContext.getRequest().getRemoteAddr();  
     4           long l = getIP(InetAddress.getByName(s));  
     5            // 設(shè)置IP地址段  
     6           long l1 = getIP(InetAddress.getByName(ip1));  
     7           long l2 = getIP(InetAddress.getByName(ip2));  
     8             // 判斷用戶(hù)IP是否處在IP段中  
     9            if (l >= l1 && l <= l2) {  
    10           ActionContext.getContext().getSession().put("isSchoolUser","yes");  
    11           }
      
    12       }
      
    13
    14public void isSchoolUser(String ip1, String ip2) throws Exception {
    15         // 得到用戶(hù)的IP地址
    16        String s = ServletActionContext.getRequest().getRemoteAddr();
    17        long l = getIP(InetAddress.getByName(s));
    18         // 設(shè)置IP地址段
    19        long l1 = getIP(InetAddress.getByName(ip1));
    20        long l2 = getIP(InetAddress.getByName(ip2));
    21         // 判斷用戶(hù)IP是否處在IP段中
    22        if (l >= l1 && l <= l2) {
    23        ActionContext.getContext().getSession().put("isSchoolUser","yes");
    24        }

    25    }
    上面的方法中用到了InetAddress,所以需要引入java.net.InetAddress包;
    接著再編寫(xiě)IP攔截器如下:
     1    public class IpAuthorityInterceptor extends AbstractInterceptor {  
     2        public String intercept(ActionInvocation invocation) throws Exception {  
     3            ActionContext context = invocation.getInvocationContext();  
     4            Map<String, String> session = context.getSession();  
     5            if ("yes".equals(session.get("isSchoolUser"))){  
     6                return invocation.invoke();  
     7            }
     else {  
     8                context.put("AuthorityError""你是外網(wǎng)用戶(hù)無(wú)法訪(fǎng)問(wèn)此資源");  
     9                return "error";  
    10           }
      
    11       }
      
    12   }
      
    13
    14public class IpAuthorityInterceptor extends AbstractInterceptor {
    15    public String intercept(ActionInvocation invocation) throws Exception {
    16        ActionContext context = invocation.getInvocationContext();
    17        Map<String, String> session = context.getSession();
    18        if ("yes".equals(session.get("isSchoolUser"))){
    19            return invocation.invoke();
    20        }
     else {
    21            context.put("AuthorityError""你是外網(wǎng)用戶(hù)無(wú)法訪(fǎng)問(wèn)此資源");
    22            return "error";
    23        }

    24    }

    25}
     1<interceptors>  
     2             <interceptor name="IpAuthorityInterceptor"  
     3                  class="web.IpAuthorityInterceptor">  
     4                 <!--此class對(duì)應(yīng)你項(xiàng)目中的IpAuthorityInterceptor的編寫(xiě)位置-->  
     5               </interceptor>  
     6               <interceptor-stack name="IpAuthority">  
     7                   <interceptor-ref name="defaultStack"></interceptor-ref>  
     8                  <interceptor-ref name="IpAuthorityInterceptor"></interceptor-ref>  
     9               </interceptor-stack>  
    10           </interceptors>  
    11
    12<interceptors>
    13            <interceptor name="IpAuthorityInterceptor"
    14                class="web.IpAuthorityInterceptor">
    15              <!--此class對(duì)應(yīng)你項(xiàng)目中的IpAuthorityInterceptor的編寫(xiě)位置-->
    16            </interceptor>
    17            <interceptor-stack name="IpAuthority">
    18                <interceptor-ref name="defaultStack"></interceptor-ref>
    19                <interceptor-ref name="IpAuthorityInterceptor"></interceptor-ref>
    20            </interceptor-stack>
    21        </interceptors>
    posted on 2009-10-26 10:43 jerry yang 閱讀(1584) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲国产情侣一区二区三区| 天天看免费高清影视| 精品一区二区三区免费观看 | 国产日本一线在线观看免费| 日本免费在线观看| 久久久久久久久久国产精品免费 | 亚洲乱色伦图片区小说| 亚洲国产日韩综合久久精品| 亚洲乱码一二三四五六区| 亚洲人成网站看在线播放| 欧洲 亚洲 国产图片综合| 在线亚洲午夜片AV大片| 久久亚洲精品国产亚洲老地址 | 亚洲日本中文字幕| 久久精品a亚洲国产v高清不卡| 亚洲人成电影福利在线播放 | 亚洲日韩欧洲乱码AV夜夜摸 | 在线看片无码永久免费aⅴ | 国产日韩成人亚洲丁香婷婷| 卡1卡2卡3卡4卡5免费视频| 最近免费中文字幕4| 中文无码成人免费视频在线观看 | 亚洲无限乱码一二三四区| 亚洲福利在线观看| 国产AV无码专区亚洲Av| 亚洲伊人久久成综合人影院| 亚洲av无码乱码在线观看野外| 免费观看的毛片手机视频| 国产精品四虎在线观看免费| 免费看国产一级特黄aa大片| 亚洲国产成人久久综合区| 国产亚洲精品无码专区| 亚洲精品午夜无码电影网| 亚洲女同成av人片在线观看 | 性短视频在线观看免费不卡流畅| 青青草a免费线观a| 在线免费不卡视频| 国产一区二区三区无码免费| 国产乱子伦精品免费女| 国产伦精品一区二区三区免费下载 | 免费看搞黄视频网站|