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> T getBean(String beanName, Class<T> 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 <T>
|
* @return
|
* @date 2016年11月11日
|
*/
|
public static <T> 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:";
|
|
/**
|
* <li>功能简述:获取项目的实际路径
|
* <li>详细描述: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;
|
}
|
|
/**
|
* <li>功能简述:获得发布目录路径
|
* <li>详细描述:webapps
|
*/
|
public static String getDeployPath() {
|
|
File tempDir = new File(getContextPath());
|
return tempDir.getParentFile().getParentFile().getAbsolutePath();
|
}
|
|
/**
|
* <li>功能简述:获得项目目录
|
*/
|
public static String getWebPath() {
|
|
File tempDir = new File(getContextPath());
|
return tempDir.getParentFile().getAbsolutePath();
|
}
|
|
/**
|
* 获取当前访问路径含参数
|
*/
|
public static String getLocation() {
|
Map<String, String[]> 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;
|
}
|
}
|