package com.shlanbao.tzsc.utils.tools;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import javax.servlet.ServletContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.context.request.ServletWebRequest;
/**
* WEB网络相关工具类
*
@author Leejean
* @create 2014-6-24 下午04:14:15
*/
public class WebContextUtil {
public final static String SESSION_INFO = "sessionInfo";
/**
* 获得HttpServletResponse
* @return
*/
public static HttpServletResponse getResponse(){
return ((ServletWebRequest) RequestContextHolder.getRequestAttributes()).getResponse();
}
/**
* 设置cookie
*
* @param response
* Response对象
* @param cookName
* 名称
* @param cookValue
* 值
* @param cookTime
* 时间
*/
public static void setCookie(HttpServletResponse response, String cookName,
String cookValue, int cookTime) {
// 创建cookie
Cookie cookie = new Cookie(cookName, cookValue);
// 设置cookie路径
cookie.setPath("/");
// 设置cookie时间
if (cookTime > -1) {
cookie.setMaxAge(cookTime);
}
// 添加cookie
response.addCookie(cookie);
}
/**
* 获取指定名称的Cookie值
*
* @param request
* @param cookName
* @return
*/
public static String getCookie(HttpServletRequest request, String cookieName) {
// 保存cookie值
String cookieValue = null;
// 获取cookie值
if (StringUtil.notNull(cookieName)) {
Cookie cookies[] = request.getCookies();
if (cookies != null && cookies.length > 0) {
// 循环获取cookie
for (Cookie cookie : cookies) {
if (cookie.getName().equals(cookieName)) {
// 找到所需cookie跳出循环
cookieValue = cookie.getValue();
break;
}
}
}
}
return cookieValue;
}
/**
* 清除所有的cookie
*
* @param request
* @param response
*/
public static void clearAllCookie(HttpServletRequest request,
HttpServletResponse response) {
Cookie cookies[] = request.getCookies();
if (cookies.length > 0) {
for (Cookie cookie : cookies) {
Cookie ck = new Cookie(cookie.getName(), null);
ck.setMaxAge(0);
ck.setPath("/");
response.addCookie(ck);
}
}
}
public static String getRemoteIp(HttpServletRequest request){
String ipAddress = null;
ipAddress = request.getHeader("x-forwarded-for");
if (ipAddress == null || ipAddress.length() == 0
|| "unknown".equalsIgnoreCase(ipAddress)) {
}
if (ipAddress == null || ipAddress.length() == 0
|| "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0
|| "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
if (ipAddress.equals("127.0.0.1")) {
StringBuilder IFCONFIG=new StringBuilder();
try {
for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress() && inetAddress.isSiteLocalAddress()) {
IFCONFIG.append(inetAddress.getHostAddress().toString()+",");
}
}
}
} catch (SocketException ex) {
}
ipAddress = IFCONFIG.toString();
if(ipAddress.length()>0){
ipAddress =ipAddress.substring(0,(ipAddress.length()-1));
}else{
// 根据网卡取本机配置的IP
InetAddress inet = null;
try {
inet = InetAddress.getLocalHost();
} catch (Exception e) {
e.printStackTrace();
}
ipAddress = inet.getHostAddress();
}
}
}
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if (ipAddress != null && ipAddress.length() > 15) {
if (ipAddress.indexOf(",") > 0) {
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
}
}
return ipAddress;
}
/**
* 保存对象到session
* @author Leejean
* @create 2014年8月13日上午10:46:11
* @param session session
* @param key 键
* @param value 值
* @param lifeTime 生命周期 毫秒ms
*/
public static void saveObjToSession(HttpSession session,String key,Object value,int lifeTime){
if(session.getAttribute(key)!=null){
session.setAttribute(key, null);
}
session.setAttribute(key, value);
session.setMaxInactiveInterval(lifeTime);
}
/**
* 获得session中的值
* @param key 键
* @return
*/
public static Object getSessionValue(HttpSession session,String key){
return session.getAttribute(key);
}
/**
* 获得虚拟路径
* @param root
* @param request
* @return
*/
public static String getVirtualPath(String root,HttpServletRequest request) {
ServletContext application = request.getServletContext();
return application.getRealPath(root);
}
/***---新增方法 2014年11月14日---***/
/**
* 获取request
* @return
*/
public static HttpServletRequest getRequest(){
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
return request;
}
/**
* 获取session
* @return
*/
public static HttpSession getSession(){
return getRequest().getSession();
}
/**
* 获取sessionId
* @param session
* @return
*/
public static String getSessionId(){
return getRequest().getSession().getId();
}
/**
* 从session中获取用户
* @return
*/
public static Object getObjectFromSession(){
return getSession().getAttribute(SESSION_INFO) == null ? null : getSession().getAttribute(SESSION_INFO);
}
/**
* 从session中获取用户
* @return
*/
public static Object getObjectFromSession(HttpSession session){
return session.getAttribute(SESSION_INFO) == null ? null : session.getAttribute(SESSION_INFO);
}
}