欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Struts2工具类,,简化获取response

来源: javaer 分享于  点击 14774 次 点评:221

Struts2工具类,,简化获取response


简化获取response,request及输出操作```javaimport java.io.IOException;import java.util.Map;

import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;import org.apache.struts2.ServletActionContext;import org.json.JSONObject;import org.slf4j.Logger;import org.slf4j.LoggerFactory;

/* * Struts2 Utils类. * * 实现获取Request/Response/Session与绕过jsp/freemaker直接输出文本的简化函数. * /public class Struts2Utils {

    //header 常量定义    private static final String ENCODING_PREFIX = "encoding:";    private static final String NOCACHE_PREFIX = "no-cache:";    private static final String ENCODING_DEFAULT = "UTF-8";    private static final boolean NOCACHE_DEFAULT = true;    private static Logger logger = LoggerFactory.getLogger(Struts2Utils.class);    private Struts2Utils() {    }    // 取得Request/Response/Session的简化函数 //    /**     * 取得HttpSession的简化方法.     */    public static HttpSession getSession() {            return ServletActionContext.getRequest().getSession();    }    /**     * 取得HttpRequest的简化方法.     */    public static HttpServletRequest getRequest() {            return ServletActionContext.getRequest();    }    /**     * 取得HttpResponse的简化方法.     */    public static HttpServletResponse getResponse() {            return ServletActionContext.getResponse();    }    /**     * 取得Request Parameter的简化方法.     */    public static String getParameter(String name) {            return getRequest().getParameter(name);    }    // 绕过jsp/freemaker直接输出文本的函数 //    /**     * 直接输出内容的简便函数.     * eg.     * render("text/plain", "hello", "encoding:GBK");     * render("text/plain", "hello", "no-cache:false");     * render("text/plain", "hello", "encoding:GBK", "no-cache:false");     *      * @param headers 可变的header数组,目前接受的值为"encoding:"或"no-cache:",默认值分别为UTF-8和true.                      */    public static void render(final String contentType, final String content, final String... headers) {            try {                    //分析headers参数                    String encoding = ENCODING_DEFAULT;                    boolean noCache = NOCACHE_DEFAULT;                    for (String header : headers) {                            String headerName = StringUtils.substringBefore(header, ":");                            String headerValue = StringUtils.substringAfter(header, ":");                            if (StringUtils.equalsIgnoreCase(headerName, ENCODING_PREFIX)) {                                    encoding = headerValue;                            } else if (StringUtils.equalsIgnoreCase(headerName, NOCACHE_PREFIX)) {                                    noCache = Boolean.parseBoolean(headerValue);                            } else                                    throw new IllegalArgumentException(headerName + "不是一个合法的header类型");                    }                    HttpServletResponse response = ServletActionContext.getResponse();                    //设置headers参数                    String fullContentType = contentType + ";charset=" + encoding;                    response.setContentType(fullContentType);                    if (noCache) {                            response.setHeader("Pragma", "No-cache");                            response.setHeader("Cache-Control", "no-cache");                            response.setDateHeader("Expires", 0);                    }                    response.getWriter().write(content);            } catch (IOException e) {                    logger.error(e.getMessage(), e);            }    }    /**     * 直接输出文本.     */    public static void renderText(final String text, final String... headers) {            render("text/plain", text, headers);    }    /**     * 直接输出HTML.     */    public static void renderHtml(final String html, final String... headers) {            render("text/html", html, headers);    }    /**     * 直接输出XML.     */    public static void renderXml(final String xml, final String... headers) {            render("text/xml", xml, headers);    }    /**     * 直接输出JSON.     *      * @param string json字符串.     */    public static void renderJson(final String string, final String... headers) {            render("application/json", string, headers);    }    /**     * 直接输出JSON.     *      * @param map Map对象,将被转化为json字符串.     */    @SuppressWarnings("unchecked")    public static void renderJson(final Map map, final String... headers) {            String jsonString = new JSONObject(map).toString();            renderJson(jsonString, headers);    }    /**     * 直接输出JSON.     *      * @param object Java对象,将被转化为json字符串.     */    public static void renderJson(final Object object, final String... headers) {            String jsonString = new JSONObject(object).toString();            renderJson(jsonString, headers);    }

}```

相关栏目:

用户点评