JavaWeb中如何通过Request对象获取客户端IP地址
生活随笔
收集整理的這篇文章主要介紹了
JavaWeb中如何通过Request对象获取客户端IP地址
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
提供一個獲取ip地址的工具類
package com.leo.util; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import javax.servlet.http.HttpServletRequest; import java.io.IOException; /*** @ClassName: HttpUtil* @Description: 獲取請求主機IP地址,如果通過代理進來,則透過防火墻獲取真實IP地址;* @Author: leo825* @Date: 2020-06-04 23:02* @Version: 1.0*/ public class HttpUtil {//日志文件private static final Logger logger = LogManager.getLogger();//獲取真實IP地址public final static String getIpAddr(HttpServletRequest request) throws IOException {// 獲取請求主機IP地址,如果通過代理進來,則透過防火墻獲取真實IP地址String ip = request.getHeader("X-Forwarded-For");if (logger.isInfoEnabled()) {logger.info("X-Forwarded-For - String ip=" + ip);}//如果以上獲取的的ip是空的或者是unknownif (ip == null || ip.trim().length() == 0 || "unknown".equalsIgnoreCase(ip)) {if (ip == null || ip.trim().length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");if (logger.isInfoEnabled()) {logger.info("Proxy-Client-IP - String ip=" + ip);}}if (ip == null || ip.trim().length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");if (logger.isInfoEnabled()) {logger.info("WL-Proxy-Client-IP - String ip=" + ip);}}if (ip == null || ip.trim().length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("HTTP_CLIENT_IP");if (logger.isInfoEnabled()) {logger.info("HTTP_CLIENT_IP - String ip=" + ip);}}if (ip == null || ip.trim().length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("HTTP_X_FORWARDED_FOR");if (logger.isInfoEnabled()) {logger.info("HTTP_X_FORWARDED_FOR - String ip=" + ip);}}if (ip == null || ip.trim().length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();if (logger.isInfoEnabled()) {logger.info("getRemoteAddr - String ip=" + ip);}}} else if (ip.trim().length() > 15) {//如果獲取到多個IPString[] ips = ip.split(",");for (int index = 0; index < ips.length; index++) {String strIp = ips[index];if (ip != null && ip.trim().length() != 0 && !("unknown".equalsIgnoreCase(strIp))) {ip = strIp;break;}}}return ip;} }總結
以上是生活随笔為你收集整理的JavaWeb中如何通过Request对象获取客户端IP地址的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaWeb项目中如何扩展一个Requ
- 下一篇: java中的“”、“|”、“^”、“~”