- 浏览: 604364 次
文章分类
- 全部博客 (411)
- 常用工具 (21)
- 喜好 (14)
- 英语 (3)
- java (51)
- ext (4)
- css (44)
- php (34)
- window (7)
- jquery (21)
- js (31)
- struts (4)
- tomcat (1)
- struts2 (11)
- 网络 (4)
- c# (7)
- linux (27)
- oracle (15)
- tag标签 (5)
- 生成静态页面 (6)
- sql (12)
- hibernate (13)
- DesignPattern (3)
- spring (2)
- flex (17)
- excel应用 (1)
- 报表 (2)
- 业界 (2)
- 数据建模 (1)
- 平板 (1)
- ppt (1)
- rich (1)
最新评论
-
youngdze:
受教了,谢谢!
十步解决php utf-8编码 -
DiLiya:
感谢你的讲解;帮了大忙了!
解决-innerHTML无法在TBODY中使用 -
eppen:
强的没话说。帮了大忙。感谢goby2008 ,感谢google ...
解决-innerHTML无法在TBODY中使用 -
cxs4808:
rr
flex 设计模式 -
liuxingvsyou:
3个jQuery弹出窗口插件
IP地址段的过滤
昨天接到领导指示,要对地市的IP地址进行过滤,晕了,过滤啥呀,不过想归想,那还得做不是,呵呵
开始想在服务器<Tomcat>上整一下呢,仔细一看不行,附Tomcat过滤IP方法:
限制ip,限制主机访问:
如果想禁止指定的ip或者主机名来拒绝某些机器访问,或者指定某些机器来访问。
也支持分别按Engine, Host, or Context,进行以下配置:
<Context path="/examples" ...> ...
<Valve className="org.apache.catalina.valves.RemoteHostValve"
allow="*.mycompany.com,www.yourcompany.com"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*"/>
</Context>
参考:
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/config/context.html
没辙,继续...
因为要过滤的IP有七十二组<(58.87.96.0 58.57.121.255),(219.147.0.0 219.147.0.211)>想到用正则表达式,因为本人对正则表达式这东西,实在不精,呵呵,也就没敢用,呵呵
最终在于朋友交流后,采取如下形式解决的:
一、新建一xml配置文件,将要过滤的IP段写入;
二、新建一Filter,完成过滤要求
代码如下所示:
IP.XML
<?xml version="1.0" encoding="UTF-8"?>
<root id="allow">
<group>
<start>122.6.192.0</start>
<end>122.6.255.255</end>
</group>
<group>
<start>219.146.208.0</start>
<end>219.146.215.255</end>
</group>
<group>
<start>222.174.224.0</start>
<end>222.174.255.255</end>
</group>
</root>
Filter如下所示:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import javax.xml.parsers.*;
public class FilterServlet extends HttpServlet implements Filter {
private Document doc=null;
private FilterConfig filterConfig;
//Handle the passed-in FilterConfig
private String encoding = "GBK";
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
//Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
HttpServletResponse httpResp = null;
HttpServletRequest httpReq = null;
try {
String reqip = request.getRemoteHost();
if(null != reqip){
reqip = reqip.replace('.','_');
}
String[] temp = reqip.split("_");
int[] ip = new int[temp.length];
for(int i=0;i<temp.length;i++){
ip[i] = new Integer(temp[i]).intValue();
}
if (response instanceof HttpServletResponse) {
httpReq = (HttpServletRequest)request;
httpResp = (HttpServletResponse)response;
if(!viewXml(httpReq.getRealPath("/")+"/WEB-INF/ip.xml",ip)){
httpResp.sendRedirect(" http://welcome.sd.vnet.cn/
");
}
filterChain.doFilter(request, response);
}
}
catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
}
catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}catch(Exception e){
filterConfig.getServletContext().log(e.getMessage());
}
}
/**
* 验证请求IP是否符合要求
* @param xmlFile
* @return
* @throws Exception
*/
public boolean viewXml(String xmlFile,int[] ip) throws Exception {
int[] test = ip;
boolean flag = true;
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
doc=db.parse(new File(xmlFile));
Element root = doc.getDocumentElement();
NodeList list = root.getElementsByTagName("group");
for (int i=0; i < list.getLength() ; i++) {
Element element = (Element)list.item(i);
NodeList titleid = element.getElementsByTagName("start");
Element idElement = (Element)titleid.item(0);
String ip1 = idElement.getFirstChild().getNodeValue();
ip1 = ip1.replace('.','_');
String[] ip1s = ip1.trim().split("_");
Integer[] ipl1 = new Integer[ip1s.length];
for(int a=0;a<ip1s.length;a++){
ipl1[a] = new Integer(ip1s[a]);
}
NodeList titleList = element.getElementsByTagName("end");
Element titleElement = (Element)titleList.item(0);
String ip2 = titleElement.getFirstChild().getNodeValue();
ip2 = ip2.replace('.','_');
String[] ip2s = ip2.trim().split("_");
Integer[] ipl2 = new Integer[ip2s.length];
for(int b=0;b<ip2s.length;b++){
ipl2[b] = new Integer(ip2s[b]);
}
long test_value = test[0]*255*255*255+test[1]*255*255+test[2]*255+test[3];
long ip1_value = ipl1[0]*255*255*255+ipl1[1]*255*255+ipl1[2]*255+ipl1[3];
long ip2_value = ipl2[0]*255*255*255+ipl2[1]*255*255+ipl2[2]*255+ipl2[3];
if(test_value >= ip1_value && test_value <= ip2_value){
return true;
}
}
return false;
}
public void destroy() {
filterConfig = null;
encoding = null;
}
}
WEB.XML如下:
<filter>
<filter-name>filterservlet</filter-name>
<filter-class>com.lvke.web.qcbst.util.common.FilterServlet</filter-class>
</filter>
<filter-mapping>
<filter-name>filterservlet</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
希望能给用到的朋友减少一下负担,呵呵
发表评论
-
eclipse 复制粘贴时很慢(转)
2012-08-20 22:06 1721Window > Preferences > Ja ... -
java compiler level does not match the version of the installed java project
2012-06-13 22:26 740java compiler level does not ma ... -
Sql 取当天或当月的记录
2011-05-16 15:04 1756Sql 取当天或当月的记录 今天晚上加班,遇到要把数据库中的 ... -
eclipse快捷键大全
2010-11-13 16:38 7021. 常用快捷键(1)Ctrl+Space ... -
eclipse教程
2010-10-28 10:59 786http://www.vogella.de/eclipse.h ... -
Dialup
2010-10-14 23:42 1084package ch2.util; import jav ... -
o00000000
2010-10-13 17:22 878package com.goby.editor; imp ... -
Java Map 集合类简介(转)
2010-10-07 14:40 935了解最常用的集合类型之一 Map 的基础知识以及如何针对您 ... -
深入研究java.lang.ThreadLocal类(转)
2010-10-06 14:54 520深入研究java.lang.ThreadLocal类 ... -
通过ajax访问后台----参数通过post方式传递
2010-10-03 16:44 1406通过ajax访问后台----参数通过post方式传递1,前台页 ... -
java设计模式
2010-09-10 15:27 660java设计模式 -
JSP 获取当前URL方法
2010-08-09 17:01 2091方法一: request.getHeader(" ... -
解决java/jsp乱码的一种转换方法
2010-07-25 16:28 8791.jsp的contentType 的设置 ... -
org.apache.commons.fileupload.DiskFileUpload
2010-07-22 00:23 12521.setSizeMax方法setSizeMax方法用于设置请 ... -
JSP读写文本文件
2010-07-13 14:28 2435JSP读写文本文件 ... -
JAVA调用MYSQL存储过程
2010-06-21 23:58 1831JAVA调用MYSQL存储过程 工程视图: 代码清单 ... -
Java实现文件复制
2010-05-11 15:53 1004import java.io.FileInputStream ... -
switch...case语句怎样接字符串啊???
2010-04-01 16:45 1839参考: <script language=& ... -
flex 网站
2010-02-06 01:00 653http://www.sumopaint.com/app/ ... -
将汉字转化为汉语拼音的小工具
2010-01-25 21:20 1245网上乱转,偶然看到一个很有意思的小工具,名字叫pinyin4j ...
相关推荐
String remoteHost=request.getRemoteHost(); log.info("Request from host:"+remoteHost); //判断客户计算机IP地址是否合法,以127开头的表示不合法,禁止访问
"IP地址段的过滤,限制IP,限制主机访问"这个主题涉及到如何通过编程手段实现对网络访问的精细化管理,尤其是在Java Web环境中。以下是一些相关的知识点: 1. **IP地址与主机名**:IP地址是互联网上设备的唯一标识...
中国大陆IP过滤器-Java IP文件路径: 项目的resources/china_ip目录下 使用ChinaIPRecognizer类即可 更新记录 201911月30日更新 原文链接: 概述 本篇讲解如何快速判断IPV4地址是否在大陆境内的IP地址。 中国IPV4的...
本项目名为“IP地址管理器”,采用Java语言进行实现,主要关注于IP地址的过滤、开通和关闭功能。这涉及到网络编程、数据结构、多线程以及可能的数据库操作等多个知识点。 首先,我们需要理解IP地址的基本概念。IP...
每一行可能代表一个IP地址段,列可能包括起始IP、结束IP和对应的国家代码等信息。 2. **LICENSE-CC-BY-SA-4.0.TXT**:这是关于授权的文件,表明IP2Location数据库遵循Creative Commons Attribution-ShareAlike 4.0 ...
2. **创建IPv6Bean对象**:为每个查询的IPv6地址创建一个`IPv6Bean`实例,存储IP地址本身以及后续查询得到的地理位置信息。 3. **执行查询**:在`IpV6Seeker`类中,实现一个方法,接受IPv6地址作为参数,使用ZX库的...
这样,任何尝试从被拒绝的IP地址访问应用的请求都将被重定向到`rejectedIPError.jsp`页面。 总的来说,Filter在Java Web开发中扮演着至关重要的角色,它可以用来处理各种任务,包括但不限于防止中文乱码、控制...
首先,`IPEntry.java`可能是用于存储IP地址信息的数据模型类,可能包含了如IP地址(IP)、地理位置(location)等属性,并提供了相应的getter和setter方法。这样的类有助于将IP信息结构化,方便后续处理。 其次,`...
接着,"IMGFilter.java"可能是一个图像过滤或处理类,虽然它不是直接与IP地址解析相关的,但可能是为了在显示地理位置信息时,配合地图图片进行处理。例如,它可能包含了一些图像处理算法,如缩放、裁剪或者添加标注...
5. **地理定位**:通过IP地址识别访问者的地理位置,分析全球用户分布。 ### 四、系统实现技术 1. **Servlet技术**:虽然JSP主要负责视图层,但后台处理逻辑通常由Servlet完成。Servlet处理请求,更新数据库,并将...
此外,考虑到安全问题,应当注意过滤潜在的伪造IP地址。 总结起来,"登录IP BS Java"涉及的关键知识点包括: 1. BS架构的理解 2. Java Web开发中的Servlet和HttpServletRequest对象 3. 获取客户端IP的HTTP头字段,...
通过遍历并检查每个地址是否是回环地址(即127.0.0.1或::1),我们可以过滤出实际的网络接口IP地址。 值得注意的是,上述代码可能因网络环境的不同而产生不同的结果。例如,某些网络环境可能不支持IPv6,或者某些...
### 获取本手机的IP地址代码知识点详解 #### 一、知识点概述 在移动应用开发过程中,有时我们需要获取设备(如手机)的IP地址,以便进行网络通信或调试等操作。本文将详细介绍如何通过Java代码来实现这一功能,并...
2. **设置过滤器**:你可以设置一个 BPF(Berkeley Packet Filter)表达式,只捕获满足特定条件的数据包,如只关注特定 IP 地址或协议。 3. **捕获数据包**:开始监听网络接口,当有数据包到达时,会触发回调函数,...
在这个方法中,我们可以获得HttpServletRequest和HttpServletResponse对象,从而可以获取用户的ip地址、请求的url等信息。 在我们的示例代码中,我们使用了ConcurrentHashMap来存储被限制的ip信息。在doFilter方法...
4. **内容过滤**:企业或学校可能会根据IP地址库来限制某些地区的访问,或者实施特定的网络策略。 5. **应用开发**:移动应用开发者可以利用IP地址库实现基于位置的服务,比如显示附近的商家或提供定制化内容。 ...
这段代码通过创建一个UDP套接字并尝试连接到公共DNS服务器,然后获取自身绑定的IP地址。 2. **Java实现**: 在Java中,我们可以使用`java.net.NetworkInterface`和`java.net.InetAddress`类来获取本地IP。 ```...
本文将深入探讨如何在Spring Security中实现IP过滤器,以便控制访问应用的客户端IP地址。 首先,我们需要理解Spring Security的基本架构。它是一个多层次的组件模型,其中包括认证、授权和会话管理等核心功能。在...
本文将深入探讨如何利用Java编程语言实现对IP和TCP协议数据包的拦截与分析,以便获取IP地址的详细信息。 首先,我们需要理解IP(Internet Protocol)和TCP(Transmission Control Protocol)的基本概念。IP协议负责...
`InetAddress`是Java的网络编程基础类,提供了获取IP地址的方法。在Android中,可以使用`InetAddress.getLocalHost()`获取本地主机的IP地址,但通常这只会返回localhost(127.0.0.1),并不适合我们获取上网的IP...