private static Logger logger = LoggerFactory.getLogger(IPUtils.class);
/**
-
获取IP地址
-
使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址
-
如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
*/
public static String getIpAddr(HttpServletRequest request) {
String ip = null;
try {
ip = request.getHeader(“x-forwarded-for”);
if (StringUtils.isEmpty(ip) || “unknown”.equalsIgnoreCase(ip)) {
ip = request.getHeader(“Proxy-Client-IP”);
}
if (StringUtils.isEmpty(ip) || ip.length() == 0 || “unknown”.equalsIgnoreCase(ip)) {
ip = request.getHeader(“WL-Proxy-Client-IP”);
}
if (StringUtils.isEmpty(ip) || “unknown”.equalsIgnoreCase(ip)) {
ip = request.getHeader(“HTTP_CLIENT_IP”);
}
if (StringUtils.isEmpty(ip) || “unknown”.equalsIgnoreCase(ip)) {
ip = request.getHeader(“HTTP_X_FORWARDED_FOR”);
}
if (StringUtils.isEmpty(ip) || “unknown”.equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
} catch (Exception e) {
logger.error("IPUtils ERROR ", e);
}
return ip;
}
}
复制代码
3.声明HttpUtils工具类
代码如下:
public class HttpUtils {
private static final Log log = LogFactory.getLog(HttpUtils.class);
/**
-
获取HttpServletRequest对象
-
@return
*/
public static HttpServletRequest getHttpServletRequest() {
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
}
/**
-
输出信息到浏览器
-
@param response
-
@throws IOException
*/
public static void print(HttpServletResponse response, int code, String msg) throws IOException {
response.setContentType(“application/json; charset=utf-8”);
HttpResult result = HttpResult.error(code, msg);
String json = JSONObject.toJSONString(result);
response.getWriter().print(json);
response.getWriter().flush();
response.getWriter().close();
}
public static String sendpost(String serverUrl, String data) {
StringBuilder responseBuilder = null;
BufferedReader reader = null;
OutputStreamWriter wr = null;
String re=null;
try {
URL url = new URL(serverUrl);
URLConnection e = url.openConnection();
e.setDoOutput(true);
e.setConnectTimeout(5000);
wr = new OutputStreamWriter(e.getOutputStream());
wr.write(data);
wr.flush();
reader = new BufferedReader(new InputStreamReader(e.getInputStream()));
responseBuilder = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null) {
responseBuilder.append(line).append(“\n”);
}
re=responseBuilder.toString();
log.debug(“http请求返回结果:”+re);
} catch (IOException e1) {
log.error(“”, e1);
} finally {
if(wr != null) {
try {
wr.close();
} catch (IOException e2) {
log.error(“close error”, e2);
}
}
if(reader != null) {
try {
reader.close();
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
外链图片转存中…(img-7s9PU4cX-1710918057207)]
[外链图片转存中…(img-4VPc0EkZ-1710918057208)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-2CsB82vZ-1710918057208)]