获取客户端计算机的ip地址的方法
获取客户端计算机的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
blog
java使用欧几里得算法计算比例的方法
数据结构与算法
1721
java使用欧几里得算法计算比例的方法 publicstaticvoidmain(String[]args){ System.out.println(bili(2,6
ofc
计算机网络的性能指标
official
929
、往返时间RTT 在计算机网络中,往返时间RTT(Round-TripTime)也是一个重要的性能指标。这是因为在许情况下,互联网上的信息不仅仅单方向传输而是双向交互的。因此,我们有时很需要知道双向
ofc
计算机硬件的基本组成
official
1012
行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。有了存储器,计算机才有记忆功能,才能保证正常工作。按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和
数据结构与算法
10506
问题:如上图的一个链表,如何判断一个链表中是否存在环,以及如何求出环的入口以及何如求出链表的长度。方案一:利用hash表首先准备一个hash表如hashMap等,然后从链表头部遍历链表,每次遍历一个
blog
java计算百分比的方法
工具
5331
publicstaticvoidmain(String[]args){ inta=3;intb=9;NumberFormatnumberFormat=NumberFormat.getInstance();numberFormat.setMaximumFractionDigits(2);Stringresult=numberFormat.format((float)a/(float)b*100);S
ofc
计算机网络数据通讯的基础知识
official
862
《计算机网络第七版谢希仁》
[TOC]一、数据通信系统的模型 一个数据通信系统可划分为三大部分,即源系统(或发送端、发送方)、传输系统(或传输网络)和目的系统(或接收端`接收方)。
源系统一般
ofc
计算机系统的层次结构
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
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。