📄 ecsidefilter.java
字号:
}
chain.doFilter(request, bufferResponseWrapper);
String zone = bufferResponseWrapper.findSubstring(
ECSideUtils.getAjaxBegin(ectableId), ECSideUtils.getAjaxEnd(ectableId));
HttpServletResponse originalResponse = bufferResponseWrapper.getOriginalResponse();
if (zone!=null){
originalResponse.getOutputStream().write(zone.getBytes("UTF-8"));
}
// originalResponse.flushBuffer();
originalResponse.getOutputStream().flush();
originalResponse.getOutputStream().close();
} catch (Exception e) {
LogHandler.errorLog(logger, e);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("Exception:<br />\n"+ExceptionUtils.formatStackTrace(e).replaceAll("\n","<br/>\n"));
response.getWriter().close();
}
} else {
if (easyListName!=null){
easyDataAccessHandler.easyList(request,response,getEasyListModelBean(request,easyListName));
}else if (easyDataAccessName!=null){
String sqlName=getSqlName(request);
easyDataAccessHandler.dataAccess(getDataAccessModelBean(request,easyDataAccessName), sqlName, request, response);
}
chain.doFilter(request, response);
}
}
public void doExportFilter(HttpServletRequest request,HttpServletResponse response,FilterChain chain,WebContext context)throws IOException, ServletException{
String easyListName=getEasyList(request);
String exportFileName = ExportFilterUtils.getExportFileName(context);
boolean isPrint="_print_".equals(exportFileName);
try{
if (isPrint){
if (easyListName!=null){
easyDataAccessHandler.easyList(request,response,getEasyListModelBean(request,easyListName));
}
chain.doFilter(request, response);
}else {
request.setAttribute(ContextUtils.RESPONSE_OUTPUTSTREAM_KEY, response.getOutputStream());
HttpServletResponseWrapper responseWrapper=new ExportResponseWrapper(response);
// if (responseHeadersSetBeforeDoFilter) {
setResponseHeaders(request,response, exportFileName);
// }
if (easyListName!=null){
easyDataAccessHandler.easyList(request,responseWrapper,getEasyListModelBean(request,easyListName));
}
chain.doFilter(request, responseWrapper);
responseWrapper=null;
// if (!responseHeadersSetBeforeDoFilter ) {
// setResponseHeaders(request,response, exportFileName);
// }
}
handleExport(request, response, context);
}catch(IOException e){
throw e;
}finally{
//request.setAttribute(ContextUtils.RESPONSE_OUTPUTSTREAM_KEY, "".intern());
}
}
public void handleExport(HttpServletRequest request, HttpServletResponse response, WebContext context) {
try {
Object viewData = request.getAttribute(TableConstants.VIEW_DATA);
if (viewData != null) {
Preferences preferences = new TableProperties();
preferences.init(null, TableModelUtils.getPreferencesLocation(context));
String viewResolver = (String) request.getAttribute(TableConstants.VIEW_RESOLVER);
Class classDefinition = Class.forName(viewResolver);
ViewResolver handleExportViewResolver = (ViewResolver) classDefinition.newInstance();
request.setAttribute(TableConstants.SERVLET_REAL_PATH, servletRealPath);
handleExportViewResolver.resolveView(request, response, preferences, viewData);
// response.flushBuffer();
if (!response.isCommitted()){
response.getOutputStream().flush();
response.getOutputStream().close();
}
}
} catch (Exception e) {
LogHandler.errorLog(logger, e);
}
}
public void setResponseHeaders(HttpServletRequest request,HttpServletResponse response, String exportFileName) {
String mimeType = MimeUtils.getFileMimeType(exportFileName);
// response.reset();
if (StringUtils.isNotBlank(mimeType)) {
response.setContentType(mimeType);
}
// response.setHeader("Content-Type",mimeType);
try {
exportFileName= RequestUtils.encodeFileName(request,exportFileName);
} catch (UnsupportedEncodingException e) {
String errorMessage = "Unsupported response.getCharacterEncoding() [" + "UTF-8" + "].";
LogHandler.errorLog(logger,"TDExportFilter.setResponseHeaders() - " + errorMessage);
}
//ec:
response.setHeader("Content-Disposition", "attachment;filename=\"" + exportFileName + "\"");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
// end ec;
// response.setHeader("Content-Transfer-Encoding","binary");
// response.setHeader("Cache-Control","private");
// response.setHeader("Pragma", "private");
response.setDateHeader("Expires", (System.currentTimeMillis() + 1000));
}
// TODO :
protected void webProxy(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/xml");
PrintWriter out = response.getWriter();
URL url = new URL(request.getParameter("url"));
BufferedReader bf = new BufferedReader(new InputStreamReader(url
.openStream()));
String line;
while ((line = bf.readLine()) != null) {
out.println(line);
}
bf.close();
}
public String getEasyList(ServletRequest servletRequest){
String easyDataAccess=null;
if (useEasyDataAccess){
try{
easyDataAccess=servletRequest.getParameter(ECSideConstants.EASY_DATA_LIST_FLAG);
}catch(Exception e){
easyDataAccess=null;
}
}
return StringUtils.isNotBlank(easyDataAccess)?easyDataAccess:null;
}
public String getEasyDataExport(ServletRequest servletRequest){
String easyDataAccess=null;
if (useEasyDataAccess){
easyDataAccess=servletRequest.getParameter(ECSideConstants.EASY_DATA_EXPORT_FLAG);
}
if (StringUtils.isNotBlank(easyDataAccess) && easyDataAccess.indexOf('.')>0){
easyDataAccess=easyDataAccess.substring(0,easyDataAccess.indexOf('.'));
}
return StringUtils.isNotBlank(easyDataAccess)?easyDataAccess:null;
}
public String getEasyDataAccess(ServletRequest servletRequest){
String easyDataAccess=null;
if (useEasyDataAccess){
easyDataAccess=servletRequest.getParameter(ECSideConstants.EASY_DATA_ACCESS_FLAG);
}
if (StringUtils.isNotBlank(easyDataAccess) && easyDataAccess.indexOf('.')>0){
easyDataAccess=easyDataAccess.substring(0,easyDataAccess.indexOf('.'));
}
return StringUtils.isNotBlank(easyDataAccess)?easyDataAccess:null;
}
public static String getExportFileName(ServletRequest servletRequest){
String fileName=servletRequest.getParameter(ECSideConstants.EASY_DATA_EXPORT_FILENAME);
if (StringUtils.isBlank(fileName)){
String eda=servletRequest.getParameter(ECSideConstants.EASY_DATA_EXPORT_FLAG);
if (eda.indexOf('.')>0){
fileName=eda.substring(eda.indexOf('.')+1);
}
}
return StringUtils.isNotBlank(fileName)?fileName:null;
}
public static String getSqlName(ServletRequest servletRequest){
String sqlName=servletRequest.getParameter(ECSideConstants.EASY_DATA_ACCESS_SQLNAME);
if (StringUtils.isBlank(sqlName)){
String eda=servletRequest.getParameter(ECSideConstants.EASY_DATA_ACCESS_FLAG);
if (StringUtils.isBlank(eda)){
eda=servletRequest.getParameter(ECSideConstants.EASY_DATA_EXPORT_FLAG);
}
if (StringUtils.isNotBlank(eda) && eda.indexOf('.')>0){
sqlName=eda.substring(eda.indexOf('.')+1);
}
}
return StringUtils.isNotBlank(sqlName)?sqlName:null;
}
public AbstractEasyListModel getEasyListModelBean(HttpServletRequest request,String beanName){
return (AbstractEasyListModel)getBean(request,beanName);
}
public DataAccessModel getDataAccessModelBean(HttpServletRequest request,String beanName){
return (DataAccessModel)getBean(request,beanName);
}
public DataExportModel getDataExportModelBean(HttpServletRequest request,String beanName){
return (DataExportModel)getBean(request,beanName);
}
public Object getBean(HttpServletRequest request,String beanName){
return ExportFilterUtils.getBean(request, beanName);
}
public void destroy() {
this.filterConfig = null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -