<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大小):
     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 閱讀(1584) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲Av永久无码精品黑人 | 亚洲AV无码久久精品成人 | 免费黄网站在线观看| 亚洲国产午夜中文字幕精品黄网站 | 国产免费A∨在线播放| 亚洲中文字幕无码爆乳av中文| 午夜不卡AV免费| 亚洲美女高清一区二区三区 | 9277手机在线视频观看免费| 亚洲视频免费在线观看| 18女人腿打开无遮掩免费| 亚洲狠狠ady亚洲精品大秀| 免费a级毛片高清视频不卡 | 国产又粗又猛又爽又黄的免费视频| 亚洲爆乳少妇无码激情| 成人亚洲综合天堂| 中国内地毛片免费高清| 久久亚洲高清观看| 中国人xxxxx69免费视频| 97se亚洲国产综合自在线| 国产极品粉嫩泬免费观看 | 在线亚洲精品自拍| 久久aa毛片免费播放嗯啊| 亚洲免费二区三区| 国产又长又粗又爽免费视频| 大地资源中文在线观看免费版| 亚洲卡一卡2卡三卡4卡无卡三| AV免费网址在线观看| 三级片免费观看久久| 亚洲天天做日日做天天欢毛片| 好男人看视频免费2019中文| 曰批全过程免费视频观看免费软件| 水蜜桃亚洲一二三四在线 | 伊人亚洲综合青草青草久热| 91视频免费网址| 亚洲Aⅴ在线无码播放毛片一线天| 亚洲一区二区三区影院 | 四虎国产精品免费久久影院| 七色永久性tv网站免费看| 国产成人精品日本亚洲直接| 国产午夜亚洲不卡|