package com.ruoyi.common.utils;
|
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import javax.servlet.http.Cookie;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpSession;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
|
/**
|
* web工具类
|
*
|
* @author liheng
|
*/
|
public final class WebUtils extends org.springframework.web.util.WebUtils {
|
|
/**
|
* 当前请求
|
*/
|
public static HttpServletRequest request() {
|
return contextHolder() == null ? null : contextHolder().getRequest();
|
}
|
|
/**
|
* 当前响应
|
*/
|
public static HttpServletResponse response() {
|
return contextHolder() == null ? null : contextHolder().getResponse();
|
}
|
|
/**
|
* 当前session
|
*/
|
public static HttpSession session() {
|
return request() == null ? null : request().getSession();
|
}
|
|
/**
|
* 当前ServletRequest
|
*/
|
public static ServletRequestAttributes contextHolder() {
|
return (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
}
|
|
/**
|
* 判断请求是否为 AJAX
|
*
|
* @param request 当前请求
|
*/
|
public static boolean isAjax(HttpServletRequest request) {
|
return "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));
|
}
|
|
/**
|
* 获取操作系统,浏览器及浏览器版本信息
|
*
|
* @param request
|
* @return
|
*/
|
public static Map<String, String> getOsAndBrowserInfo(HttpServletRequest request) {
|
Map<String, String> map = new HashMap<>(2);
|
String browserDetails = request.getHeader("User-Agent");
|
String userAgent = browserDetails;
|
String user = userAgent.toLowerCase();
|
|
String os = "";
|
String browser = "";
|
//=================OS Info=======================
|
if (userAgent.toLowerCase().contains("windows")) {
|
os = "Windows";
|
} else if (userAgent.toLowerCase().contains("mac")) {
|
os = "Mac";
|
} else if (userAgent.toLowerCase().contains("x11")) {
|
os = "Unix";
|
} else if (userAgent.toLowerCase().contains("android")) {
|
os = "Android";
|
} else if (userAgent.toLowerCase().contains("iphone")) {
|
os = "IPhone";
|
} else {
|
os = "UnKnown, More-Info: " + userAgent;
|
}
|
//===============Browser===========================
|
if (user.contains("edge")) {
|
browser = (userAgent.substring(userAgent.indexOf("Edge")).split(" ")[0]).replace("/", "-");
|
} else if (user.contains("msie")) {
|
String substring = userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0];
|
browser = substring.split(" ")[0].replace("MSIE", "IE") + "-" + substring.split(" ")[1];
|
} else if (user.contains("safari") && user.contains("version")) {
|
browser = (userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0]
|
+ "-" + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
|
} else if (user.contains("opr") || user.contains("opera")) {
|
if (user.contains("opera")) {
|
browser = (userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split("/")[0]
|
+ "-" + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
|
} else if (user.contains("opr")) {
|
browser = ((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-"))
|
.replace("OPR", "Opera");
|
}
|
} else if (user.contains("chrome")) {
|
browser = (userAgent.substring(userAgent.indexOf("Chrome")).split(" ")[0]).replace("/", "-");
|
} else if ((user.contains("mozilla/7.0")) || (user.contains("netscape6")) ||
|
(user.contains("mozilla/4.7")) || (user.contains("mozilla/4.78")) ||
|
(user.contains("mozilla/4.08")) || (user.contains("mozilla/3"))) {
|
browser = "Netscape-?";
|
} else if (user.contains("firefox")) {
|
browser = (userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-");
|
} else if (user.contains("rv")) {
|
String IEVersion = (userAgent.substring(userAgent.indexOf("rv")).split(" ")[0]).replace("rv:", "-");
|
browser = "IE" + IEVersion.substring(0, IEVersion.length() - 1);
|
} else {
|
browser = "UnKnown, More-Info: " + userAgent;
|
}
|
map.put("os", os);
|
map.put("browser", browser);
|
return map;
|
}
|
|
/**
|
* 读取cookie
|
*
|
* @param name cookie name
|
* @return cookie value
|
*/
|
public String getCookieVal(String name) {
|
return getCookieVal(request(), name);
|
}
|
|
/**
|
* 读取cookie
|
*
|
* @param request HttpServletRequest
|
* @param name cookie name
|
* @return cookie value
|
*/
|
public String getCookieVal(HttpServletRequest request, String name) {
|
Cookie cookie = getCookie(request, name);
|
return cookie != null ? cookie.getValue() : null;
|
}
|
|
/**
|
* 清除 某个指定的cookie
|
*
|
* @param response HttpServletResponse
|
* @param key cookie key
|
*/
|
public void removeCookie(HttpServletResponse response, String key) {
|
setCookie(response, key, null, 0);
|
}
|
|
/**
|
* 设置cookie
|
*
|
* @param response HttpServletResponse
|
* @param name cookie name
|
* @param value cookie value
|
* @param maxAgeInSeconds maxage
|
*/
|
public void setCookie(HttpServletResponse response, String name, String value, int maxAgeInSeconds) {
|
Cookie cookie = new Cookie(name, value);
|
cookie.setPath("/");
|
cookie.setMaxAge(maxAgeInSeconds);
|
//cookie.setHttpOnly(true);
|
response.addCookie(cookie);
|
}
|
}
|