package com.dsh.utils;
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
/**
|
* @author: lihong .
|
* @email: lihongvst@foxmail.com .
|
* @createTime: 2019/6/27 9:32 .
|
* @describe: servlet工具.
|
**/
|
public final class ServletUtils {
|
|
/**
|
* 获取请求对象.
|
* @return
|
*/
|
public static HttpServletRequest getHttpServletRequest(){
|
HttpServletRequest request = getReqyuestAttributes().getRequest();
|
return request;
|
}
|
|
/**
|
* 获取响应对象.
|
* @return
|
*/
|
public static HttpServletResponse getHttpServletResponse(){
|
HttpServletResponse response = getReqyuestAttributes().getResponse();
|
return response;
|
}
|
|
/**
|
* 获取请求参数.
|
* @return
|
*/
|
private static ServletRequestAttributes getReqyuestAttributes(){
|
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
return requestAttributes;
|
}
|
|
/**
|
* 获取真实ip
|
* @return
|
*/
|
public static String getIpAddr() {
|
HttpServletRequest request = getHttpServletRequest();
|
String ip = request.getHeader("x-forwarded-for");
|
System.out.println("x-forwarded-for ip: " + ip);
|
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
|
// 多次反向代理后会有多个ip值,第一个ip才是真实ip
|
if( ip.indexOf(",")!=-1 ){
|
ip = ip.split(",")[0];
|
}
|
}
|
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.getHeader("HTTP_CLIENT_IP");
|
}
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
|
}
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
ip = request.getHeader("X-Real-IP");
|
}
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
ip = request.getRemoteAddr();
|
}
|
return ip;
|
}
|
|
}
|