package cc.mrbird.febs.pay.util; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.File; import java.lang.reflect.ParameterizedType; import java.util.Map; /** * 针对ssh项目提供的一些实用性的方法。 * * @author JIANGYOUYAO * @email 935090232@qq.com * @date Dec 11, 2017 */ @Component public class WebUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { WebUtil.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext() { return applicationContext; } public static Object getBean(String beanName) { return applicationContext.getBean(beanName); } public static T getBean(String beanName, Class clazz) { return applicationContext.getBean(beanName, clazz); } /** * 获得web资源的绝对路径 * * @author JiangYouYao * @date 2014年10月14日-上午8:31:01 * @param path * @return */ public static String getResourceRealPath(String path) { return getServletContext().getRealPath(path); } /** * * 获取web项目的访问URl * @author:姜友瑶 * @return 返回类型 String * @date 2016年11月16日 */ public static String getWebUrl() { return getRequest().getScheme() + "://" + getRequest().getServerName() + ":" + getRequest().getServerPort() + getRequest().getContextPath() + "/"; } /** * 获得该类的泛型类型 * @Return: Class 泛型的类型 * @Author: JiangYouYao * @Version: V1.00 (版本号1.0) * @Create Date: 2014-8-12 (创建日期) */ @SuppressWarnings("rawtypes") public static Class getClass(Class clazz) { // 泛型转换 ParameterizedType pt = (ParameterizedType) clazz.getGenericSuperclass(); return (Class) pt.getActualTypeArguments()[0]; } /** * 2016/6/2 * * @author xieguangya * @return getRequest */ public static HttpServletRequest getRequest() { return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); } /** * * 在当前请求的request中获取一个值 * @author:姜友瑶 * @return * @date 2016年11月11日 */ public static Object getRequestAttribute(String name) { return getRequest().getAttribute(name); } /** * * 在当前请求的request中新增一个值 * @author:姜友瑶 * @return * @date 2016年11月11日 */ public static void setRequestAttribute(String name, Object o) { getRequest().setAttribute(name, o); } /** * * 在request中删除一个值 * @author:姜友瑶 * @return * @date 2016年11月11日 */ public static void removeRequestAttribute(String name) { getRequest().removeAttribute(name); } /** * * 在Session中新增一个值 * @author:姜友瑶 * @return * @date 2016年11月11日 */ public static void setSessionAttribute(String name, Object o) { getSession().setAttribute(name, o); } /** * * 在当前session中获取一个值 * @author:姜友瑶 * @param * @return * @date 2016年11月11日 */ public static T getSessionAttribute(String name) { return (T) getSession().getAttribute(name); } /** * * 在Session中删除一个值 * @author:姜友瑶 * @return * @date 2016年11月11日 */ public static void removeSessionAttribute(String name) { getSession().removeAttribute(name); } /** * 获取session * * @author Matrix-J * @return HttpSession */ /** * 获取session * * @author Matrix-J * @return HttpSession */ public static HttpSession getSession() { return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession(); } /** * 2016年6月15日 获取ServletContext * * @author Matrix-J * @return getServletContext */ public static ServletContext getServletContext() { return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession() .getServletContext(); } public static final String LEFT_SLASH = "/"; /** * 常量“字符.” */ public static final String CHARACTER_ALL = "\\."; /** * 常量“.class” */ public static final String CLASS_FILE_EXTEND_NAME = ".class"; /** * 常量“一个空格” */ public static final String CHARACTER_BLANK = " "; /** * 空格转码后结果 */ public static final String SPACE_REPLEACE_STRING = "%20"; /** * 常量“字符左斜杠” */ public static final String CHARACTER_LEFT = "\\/"; /** * 常量"WEB-INF"路径 */ public static final String CONFIG_ROOT = "WEB-INF/"; /** * 文件协议 */ public static final String FILE_PROTOCOL = "file:"; /** *
  • 功能简述:获取项目的实际路径 *
  • 详细描述:WEB-INF */ public static String getContextPath() { String name = WebUtil.class.getName(); name = LEFT_SLASH + name.replaceAll(CHARACTER_ALL, CHARACTER_LEFT) + CLASS_FILE_EXTEND_NAME; String space = SPACE_REPLEACE_STRING; String path = WebUtil.class.getResource(name).getPath(); path = path.substring(0, path.indexOf(CONFIG_ROOT) + CONFIG_ROOT.length()); path = path.replaceAll(space, CHARACTER_BLANK); if (path.startsWith(FILE_PROTOCOL)) { path = path.substring(FILE_PROTOCOL.length()); } return path; } /** *
  • 功能简述:获得发布目录路径 *
  • 详细描述:webapps */ public static String getDeployPath() { File tempDir = new File(getContextPath()); return tempDir.getParentFile().getParentFile().getAbsolutePath(); } /** *
  • 功能简述:获得项目目录 */ public static String getWebPath() { File tempDir = new File(getContextPath()); return tempDir.getParentFile().getAbsolutePath(); } /** * 获取当前访问路径含参数 */ public static String getLocation() { Map params = getRequest().getParameterMap(); String queryString = ""; if (params.keySet().size() > 0) { queryString = "?"; for (String key : params.keySet()) { String[] values = params.get(key); for (int i = 0; i < values.length; i++) { String value = values[i]; queryString += key + "=" + value + "&"; } } } return getRequest().getScheme() + "://" + getRequest().getServerName() + ":" + getRequest().getServerPort() + getRequest().getRequestURI() + queryString; } /** * * * @description 获取客户端ip地址 * @data 2015年8月6日 下午7:15:38 * @author Administrator * @return */ public static String getCustomerIp() { HttpServletRequest request = getRequest(); String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } }