老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

javaWeb項目加入IP黑白名單

第一步:先在項目src文件下建立一個ipConfig.properties文件,加入黑白名單的ip

公司主營業(yè)務(wù):網(wǎng)站建設(shè)、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出河西免費做網(wǎng)站回饋大家。

1)ipConfig.properties:

#單個IP地址的配置,多個之間用逗號或分好隔開
allowIP=192.168.1.15;127.0.0.1;
#IP地址區(qū)間方式的配置,多個區(qū)間用逗號或分好隔開
allowIPRange=172.20.32.10-172.20.32.11;172.20.32.88-172.20.32.89;
#通配符,多個用逗號或分好隔開
allowIPWildcard=192.168.1.*;

二,建IpFilter,過濾器文件
/**

  • 過濾器 功能:對訪問者IP進行限制訪問
  • @author hht *
  • @serialData 2018-09-28 *
  • @version 1.0 */
    public class IpFilter implements Filter{
    //用來存放初始化后的IP白名單列表對應(yīng)的正則表達式
    private List allowList = new ArrayList();

    @Override
    public void init(FilterConfig arg0) throws ServletException {
    try {
    System.out.println("過濾器IpFilter開始初始化,功能:IP訪問限制");
    initConfig();//在過濾器初始化的時候初始化白名單列表
    } catch (IOException e) {
    e.printStackTrace();
    }
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
    //獲取訪問的IP地址
    String remoteAddr = request.getRemoteAddr();

    //System.out.println("===============" + remoteAddr); 
    //如果allowList為空,則認(rèn)為沒做限制,不為空則檢查是否限制
    if(allowList.size() == 0 || allowList == null) { 
        filterChain.doFilter(request, response);
        } else { 
        Boolean flag = false;
        //訪問標(biāo)志,默認(rèn)為false,限制訪問 //進行逐個檢查 
        for(String regex : allowList){
        if(remoteAddr.matches(regex)){
        //ip沒被限制,正常訪問 
        filterChain.doFilter(request, response); 
        flag = true; 
       //置為true,表示不限制訪問 break; 
        } 
        } if(!flag) {
        //ip被限制,跳到指定頁面 

    // resp.sendRedirect("../noPrivilege.jsp");
    request.getRequestDispatcher("/WEB-INF/page/noPrivilege.jsp").forward(request, response);
    }

        }
    }

    @Override
    public void destroy() {
    System.out.println("過濾器IpFilter結(jié)束。");
    }

    /* 對配置文件進行初始化并校驗 *

    • @author hht *
      • @serialData 2018-09-28 *
      • @throws IOException */

    public void initConfig() throws IOException {
    //將文件轉(zhuǎn)化成流
    /InputStream inputStream = IpFilter.class.getResourceAsStream("./config/ipConfig.properties");
    Properties properties = new Properties(); //通過Properties對象實例加載流
    properties.load(inputStream);
    /
    PropertiesUtil.readProperties("ipConfig.properties");
    //獲取三種配置方式的值
    String allowIP = PropertiesUtil.getProperty("allowIP");
    String allowIPRange = PropertiesUtil.getProperty("allowIPRange");
    String allowIPWildcard = PropertiesUtil.getProperty("allowIPWildcard");

    //對用戶配置的三種方式的IP白名單進行格式校驗 
    if(!validate(allowIP, allowIPRange, allowIPWildcard)) { 
        throw new RuntimeException("配置文件有錯,請檢查!");
        } 
    /* * 將每一種配置方法放置到allowList中 */ 
    //將第一種配置方法放到allowList中 將第一種方式配置的ip地址解析出來,添加到存放IP白名單集合 
    if(null != allowIP && !"".equals(allowIP.trim())) {
        String[] allowIPs = allowIP.split(",|;"); 
        for(String ip : allowIPs) { 
        allowList.add(ip); 

    }
    }
    //將第二種配置方法放到allowList中將第二種方式配置的ip地址解析出來,添加到存放IP白名單集合
    if(null != allowIPRange && !"".equals(allowIPRange.trim())) {
    //先進行每一段的分割
    String[] allowIPRanges = allowIPRange.split(",|;");
    if(allowIPRanges.length > 0) {
    //對每一段進行遍歷
    for(String allowRanges : allowIPRanges) {
    if(allowRanges != null && !"".equals(allowRanges.trim())) {
    //對該段的ip進行解析
    String[] ips = allowRanges.split("-");
    if(ips.length > 0 && ips.length < 3) {
    String from = ips[0];//得到該段的起始ip
    String to = ips[1]; //得到該段的結(jié)束ip
    //獲取該ip段地址的前三段,因為起始和結(jié)束的ip的前三段一樣
    String share = from.substring(0, from.lastIndexOf(".")+1);
    //獲取該ip段的起始ip的最后一段
    int start = Integer.parseInt(from.substring(from.lastIndexOf(".")+1, from.length()));
    //獲取該ip段的結(jié)束ip的最后一段
    int end = Integer.parseInt(to.substring(to.lastIndexOf(".")+1, to.length()));
    for(int i=start; i<=end; i++) {
    String ip = share + String.valueOf(i); allowList.add(ip);
    }
    } else {
    throw new RuntimeException("配置文件有錯,請檢查!");

        } 
    } 

    }
    }
    }

    //將第三種配置方法放到allowList中 將第三種方式配置的ip地址解析為一條一條的正則表達式,添加到存放IP白名單集合,如對此處不明白可以先看后面的備注
    if(allowIPWildcard != null && !"".equals(allowIPWildcard)) {
    //獲取每個含通配符的ip地址
    String[] allowIPWildcards = allowIPWildcard.split(",|;");
    if(allowIPWildcards.length > 0) {
    for(String ip : allowIPWildcards) {
    if(ip.indexOf("") != -1) {
    //對
    進行替換
    ip = ip.replaceAll("\*", "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)");
    allowList.add(ip);
    } else {
    throw new RuntimeException("配置文件有錯,請檢查!");
    }
    }
    }

}
//打印輸出allowList
for(String str : allowList) {
System.out.println(str);
}
}

/** * 對配置文件進行校驗 
  * @author hht * 
 * @serialData 2018-09-28 *
 *  @param allowIP 
 *   @param allowIPRange 
 *   @param allowIPWildcard 
 * @return */ 
public Boolean validate(String allowIP, String allowIPRange, String allowIPWildcard) {
    Boolean result = false; 
    //IP地址每一段的正則 
    String regx = "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)"; 
    //整個ip的正則
    String ipRegx = regx + "\\." + regx + "\\."+ regx + "\\." + regx; 
    //對第一種方式進行校驗 
    Pattern pattern = Pattern.compile("("+ipRegx+")|("+ipRegx+"(,|;))*"); 
    if(this.isNullorMatches(allowIP, pattern)){ 
        result = true; //匹配成功
        } else { 
        result = false; 

}
//對第二種方式進行校驗
pattern = Pattern.compile("("+ipRegx+")\-("+ipRegx+")|" + "(("+ipRegx+")\-("+ipRegx+")(,|;))");
if(this.isNullorMatches(allowIPRange, pattern)){
result = true; //匹配成功
} else {
result = false;
}
//對第三種方式進行校驗
pattern = Pattern.compile("("+regx+"\."+ regx+"\."+regx+"\."+ "\)|" + "("+regx+"\."+regx+"\."+regx+"\."+ "\(,|;))
");
if(this.isNullorMatches(allowIPWildcard, pattern)){
result = true; //匹配成功
} else {
result = false;
}
return result;
}

/** * 進行正則匹配 * 
 * @author hht * 
 * @serialData 2018-09-28 *
 *  @param allow * @return */ 
public Boolean isNullorMatches(String allow, Pattern pattern) {
    //如果為空,說明用戶沒添加該項,不做處理
    if(allow == null || "".equals(allow.trim())) { return true; } else {
    //在最后面沒有,或;的給添上 
    if(!allow.endsWith(";") && !allow.endsWith(",")) { 
    allow += ";";
    }
    //如果匹配,則返回true
  if(pattern.matcher(allow).matches()) { 
    return true; 
    } 
} 
return false; 

}

}

三,在項目中web.xml配置文件中加入過濾配置



IPFilter
xxxx.IpFilter


IPFilter
/*


文章名稱:javaWeb項目加入IP黑白名單
本文地址:http://www.xueling.net.cn/article/gegcij.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 88888888国产一区二区 | 熟妇熟女乱妇乱女网站 | 精品国内自产拍在线观看视频 | 寂寞人妻瑜伽被教练日 | 日本视频三区 | 五月婷婷久久综合 | 99re6.在线观看免费视频 | 一二区av | 国产精品不卡二区三区综合 | 99日韩| 亚州毛片 | 免费av网址在线观看 | 国产乱码久久久久久 | 日韩欧美一区二区免费 | 黄频在线观看国产免费 | 日本高清不卡的在线 | 日韩三级国产 | 美女视频黄A片免费观看软件 | 午夜三级理论在线观看 | 日韩久久精品网 | 蜜桃麻豆| 97免费人做人爱在线看视频 | 欧美成人精品三级网站 | 国产成人无码免费视频79 | 亚洲精品久久AV无码蜜桃第1集 | 真实国产乱子伦视频 | 不卡无在线一区二区三区观 | 日韩国产在线一区 | 中文字幕亚洲无线 | 毛豆日产精品卡2卡3卡4卡免费 | 亚洲理论片在线观看 | av在线观看网站 | 国产视频一区二区三区在线观看 | 国产午夜高清 | 一道本在线观看视频 | 丰满多毛少妇做爰视频爽爽和R | 香港a毛片免费全部播放 | 成人AV免费视频 | 免费无码毛片一区二区A片 www.豆花福利视频 | 国产在线观看一区 | 国产乱子影视频上线免费观看 |