在Spring框架中, 你可以直接使用注解@Autowired来注入一个
HttpServletRequest,只要在被spring管理的类中
,然后你就可以从request的headers中获取到来访的请求客户IP地址。
WebUtils.java:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
@Component
public class WebUtils {
private HttpServletRequest request;
@Autowired
public void setRequest(HttpServletRequest request) {
this.request = request;
}
private static String getClientIp() {
String remoteAddr = "";
if (request != null) {
remoteAddr = request.getHeader("X-FORWARDED-FOR");
if (remoteAddr == null || "".equals(remoteAddr)) {
remoteAddr = request.getRemoteAddr();
}
}
return remoteAddr;
}
}
最常使用的地方可能是你的controller中,例如
public GetIpController{
@Autowired
WebUtils webUtils;
@GetMapping("/getIp.do")
public String getClientIP(HttpServletRequest request){
return webUtils.getClientIp();
}
}
http://blog.xqlee.com/article/229.html