/**
* CookieUtil.java
* 2014-4-18
*/
package com.mtools.core.plugin.helper;
import java.io.UnsupportedEncodingException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.mtools.core.plugin.constant.CoreConstans;
/**
* @author zhang
*
* 2014-4-18
*/
public class CookieUtil {
private static final Log log = LogFactory.getLog(CookieUtil.class);
/**
* 功能:获取原请求uri
* 2014-4-18
* @throws UnsupportedEncodingException
*/
public static String initOrgReqUri(ServletRequest request, ServletResponse response) throws UnsupportedEncodingException{
String orgUri="login";
try{
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resp=(HttpServletResponse) response;
String method=req.getMethod();
String queryStr=req.getQueryString();
String reqestUri=req.getServletPath();//.getRequestURI();
if(!"/admin/index".equals(reqestUri)&&!"/index".equals(reqestUri)){
if("GET".equals(method)&&queryStr!=null){
reqestUri+="?"+queryStr;
}
orgUri= CookieUtil.getCookie(req, CoreConstans.REQESTURI);
log.info("原请求uri:"+reqestUri);
CookieUtil.setCookie(resp, CoreConstans.REQESTURI, reqestUri);
}
}catch(Exception e){
e.printStackTrace();
log.error("初始化cookie异常:"+e.getMessage());
}
return orgUri;
}
public static void setCookie(HttpServletResponse response,String key,String value) throws UnsupportedEncodingException{
Cookie oItem;
oItem = new Cookie(key,Base64.encodeBase64URLSafeString(value.getBytes()));
oItem.setMaxAge(-1); //关闭浏览器后,cookie立即失效
oItem.setPath("/");
response.addCookie(oItem);
}
public static String getCookie(HttpServletRequest request,String key) throws UnsupportedEncodingException{
final Cookie[] oCookies = request.getCookies();
if (oCookies != null)
{
for (final Cookie oItem : oCookies)
{
final String sName = oItem.getName();
if (sName.equals(key))
{
String value=new String(Base64.decodeBase64(oItem.getValue()));
log.info("cookies key:"+key+" value:"+value);
return value; //解码 CookieUtil.decode()是BASE64解码方法,略..
}
}
}
return null;
}
}