版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、$9b.kh&z#E,b6y0java 服务器端的例子类:海峡博客po9rTb海峡博客#K4A4_;Abimport java.io.IOException;a;i2;rO0import java.util.Date;0x c)Q2W9vmplD*0海峡博客7Jj7SQ$bSimport javax.servlet.Filter;Bn;kdw:D0import javax.servlet.FilterChain;海峡博客l3IUxcWimport javax.servlet.FilterConfig;Kqcr nl!X0import javax.servlet.ServletException
2、;海峡博客ebSB-DVimport javax.servlet.ServletRequest;7dx;Z:h2ab O0import javax.servlet.ServletResponse;RHIa?m-;c7W0import javax.servlet.http.HttpServletRequest;海峡博客j:vXWP:eo-d feVp*Np:L3l7qYp0import mons.logging.Log;海峡博客9Nkn%$yximport mons.logging.LogFactory;MB5L 8L ucg) U0import org.springframework.web.
3、context.WebApplicationContext;l/|u$iDiv$EY1a0import org.springframework.web.context.support.WebApplicationContextUtils;tU%R.PS9gu0(n%gD y-x$Ofk0 海峡博客Zf)QR$XjE_海峡博客 z/vJJhpublic class IpFilter implements Filter 海峡博客/i+Z!e7zln9H4H(BZ private final Log logger = LogFactory.getLog(this.getClass();VA 2n+n
4、6I#Dh0 private static String forward = null;L9L d.u$CE0 private String ipString = null;&wr0Z;d0 private ICheckAdminLogin CheckAdminLoginService = null;海峡博客g*s6C-PW |tH:MkT#k /private ICheckAdminLogin CheckAdminLoginService= new CheckAdminLogin();海峡博客D%Hg!N;m private FilterConfig filterConfig = null;
5、 7_*mqp(q2y&l&e0 /*_1Z?TU.V0 * Filter init?|E)eH5I&t5z0 */海峡博客T)F/m#E2st6u;|/A public void init(FilterConfig filterConfig) eem$gCYE0 this.filterConfig=filterConfig;L8B$dMH!oL$U0 /ipString = filterConfig.getInitParameter(allowIp);海峡博客sh5OB,Yf /System.out.println(1、获取初始化IP:+ipString);海峡博客/&|A#ke%Xuv*V
6、 this.forward = filterConfig.getInitParameter(forward);海峡博客)V vSz1_lUxq 海峡博客U:h4M-WUas3JIN%UQ3N4KU kmf0 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException (t;O%Ix6i*LS0 WebApplicationContext wac = WebApplicationContextUtils.
7、getWebApplicationContext(filterConfig.getServletContext();海峡博客7pffY&a1vg7K this.CheckAdminLoginService = (ICheckAdminLogin) wac.getBean(checkAdminDAO);+J/k;S-lx(!D9K0/ String ipAddr = getIpAddr(HttpServletRequest)request);海峡博客n I(Pi4MJ?/ String ipAddrTrim = Tools.checkNull(ipAddr);海峡博客 8-S;m6iz/ Sys
8、tem.out.println(2、获取当前登录人员IP:+ipAddr);#c&_#srE-/I0/ System.out.println(1、获取IP:+ipString);海峡博客;ydV7c/6N/ int i=ipAddrTrim.lastIndexOf(.);L B-x tYBl&qKj0/ int r=ipString.lastIndexOf(.) ;海峡博客nu!GF4K/ String relPscope=ipString.substring(0,r);/过滤lP段;v.p?.V_ $Oa4t)xdow0/ int intRtn = CheckAdminLoginServic
9、e.checkAdminLoginIp(ipAddr);海峡博客QK/IY%Hx)x/ System.out.println(判断之后返回的结果:+intRtn);9G;N&f;X|BBoy#of.C0/ if(relPscope.equals(ipAddrTrim.substring(0,i) 海峡博客.n _w$h/ request.setAttribute(error, 禁止访问的IP地址!);/ /登录错误海峡博客w&nM qp Tu/ request.getRequestDispatcher(forward).forward(request, response);/重定向到admin
10、login.jsp页面TQ%j6eD0/ return;L*n&gB0H8y#?6I0/ .j*C;a+o i6o%P0/ elseNX!IUOr0/ chain.doFilter(request, response);海峡博客:iB.t:5Nb.zM/ 海峡博客M*V*dlEn,rBJ 海峡博客2W.g9HJ0p/k1B String ipAddr = getIpAddr(HttpServletRequest)request);海峡博客)j(m:!?j&T.UORw v Fq.iuq7Eq:Ckz|0 System.out.println(2、获取当前登录人员IP:+ipAddr+-登录时间
11、:+new Date();海峡博客O:l 1g:R int intRtn = CheckAdminLoginService.checkAdminLoginIp(ipAddr);Z+DMJ!C$C+q!w0 /System.out.println(判断之后返回的结果:+intRtn);x;U7v-EC0 if(intRtn = 0 )/返回 0 不允许访问7s I)W.f+bTL0 request.setAttribute(error, 限制访问的IP地址!);/ /登录错误海峡博客g*J!EBW7y!zS request.getRequestDispatcher(forward).forwar
12、d(request, response);/重定向到adminlogin.jsp页面海峡博客9|2NtH)L.t return;海峡博客Yp3O*T7g$S:|&Oa else if(intRtn = 1)/进入后台的登录页面海峡博客 *SKd7SNY2Z chain.doFilter(request, response);海峡博客H;u jj(Y 海峡博客 6Mb&COm 海峡博客7Os6jf(p海峡博客5+o2M!z9wbh |vX 海峡博客QYg_*;K /*海峡博客HX4y_(xg3dan * Filter clean-up海峡博客3w+m6W7 */0SM#Pl-e:VT%ng;J0
13、 public void destroy() 海峡博客d3hG-|Bub /Not much to do.6S0CMk0 3/c yP_Rd#?)eqsM0 海峡博客V2A|$Qf_$GCF#PH)S2t0/*O g*A0uv1y0 * 获取客户端IP地址 */kE3ut+V/NFt0海峡博客pR:k.Xj Vu protected String getIpAddr(HttpServletRequest request) 海峡博客V T-jp/ String ip = request.getHeader(x-forwarded-for); 8E lL*u0/ if(ip = null | ip
14、.length() = 0 | unknown.equalsIgnoreCase(ip) 海峡博客6L(g8 JVB e7E/ ip = request.getHeader(Proxy-Client-IP); 海峡博客1w+s&h(Dv/ u$q/wf1DJX6Xe.kU0/ if(ip = null | ip.length() = 0 | unknown.equalsIgnoreCase(ip) lT0z4NU.z#m0/ ip = request.getHeader(WL-Proxy-Client-IP); Bg#L:dPB4i;P,Y0/ 海峡博客Y4g0_1Dn/ if(ip = nu
15、ll | ip.length() = 0 | unknown.equalsIgnoreCase(ip) 海峡博客d#U)fL0j/j6n-iH/ ip = request.getRemoteAddr(); 2G7c+PCZHi)X0/ 海峡博客D k&U G1zr|7r7/ return ip; ,pL#6ZM&q0 G8ajgjFG0 if (request.getHeader(x-forwarded-for) = null) whh:KWL6_0 return request.getRemoteAddr(); 海峡博客-GJs bC 海峡博客E9_|Su return request.ge
16、tHeader(x-forwarded-for); 4I!?&o;l;Lo0 海峡博客q8JL9m(46C 海峡博客0K-T;v1_8?)_#ISu海峡博客6U5,T! Kws KSWiUo09J%PYhLgs0海峡博客d:9o2Hg1qUu.I由于是SPRING容器,在filter里面server会给它注入一个FilterConfig对象,在filter里可以使用FilterConfig的filterConfig.getServletContext()方法获取servlet上下文,所以在filter里获取spring的上下文方法如下:0A| i4aDl0.IjXt(O0return WebA
17、pplicationContextUtils.getWebApplicationContext(filterConfig.getServletContext(); jV:K e6&ph2R$z0海峡博客%XlAVY接下来 就是web.xml里的配置了:海峡博客d8WuZ0d |&E*m;AU$x-xo0 海峡博客fsd!htJ&w RemoteHostFilterA cm,v:K0o)jU0 com.*.*.common.web.filters.IpFilter海峡博客3vvT*Bj-Sp? !- 海峡博客(iA7GH,O7v-O allowIp3W)|N/oIXR%K0BR0 172.20.
18、10.2海峡博客 u pXy9K p&D -海峡博客t!MkD)L eg6X U i2JmG0AlX WN0 forward海峡博客$J*P k#Elas /adminAuthorizedError.do)Q2I*BC5D7l&a0 Ut)#Hc-E)yP3G0 iXgX&N/EI8X0 QaAy&L70 RemoteHostFilterN(vtR5#b1S0 /info/admin/*海峡博客JqN-S.R7q7lbK GcI*O+B9v0 海峡博客Q*E.|OB V:Y 海峡博客,qLK1W$N RemoteHostFilter4h$d7qB?,+JC0 /adminindex/*海峡博客
19、dvDKbba Rn#wd3CK&Foe:up0 7yG0d4Q7I0java web限制访问的ip地址上一篇 / 下一篇 2010-04-27 13:35:05 / 个人分类:专业技术查看( 5636 )/ 评论( 4 ) / 评分( 20 / 0 )$9b.kh&z#E,b6y0java 服务器端的例子类:海峡博客po9rTb海峡博客#K4A4_;Abimport java.io.IOException;a;i2;rO0import java.util.Date;0x c)Q2W9vmplD*0海峡博客7Jj7SQ$bSimport javax.servlet.Filter;Bn;kdw:
20、D0import javax.servlet.FilterChain;海峡博客l3IUxcWimport javax.servlet.FilterConfig;Kqcr nl!X0import javax.servlet.ServletException;海峡博客ebSB-DVimport javax.servlet.ServletRequest;7dx;Z:h2ab O0import javax.servlet.ServletResponse;RHIa?m-;c7W0import javax.servlet.http.HttpServletRequest;海峡博客j:vXWP:eo-d fe
21、Vp*Np:L3l7qYp0import mons.logging.Log;海峡博客9Nkn%$yximport mons.logging.LogFactory;MB5L 8L ucg) U0import org.springframework.web.context.WebApplicationContext;l/|u$iDiv$EY1a0import org.springframework.web.context.support.WebApplicationContextUtils;tU%R.PS9gu0(n%gD y-x$Ofk0 海峡博客Zf)QR$XjE_海峡博客 z/vJJhpub
22、lic class IpFilter implements Filter 海峡博客/i+Z!e7zln9H4H(BZ private final Log logger = LogFactory.getLog(this.getClass();VA 2n+n6I#Dh0 private static String forward = null;L9L d.u$CE0 private String ipString = null;&wr0Z;d0 private ICheckAdminLogin CheckAdminLoginService = null;海峡博客g*s6C-PW |tH:MkT#k
23、 /private ICheckAdminLogin CheckAdminLoginService= new CheckAdminLogin();海峡博客D%Hg!N;m private FilterConfig filterConfig = null; 7_*mqp(q2y&l&e0 /*_1Z?TU.V0 * Filter init?|E)eH5I&t5z0 */海峡博客T)F/m#E2st6u;|/A public void init(FilterConfig filterConfig) eem$gCYE0 this.filterConfig=filterConfig;L8B$dMH!o
24、L$U0 /ipString = filterConfig.getInitParameter(allowIp);海峡博客sh5OB,Yf /System.out.println(1、获取初始化IP:+ipString);海峡博客/&|A#ke%Xuv*V this.forward = filterConfig.getInitParameter(forward);海峡博客)V vSz1_lUxq 海峡博客U:h4M-WUas3JIN%UQ3N4KU kmf0 public void doFilter(ServletRequest request, ServletResponse response
25、, FilterChain chain) throws ServletException, IOException (t;O%Ix6i*LS0 WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(filterConfig.getServletContext();海峡博客7pffY&a1vg7K this.CheckAdminLoginService = (ICheckAdminLogin) wac.getBean(checkAdminDAO);+J/k;S-lx(!D9K0/ Strin
26、g ipAddr = getIpAddr(HttpServletRequest)request);海峡博客n I(Pi4MJ?/ String ipAddrTrim = Tools.checkNull(ipAddr);海峡博客 8-S;m6iz/ System.out.println(2、获取当前登录人员IP:+ipAddr);#c&_#srE-/I0/ System.out.println(1、获取IP:+ipString);海峡博客;ydV7c/6N/ int i=ipAddrTrim.lastIndexOf(.);L B-x tYBl&qKj0/ int r=ipString.lastI
27、ndexOf(.) ;海峡博客nu!GF4K/ String relPscope=ipString.substring(0,r);/过滤lP段;v.p?.V_ $Oa4t)xdow0/ int intRtn = CheckAdminLoginService.checkAdminLoginIp(ipAddr);海峡博客QK/IY%Hx)x/ System.out.println(判断之后返回的结果:+intRtn);9G;N&f;X|BBoy#of.C0/ if(relPscope.equals(ipAddrTrim.substring(0,i) 海峡博客.n _w$h/ request.set
28、Attribute(error, 禁止访问的IP地址!);/ /登录错误海峡博客w&nM qp Tu/ request.getRequestDispatcher(forward).forward(request, response);/重定向到adminlogin.jsp页面TQ%j6eD0/ return;L*n&gB0H8y#?6I0/ .j*C;a+o i6o%P0/ elseNX!IUOr0/ chain.doFilter(request, response);海峡博客:iB.t:5Nb.zM/ 海峡博客M*V*dlEn,rBJ 海峡博客2W.g9HJ0p/k1B String ipA
29、ddr = getIpAddr(HttpServletRequest)request);海峡博客)j(m:!?j&T.UORw v Fq.iuq7Eq:Ckz|0 System.out.println(2、获取当前登录人员IP:+ipAddr+-登录时间:+new Date();海峡博客O:l 1g:R int intRtn = CheckAdminLoginService.checkAdminLoginIp(ipAddr);Z+DMJ!C$C+q!w0 /System.out.println(判断之后返回的结果:+intRtn);x;U7v-EC0 if(intRtn = 0 )/返回 0
30、不允许访问7s I)W.f+bTL0 request.setAttribute(error, 限制访问的IP地址!);/ /登录错误海峡博客g*J!EBW7y!zS request.getRequestDispatcher(forward).forward(request, response);/重定向到adminlogin.jsp页面海峡博客9|2NtH)L.t return;海峡博客Yp3O*T7g$S:|&Oa else if(intRtn = 1)/进入后台的登录页面海峡博客 *SKd7SNY2Z chain.doFilter(request, response);海峡博客H;u jj
31、(Y 海峡博客 6Mb&COm 海峡博客7Os6jf(p海峡博客5+o2M!z9wbh |vX 海峡博客QYg_*;K /*海峡博客HX4y_(xg3dan * Filter clean-up海峡博客3w+m6W7 */0SM#Pl-e:VT%ng;J0 public void destroy() 海峡博客d3hG-|Bub /Not much to do.6S0CMk0 3/c yP_Rd#?)eqsM0 海峡博客V2A|$Qf_$GCF#PH)S2t0/*O g*A0uv1y0 * 获取客户端IP地址 */kE3ut+V/NFt0海峡博客pR:k.Xj Vu protected Strin
32、g getIpAddr(HttpServletRequest request) 海峡博客V T-jp/ String ip = request.getHeader(x-forwarded-for); 8E lL*u0/ if(ip = null | ip.length() = 0 | unknown.equalsIgnoreCase(ip) 海峡博客6L(g8 JVB e7E/ ip = request.getHeader(Proxy-Client-IP); 海峡博客1w+s&h(Dv/ u$q/wf1DJX6Xe.kU0/ if(ip = null | ip.length() = 0 | unknown.equalsIgnoreCase(ip) lT0z4NU.z#m0/ ip = request.getHeader(WL-Proxy-Client-IP); Bg#L:dPB4i;P,Y0/ 海峡博客Y4g0_1Dn/ if(ip = null | ip.length() = 0 | unknown.equalsIgnoreCase(ip) 海峡博客d#U)fL0j/j6n-iH/ ip = request.getRemoteAddr(); 2G7c+PCZHi)X0/ 海峡博客D k&U G1zr|7r7/ r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度烟草职业技能鉴定真题及参考答案详解(完整版)
- 2024-2025学年度医师定期考核模拟试题及参考答案详解(基础题)
- 2024-2025学年反射疗法师大赛理论过关检测试卷带答案详解(A卷)
- 2024-2025学年度环卫垃圾处理工考试黑钻押题附答案详解
- 2024-2025学年度注册公用设备工程师每日一练试卷附参考答案详解【培优】
- 2024-2025学年度注册核安全工程师每日一练试卷及答案详解【基础+提升】
- 电力公司智能电网建设标准手册
- 2024-2025学年度六盘水幼儿师范高等专科学校单招数学全真模拟模拟题及参考答案详解【突破训练】
- 2024-2025学年度四川现代职业学院单招《语文》常考点试卷附参考答案详解(考试直接用)
- 2026中国银行招聘笔试题及答案
- 2023版思想道德与法治专题1 担当复兴大任 成就时代新人
- 钢结构工程监理实施细则
- 地下室顶板行车与堆载验算与加固方案(完整资料)
- 婚礼当天详细流程
- GB/T 8629-2001纺织品试验用家庭洗涤和干燥程序
- GB 20904-2007水平定向钻机安全操作规程
- 土方平衡方案
- 毛笔字教学讲解课件
- 系统解剖8动脉
- 大班课件《有序排队》
- 新苏教版小学科学一年级下册教案(全套)
评论
0/150
提交评论