文章目录
获取ip地址
java
public class IpUtils {
private IpUtils() {
}
/**
* 获取请求ip地址
*
* @return {@link String}
*/
public static String getIpAddress() {
HttpServletRequest request = RequestContextHolderUtils.getRequest();
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Forwarded-For");
}
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Real-IP");
}
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
if ("0:0:0:0:0:0:0:1".equals(ip)) {
ip = "127.0.0.1";
}
if (ip.contains(",")) {
ip = ip.split(",")[0];
}
return ip;
}
}
请求上下文相关
- 获取HttpServletRequest、HttpServletResponse、HttpSession、ServletContext等对象
java
public class RequestContextHolderUtils {
/**
* 获取HttpServletRequest请求对象
*
* @return {@link HttpServletRequest}
*/
public static HttpServletRequest getRequest() {
return getRequestAttributes().getRequest();
}
/**
* 获取HttpServletResponse响应对象
*
* @return {@link HttpServletResponse}
*/
public static HttpServletResponse getResponse() {
return getRequestAttributes().getResponse();
}
/**
* 获得会话
*
* @return {@link HttpSession}
*/
public static HttpSession getSession() {
return getRequest().getSession();
}
/**
* 设置会话属性
*
* @param name 名字
* @param value 值
*/
public static void setSessionAttribute(String name, Object value) {
getSession().setAttribute(name, value);
}
/**
* 获得会话属性
*
* @param name 名字
* @return {@link Object}
*/
public static Object getSessionAttribute(String name) {
return getSession().getAttribute(name);
}
/**
* servlet容器请求属性
*
* @return {@link ServletRequestAttributes}
*/
public static ServletRequestAttributes getRequestAttributes() {
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
}
/**
* 得到servlet上下文
*
* @return {@link ServletContext}
*/
public static ServletContext getServletContext() {
return Objects.requireNonNull(ContextLoader.getCurrentWebApplicationContext()).getServletContext();
}
}
Spring上下文获取Bean对象
java
@Component
public class SpringContextUtils implements ApplicationContextAware {
/**
* 上下文对象实例
* -- GETTER --
* 获取applicationContext
*/
@Getter
private static ApplicationContext applicationContext;
@Override
@Autowired
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtils.applicationContext = applicationContext;
}
/**
* 通过name获取 Bean.
*/
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
/**
* 通过class获取Bean.
*/
public static <T> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
}
/**
* 通过name,以及Clazz返回指定的Bean
*/
public static <T> T getBean(String name, Class<T> clazz) {
return getApplicationContext().getBean(name, clazz);
}
}