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

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

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

    yj10864

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      8 Posts :: 1 Stories :: 9 Comments :: 0 Trackbacks
    基本思想:先將的IP地址轉換成long型的數,然后比較IP的大小來判斷是否處在符合條件的IP地址段。
    IP地址轉化成long型數的算法
     1
     2  // 一個IP,是一個32位無符號的二進制數。故用long的低32表示無符號32位二進制數。  
     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// 一個IP,是一個32位無符號的二進制數。故用long的低32表示無符號32位二進制數。
    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相應的action中編寫如下判斷是否用戶是校內用戶的方法(方法參數中ip1的IP大小應該大于ip2的IP大?。?br />
     1   public void isSchoolUser(String ip1, String ip2) throws Exception {  
     2             // 得到用戶的IP地址  
     3            String s = ServletActionContext.getRequest().getRemoteAddr();  
     4           long l = getIP(InetAddress.getByName(s));  
     5            // 設置IP地址段  
     6           long l1 = getIP(InetAddress.getByName(ip1));  
     7           long l2 = getIP(InetAddress.getByName(ip2));  
     8             // 判斷用戶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         // 得到用戶的IP地址
    16        String s = ServletActionContext.getRequest().getRemoteAddr();
    17        long l = getIP(InetAddress.getByName(s));
    18         // 設置IP地址段
    19        long l1 = getIP(InetAddress.getByName(ip1));
    20        long l2 = getIP(InetAddress.getByName(ip2));
    21         // 判斷用戶IP是否處在IP段中
    22        if (l >= l1 && l <= l2) {
    23        ActionContext.getContext().getSession().put("isSchoolUser","yes");
    24        }

    25    }
    上面的方法中用到了InetAddress,所以需要引入java.net.InetAddress包;
    接著再編寫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""你是外網用戶無法訪問此資源");  
     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""你是外網用戶無法訪問此資源");
    22            return "error";
    23        }

    24    }

    25}
     1<interceptors>  
     2             <interceptor name="IpAuthorityInterceptor"  
     3                  class="web.IpAuthorityInterceptor">  
     4                 <!--此class對應你項目中的IpAuthorityInterceptor的編寫位置-->  
     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對應你項目中的IpAuthorityInterceptor的編寫位置-->
    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 閱讀(1588) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 人与禽交免费网站视频| aa在线免费观看| 日韩国产免费一区二区三区| 亚洲日本精品一区二区| 少妇性饥渴无码A区免费| 亚洲人成无码网站| 国产一级在线免费观看| 亚洲AV无码专区在线亚| 亚州免费一级毛片| 亚洲一级毛片在线观| 成人影片麻豆国产影片免费观看| 国产成人亚洲合集青青草原精品| 色哟哟国产精品免费观看| 免费人成视网站在线观看不卡| 美女被免费网站视频在线| 区三区激情福利综合中文字幕在线一区亚洲视频1| 国产亚洲精品成人久久网站| 亚洲精品偷拍视频免费观看| 好男人资源在线WWW免费| 亚洲成av人在线视| **aaaaa毛片免费| 亚洲免费综合色在线视频| 亚洲国产成人久久一区WWW| 中国一级特黄的片子免费 | 久久亚洲国产成人精品性色| 69视频在线观看高清免费| 久久亚洲国产成人影院| 免费国产高清视频| 日本高清不卡aⅴ免费网站| 亚洲成a人不卡在线观看| 日本19禁啪啪无遮挡免费动图| 特级做a爰片毛片免费看| 亚洲AV美女一区二区三区| 免费国产黄线在线观看| 免费激情网站国产高清第一页 | 一级毛片无遮挡免费全部| 亚洲AV日韩AV高潮无码专区| 国产在线观看麻豆91精品免费| 免费国产在线精品一区| 亚洲精品日韩中文字幕久久久| 国产免费资源高清小视频在线观看|