SpringMVC 中无缓存的BasicController的设计
2016-04-20 09:50
609 查看
public class BaseController {
// header 常量定义
private static final String DEFAULT_ENCODING = "UTF-8";
private static final boolean DEFAULT_NOCACHE = true;
// Content Type 常量定义
public static final String TEXT_TYPE = "text/plain";
public static final String JSON_TYPE = "application/json";
public static final String XML_TYPE = "text/xml";
public static final String HTML_TYPE = "text/html";
public static final String JS_TYPE = "text/javascript";
public static final String EXCEL_TYPE = "application/vnd.ms-excel";
public static int PAGE_NUMERIC = 20;
/**
* 直接输出内容的简便函数.
*/
protected void render(final String contentType, final String content,
final HttpServletResponse response) {
HttpServletResponse resp = initResponseHeader(contentType, response);
try {
resp.getWriter().write(content);
resp.getWriter().flush();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 直接输出文本.
*/
protected void outText(final String text, final HttpServletResponse response) {
render(TEXT_TYPE, text, response);
}
/**
* 直接输出HTML.
*/
protected void outHtml(final String html, final HttpServletResponse response) {
render(HTML_TYPE, html, response);
}
/**
* 直接输出XML.
*/
protected void outXml(final String xml, final HttpServletResponse response) {
render(XML_TYPE, xml, response);
}
/**
* 输出JSON,可以接收参数如: [{'name':'www'},{'name':'www'}],['a','b'],new
* String[]{'a','b'},合并如下:jsonString = "{TOTALCOUNT:" + totalCount + ",
* ROOT:" + jsonString + "}";
*
* @param jsonString
* json字符串.
*
*/
protected void outJson(final String json, final HttpServletResponse response) {
render(JSON_TYPE, json, response);
}
/**
* 设置让浏览器弹出下载对话框的Header.
*
* @param fileName
* 下载后的文件名.
*/
protected void setFileDownloadHeader(HttpServletResponse response,
String fileName) {
try {
// 中文文件名支持
String encodedfileName = new String(fileName.getBytes(),
"ISO8859-1");
response.setHeader("Content-Disposition", "attachment; filename=\""
+ encodedfileName + "\"");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 分析并设置contentType与headers.
*/
protected HttpServletResponse initResponseHeader(final String contentType,
final HttpServletResponse response) {
// 分析headers参数
String encoding = DEFAULT_ENCODING;
boolean noCache = DEFAULT_NOCACHE;
// 设置headers参数
String fullContentType = contentType + ";charset=" + encoding;
response.setContentType(fullContentType);
if (noCache) {
setNoCacheHeader(response);
}
return response;
}
/**
* 设置客户端无缓存Header.
*/
protected void setNoCacheHeader(HttpServletResponse response) {
// Http 1.0 header
response.setDateHeader("Expires", 0);
response.addHeader("Pragma", "no-cache");
// Http 1.1 header
response.setHeader("Cache-Control", "no-cache");
}
}
// header 常量定义
private static final String DEFAULT_ENCODING = "UTF-8";
private static final boolean DEFAULT_NOCACHE = true;
// Content Type 常量定义
public static final String TEXT_TYPE = "text/plain";
public static final String JSON_TYPE = "application/json";
public static final String XML_TYPE = "text/xml";
public static final String HTML_TYPE = "text/html";
public static final String JS_TYPE = "text/javascript";
public static final String EXCEL_TYPE = "application/vnd.ms-excel";
public static int PAGE_NUMERIC = 20;
/**
* 直接输出内容的简便函数.
*/
protected void render(final String contentType, final String content,
final HttpServletResponse response) {
HttpServletResponse resp = initResponseHeader(contentType, response);
try {
resp.getWriter().write(content);
resp.getWriter().flush();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 直接输出文本.
*/
protected void outText(final String text, final HttpServletResponse response) {
render(TEXT_TYPE, text, response);
}
/**
* 直接输出HTML.
*/
protected void outHtml(final String html, final HttpServletResponse response) {
render(HTML_TYPE, html, response);
}
/**
* 直接输出XML.
*/
protected void outXml(final String xml, final HttpServletResponse response) {
render(XML_TYPE, xml, response);
}
/**
* 输出JSON,可以接收参数如: [{'name':'www'},{'name':'www'}],['a','b'],new
* String[]{'a','b'},合并如下:jsonString = "{TOTALCOUNT:" + totalCount + ",
* ROOT:" + jsonString + "}";
*
* @param jsonString
* json字符串.
*
*/
protected void outJson(final String json, final HttpServletResponse response) {
render(JSON_TYPE, json, response);
}
/**
* 设置让浏览器弹出下载对话框的Header.
*
* @param fileName
* 下载后的文件名.
*/
protected void setFileDownloadHeader(HttpServletResponse response,
String fileName) {
try {
// 中文文件名支持
String encodedfileName = new String(fileName.getBytes(),
"ISO8859-1");
response.setHeader("Content-Disposition", "attachment; filename=\""
+ encodedfileName + "\"");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 分析并设置contentType与headers.
*/
protected HttpServletResponse initResponseHeader(final String contentType,
final HttpServletResponse response) {
// 分析headers参数
String encoding = DEFAULT_ENCODING;
boolean noCache = DEFAULT_NOCACHE;
// 设置headers参数
String fullContentType = contentType + ";charset=" + encoding;
response.setContentType(fullContentType);
if (noCache) {
setNoCacheHeader(response);
}
return response;
}
/**
* 设置客户端无缓存Header.
*/
protected void setNoCacheHeader(HttpServletResponse response) {
// Http 1.0 header
response.setDateHeader("Expires", 0);
response.addHeader("Pragma", "no-cache");
// Http 1.1 header
response.setHeader("Cache-Control", "no-cache");
}
}
相关文章推荐
- 错误排查总结-eclipse中junit test或者run main方法报错
- Spring Task定时任务
- jdk版本不一致问题
- java学习之contentprovider
- spring4.2.4+hibernate5.1.0+struts2.3.24整合jar包
- 个人对设计模式的理解-->桥接模式
- 使用 Eclipse Memory Analyzer 进行堆转储文件分析
- spring boot官方中文文档
- Java7新特性--try-with-resources,自动关闭资源
- Java多态-如何理解父类引用指向子类对象
- JFrame基本操作,增加选择文件按钮
- 【学习笔记】系列十三:使用JMeter进行性能测试之Java请求
- Eclipse 配置SSH 详解
- java 泛型详解(普通泛型、 通配符、 泛型接口)
- Java同步和死锁的实例分析
- 关于Java调用32/64位dll的问题
- eclipse项目红色叹号解决方法 eclipse导入jar包
- 基于SpringMVC的文件上传
- spring autowired mockito单元测试
- java nio channel