文章目录
- 获取ip地址
- 请求上下文相关
- Spring上下文获取Bean对象
获取ip地址
public class IpUtils {private IpUtils() {}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等对象
public class RequestContextHolderUtils {public static HttpServletRequest getRequest() {return getRequestAttributes().getRequest();}public static HttpServletResponse getResponse() {return getRequestAttributes().getResponse();}public static HttpSession getSession() {return getRequest().getSession();}public static void setSessionAttribute(String name, Object value) {getSession().setAttribute(name, value);}public static Object getSessionAttribute(String name) {return getSession().getAttribute(name);}public static ServletRequestAttributes getRequestAttributes() {return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());}public static ServletContext getServletContext() {return Objects.requireNonNull(ContextLoader.getCurrentWebApplicationContext()).getServletContext();}
}
Spring上下文获取Bean对象
@Component
public class SpringContextUtils implements ApplicationContextAware {@Getterprivate static ApplicationContext applicationContext;@Override@Autowiredpublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {SpringContextUtils.applicationContext = applicationContext;}public static Object getBean(String name) {return getApplicationContext().getBean(name);}public static <T> T getBean(Class<T> clazz) {return getApplicationContext().getBean(clazz);}public static <T> T getBean(String name, Class<T> clazz) {return getApplicationContext().getBean(name, clazz);}
}