Struts2工具类
发布时间:2020-05-30 15:23:51 所属栏目:Java 来源:互联网
导读:Struts2工具类
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 简化获取response,request及输出操作import 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","no-cache:false");
* render("text/plain","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);
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
