
3 changed files with 91 additions and 0 deletions
@ -0,0 +1,40 @@ |
|||
package com.visual.open.anpr.server.bootstrap.conf; |
|||
|
|||
import com.visual.open.anpr.server.utils.RequestUtil; |
|||
import org.aspectj.lang.ProceedingJoinPoint; |
|||
import org.aspectj.lang.annotation.Around; |
|||
import org.aspectj.lang.annotation.Aspect; |
|||
import org.aspectj.lang.annotation.Pointcut; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.stereotype.Component; |
|||
import org.springframework.web.context.request.RequestContextHolder; |
|||
import org.springframework.web.context.request.ServletRequestAttributes; |
|||
|
|||
@Aspect |
|||
@Component |
|||
public class AspectConfig { |
|||
|
|||
public Logger logger = LoggerFactory.getLogger(getClass()); |
|||
|
|||
@Pointcut(" execution(* com..PlateController.recognition(..))" ) |
|||
public void recognitionPointCut() { |
|||
} |
|||
|
|||
@Around("recognitionPointCut()") |
|||
public Object runTimeStatistics(ProceedingJoinPoint pjp) throws Throwable { |
|||
long startTime = System.currentTimeMillis(); |
|||
String ip = "0.0.0.0"; |
|||
try { |
|||
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); |
|||
ip = RequestUtil.getRemoteHost(sra.getRequest()); |
|||
}catch (Throwable t){} |
|||
|
|||
try { |
|||
return pjp.proceed(); |
|||
}finally { |
|||
long costTime = System.currentTimeMillis() - startTime; |
|||
logger.info("plate recognition cost time : {} ms, from ip: {}", costTime, ip); |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,45 @@ |
|||
package com.visual.open.anpr.server.utils; |
|||
|
|||
import org.apache.commons.lang3.StringUtils; |
|||
|
|||
import javax.servlet.http.HttpServletRequest; |
|||
|
|||
public class RequestUtil { |
|||
|
|||
/** |
|||
* 获取目标主机的ip |
|||
*/ |
|||
public static String getRemoteHost(HttpServletRequest request) { |
|||
String Xip = request.getHeader("X-Real-IP"); |
|||
String XFor = request.getHeader("X-Forwarded-For"); |
|||
if(StringUtils.isNotBlank(XFor) && !"unKnown".equalsIgnoreCase(XFor)) { |
|||
int index = XFor.indexOf(","); |
|||
if(index != -1) { |
|||
return XFor.substring(0, index); |
|||
} else { |
|||
return XFor; |
|||
} |
|||
} |
|||
XFor = Xip; |
|||
if(StringUtils.isNotEmpty(XFor) && !"unKnown".equalsIgnoreCase(XFor)) { |
|||
return XFor; |
|||
} |
|||
if(StringUtils.isBlank(XFor) || "unKnown".equalsIgnoreCase(XFor)) { |
|||
XFor = request.getHeader("Proxy-Client-IP"); |
|||
} |
|||
if(StringUtils.isBlank(XFor) || "unKnown".equalsIgnoreCase(XFor)) { |
|||
XFor = request.getHeader("WL-Proxy-Client-IP"); |
|||
} |
|||
if(StringUtils.isBlank(XFor) || "unKnown".equalsIgnoreCase(XFor)) { |
|||
XFor = request.getHeader("HTTP_CLIENT_IP"); |
|||
} |
|||
if(StringUtils.isBlank(XFor) || "unKnown".equalsIgnoreCase(XFor)) { |
|||
XFor = request.getHeader("HTTP_X_FORWARDED_FOR"); |
|||
} |
|||
if(StringUtils.isBlank(XFor) || "unKnown".equalsIgnoreCase(XFor)) { |
|||
XFor = request.getRemoteAddr(); |
|||
} |
|||
return XFor; |
|||
} |
|||
|
|||
} |
Loading…
Reference in new issue