package org.framework.helper; //~--- non-JDK imports -------------------------------------------------------- import org.slf4j.Logger; import org.slf4j.LoggerFactory; //~--- JDK imports ------------------------------------------------------------ import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * Servlet助手类 为每一个线程提供独立的response和request * Created by lizhaoz on 2016/1/6. */ public final class ServletHelper { private static final Logger LOGGER = LoggerFactory.getLogger(ServletHelper.class); // 每个线程都独自拥有一份ServletHelper实例 private static final ThreadLocal<ServletHelper> SERVLET_HELPER_HOLDER = new ThreadLocal<ServletHelper>(); private HttpServletRequest request; private HttpServletResponse response; private ServletHelper(HttpServletRequest request, HttpServletResponse response) { this.request = request; this.response = response; } /** * 初始化 ServletHelper 注入request和response * author:Lizhao * Date:16/01/06 * version:1.0 * * @param request * @param response */ public static void init(HttpServletRequest request, HttpServletResponse response) { SERVLET_HELPER_HOLDER.set(new ServletHelper(request, response)); } /** * 销毁 * author:Lizhao * Date:16/01/06 * version:1.0 */ public static void destory() { SERVLET_HELPER_HOLDER.remove(); } /** * 获取Request对象 * author:Lizhao * Date:16/01/06 * version:1.0 * * @return */ public static HttpServletRequest getRequest() { return SERVLET_HELPER_HOLDER.get().request; } /** * 获取Response对象 * author:Lizhao * Date:16/01/06 * version:1.0 * * @return */ private static HttpServletResponse getResponse() { return SERVLET_HELPER_HOLDER.get().response; } /** * 获取session * author:Lizhao * Date:16/01/06 * version:1.0 * * @return */ private static HttpSession getSession() { return getRequest().getSession(); } /** * 获取ServletContext * author:Lizhao * Date:16/01/06 * version:1.0 * * @return */ private static ServletContext getServletContext() { return getRequest().getServletContext(); } /** * 向request中添加属性 * author:Lizhao * Date:16/01/06 * version:1.0 * * @param key * @param value */ public static void setRequestAttribute(String key, Object value) { getRequest().setAttribute(key, value); } /** * 从request中得到属性 * author:Lizhao * Date:16/01/06 * version:1.0 * * @param key * @param <T> * * @return */ public static <T> T getRequestAttribute(String key) { return (T) getRequest().getAttribute(key); } /** * 从request中移除属性 * author:Lizhao * Date:16/01/06 * version:1.0 * * @param key */ public static void remoteRequestAttribute(String key) { getRequest().removeAttribute(key); } /** * 发送重定向 * author:Lizhao * Date:16/01/06 * version:1.0 * * @param location */ public static void sendRedirect(String location) { try { getResponse().sendRedirect(getRequest().getContextPath() + location); } catch (IOException e) { LOGGER.error("redirect failure", e); } } /** * 向Session中添加属性 * author:Lizhao * Date:16/01/06 * version:1.0 * * @param key * @param value */ public static void setSessionAttribute(String key, Object value) { getSession().setAttribute(key, value); } /** * 从Session中获取属性 * author:Lizhao * Date:16/01/06 * version:1.0 * * @param key * @param <T> * * @return */ public static <T> T getSessionAttribute(String key) { return (T) getRequest().getSession().getAttribute(key); } /** * 从Session中移除属性 * author:Lizhao * Date:16/01/06 * version:1.0 * * @param key */ public static void removeSessionAttribute(String key) { getRequest().getSession().removeAttribute(key); } /** * 让Session失效 * author:Lizhao * Date:16/01/06 * version:1.0 */ public static void invalidateSession() { getRequest().getSession().invalidate(); } } //~ Formatted by Jindent --- http://www.jindent.com