获取客户端计算机的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>