package com.zhangsx.util.web;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Web相关的工具方法。
* 提供获取用户的实际IP地址、获取请求中指定名称的Cookie、失效掉指定名称的Cookie。
*
* @version 1.00 2010-1-15
* @since 1.5
* @author ZhangShixi
*/
public class WebUtil {
/**
* 获取实际用户的ip访问地址。
* @param request Http请求。
* @return 客户端ip地址。
*/
public static String getIpAddress(HttpServletRequest request) {
if (request == null) {
return null;
}
String ips = request.getHeader("x-forwarded-for");
if (ips == null || ips.isEmpty() || "unknown".equalsIgnoreCase(ips)) {
ips = request.getHeader("Proxy-Client-IP");
}
if (ips == null || ips.isEmpty() || "unknown".equalsIgnoreCase(ips)) {
ips = request.getHeader("WL-Proxy-Client-IP");
}
if (ips == null || ips.isEmpty() || "unknown".equalsIgnoreCase(ips)) {
ips = request.getRemoteAddr();
}
String[] ipArray = ips.split(",");
String clientIp = null;
for (String ip : ipArray) {
if (!"unknown".equalsIgnoreCase(ip)) {
clientIp = ip;
break;
}
}
return clientIp;
}
/**
* 获取请求中指定的名称的Cookie。
* @param request Http请求。
* @param name cookie名称。
* @return 如果请求中有相应名称的Cookie,则返回相应的Cookie实例;否则返回null。
*/
public static Cookie getCookie(HttpServletRequest request, String name) {
if (request == null || name == null || name.isEmpty()) {
return null;
}
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
if (cookie != null && name.equals(cookie.getName())) {
return cookie;
}
}
}
return null;
}
/**
* 失效掉指定名称的Cookie。
* @param request 请求。
* @param response 相应。
* @param name cookie名称。
*/
public static void invalidCookie(
HttpServletRequest request,HttpServletResponse response, String name) {
if (request == null || response == null || name == null || name.isEmpty()) {
return;
}
Cookie cookie = getCookie(request, name);
if (cookie != null) {
cookie.setMaxAge(0);
cookie.setPath(request.getContextPath());
response.addCookie(cookie);
}
}
}
Web操作工具类
最新推荐文章于 2023-03-11 19:57:27 发布