IP地址获取
来源:互联网 发布:淘宝远程付款靠谱吗 编辑:程序博客网 时间:2024/06/04 05:23
package cn.roderick.aspects;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.core.annotation.Order;import org.springframework.stereotype.Component;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;import java.util.Arrays;import java.util.Enumeration;@Component@Aspect/* * 定义切面执行的优先级,数字越低,优先级越高 * 在切入点之前执行:按order值有小到大的顺序执行 * 在切入点之后执行:按order值由大到小的顺序执行 */@Order(-5)public class AppLogAspect { private Logger logger = LogManager.getLogger(AppLogAspect.class); // 保证每个线程都有一个单独的实例 private ThreadLocal<Long> time = new ThreadLocal<>(); @Pointcut("execution(* com.sbm.controller..*.*(..))") public void pointcut() { } @Before("pointcut()") public void doBefore(JoinPoint joinPoint) { time.set(System.currentTimeMillis()); ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); //记录请求的内容 logger.info("Request URL: " + request.getRequestURL().toString()); logger.info("Request Method: " + request.getMethod()); String ip = request.getRemoteAddr(); if (ip.indexOf(":0") > -1) { ip = IPUtil.getRealIp(); } logger.info("IP: " + ip); logger.info("User-Agent: " + request.getHeader("User-Agent")); logger.info("Class Method: " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName()); logger.info("Cookies: " + request.getCookies()); logger.info("Params: " + Arrays.toString(joinPoint.getArgs())); Enumeration<String> enums = request.getParameterNames(); while (enums.hasMoreElements()) { String paraName = enums.nextElement(); logger.info(paraName + ":" + request.getParameter(paraName)); } } @AfterReturning("pointcut()") public void doAfterReturning(JoinPoint joinPoint) { logger.info("耗时 : " + ((System.currentTimeMillis() - time.get())) + "ms"); logger.info("AppLogAspect.doAfterReturning()"); }}
package cn.roderick.util;import java.net.InetAddress;import java.net.NetworkInterface;import java.util.Enumeration;public class IPUtil { public static String getRealIp() { String realIp = null; InetAddress ip = null; try { if (isWindowsOS()) { // windows ip = InetAddress.getLocalHost(); } else { // Linux ,从网卡中获取ip地址 boolean bFindIP = false; Enumeration<NetworkInterface> netInterfaces = (Enumeration<NetworkInterface>) NetworkInterface.getNetworkInterfaces(); NetworkInterface ni = null; Enumeration<InetAddress> ips = null; while (netInterfaces.hasMoreElements()) { if (bFindIP) { break; } ni = (NetworkInterface) netInterfaces.nextElement(); ips = ni.getInetAddresses(); while (ips.hasMoreElements()) { ip = (InetAddress) ips.nextElement(); if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() //127.开头的都是lookback地址a && ip.getHostAddress().indexOf(":") == -1) { bFindIP = true; break; } } } } } catch (Exception e) { e.printStackTrace(); } if (ip != null) { realIp = ip.getHostAddress(); } return realIp; } /** * 判断当前系统类型 * * @return */ private static boolean isWindowsOS() { boolean isWindowsOS = false; String osName = System.getProperty("os.name"); if (osName.toLowerCase().indexOf("windows") > -1) { isWindowsOS = true; } return isWindowsOS; }}
阅读全文
0 0
- 获取客户端IP地址
- 获取IP地址!
- 获取IP地址
- 获取IP地址
- 获取对方ip地址
- 获取 IP 地址
- 获取客户端ip地址
- asp获取ip地址
- php获取ip 地址
- 获取IP地址
- 获取ip地址
- 获取IP地址
- PHP获取IP地址
- 获取ip地址函数
- 获取ip地址函数
- 获取IP地址
- Java获取IP地址
- 获取IP地址
- 字符编码
- 关于send()函数及EAGIN错误的理解
- html学习7—目录—无序列表
- python3.5的pymysql执行sql提示成功,实际并未成功
- MongoDB实战-复制(Part1复制概述和使用场景)
- IP地址获取
- HTTP中的重定向和请求转发的区别
- PHP超全局数组解析-SERVER
- 依山傍水,云淡风轻-----只是传说
- cas单点登录的开发文档地址
- C/C++中未定义行为
- 10:Hello, World!的大小
- PHP代码规范性检测
- Java中i++,++i 和i= i+ 1的区别