TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
项目背景:一个Web项目,Tomcat5.5服务器,该项目可以说分两个部分,估且说为A和B。
要求对上面的这个项目进行改动,简单地说,A这部分的网页可以被任何人访问,B这部分仅能被局域网访问。
最早想到的是在Tomcat中进行配置,也确实找到了,但它配置的最小单位是一个项目,而不是对URI进行控制。
接着,就想到用Filter,获取访问者的IP,进行判断,功能测试通过。
判断是否局域网IP的正则如下:
//
(127[.]0[.]0[.]1)|(localhost)|(10[.]d{1,3}[.]d{1,3}[.]d{1,3})|(172[.]((1[6-9])|(2d)|(3[01]))[.]d{1,3}[.]d{1,3})|(192[.]168[.]d{1,3}[.]d{1,3})
//
(127[.]0[.]0[.]1) --------------------------------------- 127.0.0.1 local machine
//
(localhost) --------------------------------------------- localhost local machine
//
(10[.]d{1,3}[.]d{1,3}[.]d{1,3}) ---------------------- Class A 10.0.0.0-10.255.255.255
//
(172[.]((1[6-9])|(2d)|(3[01]))[.]d{1,3}[.]d{1,3}) ---- Class B 172.16.0.0-172.31.255.255
//
(192[.]168[.]d{1,3}[.]d{1,3}) ------------------------- Class C 192.168.0.0-192.168.255.255
private
static
final
String ALLOWABLE_IP_REGEX
=
"
(127[.]0[.]0[.]1)|
"
+
"
(localhost)|
"
+
"
(10[.]d{1,3}[.]d{1,3}[.]d{1,3})|
"
+
"
(172[.]((1[6-9])|(2d)|(3[01]))[.]d{1,3}[.]d{1,3})|
"
+
"
(192[.]168[.]d{1,3}[.]d{1,3})
"
;
该正则适用的情况是传入的字符串必须是一个有效的IP地址,否则上述的表达式则没有意义。
源码下载:http://www.java3z.com/cwbwebhome/dir1/dir2/no |
|