获取客户端计算机的ip地址的方法

硅谷探秘者 3118 0 0

获取客户端计算机的ip地址的方法

1.过滤器

package cn.com.dzqc.interceptor;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * 获取客户端计算机的ip地址的方法
 * @author Administrator
 *
 */
public class IpFilter implements Filter {
	/**
	 * 销毁方法
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * 过滤方法
	 */
	public void doFilter(ServletRequest sreq, ServletResponse sresp, FilterChain chain)
			throws IOException, ServletException {
		if (!(sreq instanceof HttpServletRequest) || !(sresp instanceof HttpServletResponse)) {
			throw new ServletException("OncePerRequestFilter just supports HTTP requests");
		}
		HttpServletRequest httpRequest = (HttpServletRequest) sreq;
		HttpSession session = httpRequest.getSession();
		
		if(session.isNew()) {
			System.out.println("第一次进入");
			String ip=getIpAddr(httpRequest);
			System.out.println(ip);
		}
		chain.doFilter(sreq, sresp);
	}
	
	/**
	 * 初始化方法
	 */
	public void init(FilterConfig config) throws ServletException {
		// TODO Auto-generated method stub
	}
	/***
	 * 获取客户端计算机的ip地址
	 * @param request
	 * @return
	 */
	public String getIpAddr(HttpServletRequest request) {
       String ip = request.getHeader("x-forwarded-for");
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
           ip = request.getHeader("Proxy-Client-IP");
       }
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
           ip = request.getHeader("WL-Proxy-Client-IP");
       }
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
           ip = request.getRemoteAddr();
       }
       return ip;
	}
	
}

通过HttpSession 对象的isNew方法判断session是不是新创建的



2.web.xml文件的配置

        <filter>
		<filter-name>WmsFilter</filter-name>
		<filter-class>cn.com.dzqc.interceptor.IpFilter</filter-class>
		<async-supported>true</async-supported>
	</filter>
	<filter-mapping>
		<filter-name>WmsFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>



评论区
请写下您的评论...
暂无评论...
猜你喜欢
weblog 2047 在ngxin代理配置文件location块中添加如下配置proxy_set_headerHost$host; proxy_set_headerX-Real-IP$remote_addr
数据结构与算法 1721 java使用欧几里得比例 publicstaticvoidmain(String[]args){ System.out.println(bili(2,6
official 929 、往返时间RTT  在网络中,往返时间RTT(Round-TripTime)也是一个重要性能指标。这是因为在许情况下,互联网上信息不仅仅单向传输而是双向交互。因此,我们有时很需要知道双向
official 1012 行结果和最终运行结果都保存在存储器中。它根据控制器指定位置存入和出信息。有了存储器,才有记忆功能,才能保证正常工作。按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和
数据结构与算法 10506 问题:如上图一个链表,如何判断一个链表中是否存在环,以及如何求出环入口以及何如求出链表长度。案一:利用hash表首先准备一个hash表如hashMap等,然后从链表头部遍历链表,每次遍历一个
工具 5331 publicstaticvoidmain(String[]args){ inta=3;intb=9;NumberFormatnumberFormat=NumberFormat.getInstance();numberFormat.setMaximumFractionDigits(2);Stringresult=numberFormat.format((float)a/(float)b*100);S
official 862 网络第七版谢希仁》 [TOC]一、数据通信系统模型  一个数据通信系统可划分为三大部分,即源系统(或发送、发送)、传输系统(或传输网络)和目系统(或接收`接收)。 源系统一般
official 1552 组成原理》系统层次结构系统层次结构概念,目前比较一致系统层次结构如下图,其中左边是层次结构中各层次名字,右边是对应于不同层某种编程语言表现形式。系统层次
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1 2024-08  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript 加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。