为高考学子加油,JEECG 3.7.6 高考性能加强版本发布

pull/24/head
zhangdaiscott@163.com 2018-06-07 16:18:24 +08:00
parent 2ab389705f
commit 9167cdbcf3
1 changed files with 42 additions and 68 deletions

View File

@ -8,7 +8,6 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -18,11 +17,9 @@ import org.codehaus.jackson.map.ObjectMapper;
import org.jeecgframework.core.common.hibernate.qbc.PageList; import org.jeecgframework.core.common.hibernate.qbc.PageList;
import org.jeecgframework.core.common.model.json.ComboBox; import org.jeecgframework.core.common.model.json.ComboBox;
import org.jeecgframework.core.common.model.json.DataGrid; import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.util.ContextHolderUtils;
import org.jeecgframework.core.util.ReflectHelper; import org.jeecgframework.core.util.ReflectHelper;
import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.oConvertUtils; import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.tag.core.util.GzipUtilities;
import org.jeecgframework.tag.vo.datatable.DataTableReturn; import org.jeecgframework.tag.vo.datatable.DataTableReturn;
import org.jeecgframework.tag.vo.easyui.Autocomplete; import org.jeecgframework.tag.vo.easyui.Autocomplete;
import org.jeecgframework.web.system.pojo.base.TSRole; import org.jeecgframework.web.system.pojo.base.TSRole;
@ -83,7 +80,7 @@ public class TagUtil {
} }
value = reflectHelper.getMethodValue(fieldName)==null?"":reflectHelper.getMethodValue(fieldName); value = reflectHelper.getMethodValue(fieldName)==null?"":reflectHelper.getMethodValue(fieldName);
if (value !=""&&value != null && (FiledName.indexOf("_") != -1||FiledName.indexOf(".") != -1)) { if (value !=""&&value != null && (FiledName.indexOf("_") != -1||FiledName.indexOf(".") != -1)) {
// update-start--Author:zhangguoming Date:20140827 for功能增强添加处理对象中List<Object>属性字段的解析
if(value instanceof List) { if(value instanceof List) {
Object tempValue = ""; Object tempValue = "";
for (Object listValue : (List)value) { for (Object listValue : (List)value) {
@ -93,10 +90,10 @@ public class TagUtil {
} else { } else {
value = fieldNametoValues(childFieldName, value); value = fieldNametoValues(childFieldName, value);
} }
// update-end--Author:zhangguoming Date:20140827 for功能增强添加处理对象中List<Object>属性字段的解析
} }
if(value != "" && value != null) { if(value != "" && value != null) {
// update-begin--Author:jb_longjb 龙金波 Date:20150313 for处理json中可能包含的特殊字符防止页面加载出错
value = converunicode(value.toString()); value = converunicode(value.toString());
} }
return value; return value;
@ -106,7 +103,7 @@ public class TagUtil {
for (int i=0; i<jsonValue.length(); i++) { for (int i=0; i<jsonValue.length(); i++) {
char c = jsonValue.charAt(i); char c = jsonValue.charAt(i);
switch (c){ switch (c){
// update-begin--Author:zhoujf Date:20150615 for菜单图片不显示的问题
// case '\"': // case '\"':
// sb.append("\\\""); // sb.append("\\\"");
// break; // break;
@ -119,7 +116,7 @@ public class TagUtil {
// case '/': // case '/':
// sb.append("\\/"); // sb.append("\\/");
// break; // break;
// update-end--Author:zhoujf Date:20150615 for菜单图片不显示的问题
case '\b': case '\b':
sb.append("\\b"); sb.append("\\b");
break; break;
@ -141,7 +138,7 @@ public class TagUtil {
} }
return sb.toString(); return sb.toString();
} }
// update-end--Author:jb_longjb 龙金波 Date:20150313 for处理json中可能包含的特殊字符防止页面加载出错
/** /**
* *
@ -170,7 +167,7 @@ public class TagUtil {
private static String listtojson(String[] fields, int total, List<?> list, String[] footers, String dataStyle, int pageSize) throws Exception { private static String listtojson(String[] fields, int total, List<?> list, String[] footers, String dataStyle, int pageSize) throws Exception {
//Object[] values = new Object[fields.length]; //Object[] values = new Object[fields.length];
StringBuffer jsonTemp = new StringBuffer(); StringBuffer jsonTemp = new StringBuffer();
//update--begin--author:zhangjiaqiang date:20170413 for:支持jqgrid列表 json格式
if("jqgrid".equals(dataStyle)){ if("jqgrid".equals(dataStyle)){
int totalPage = total % pageSize > 0 ? total / pageSize + 1 : total / pageSize; int totalPage = total % pageSize > 0 ? total / pageSize + 1 : total / pageSize;
if(totalPage == 0) totalPage = 1; if(totalPage == 0) totalPage = 1;
@ -179,20 +176,23 @@ public class TagUtil {
jsonTemp.append("{\"total\":" + total ); jsonTemp.append("{\"total\":" + total );
} }
jsonTemp.append(",\"rows\":["); jsonTemp.append(",\"rows\":[");
//update--end--author:zhangjiaqiang date:20170413 for:支持jqgrid列表 json格式
int i; int i;
String fieldName; String fieldName;
//update--begin--author:scott date:20170918 for:list为null问题处理-------
if(list==null){ if(list==null){
list = new ArrayList(); list = new ArrayList();
} }
//update--end--author:scott date:20170918 for:list为null问题处理-------
for (int j = 0; j < list.size(); ++j) { for (int j = 0; j < list.size(); ++j) {
//update-begin--Author:zhoujf Date:20170323 forTASK #1774 【bug】树列表下一级没了图标是文件夹的问题应该是节点(优化)
//update-begin--Author:zhoujf Date:20170315 forTASK #1774 【bug】树列表下一级没了图标是文件夹的问题应该是节点
//jsonTemp.append("{"); //jsonTemp.append("{");
jsonTemp.append("{\"state\":\"closed\","); jsonTemp.append("{\"state\":\"closed\",");
//update-end--Author:zhoujf Date:20170315 forTASK #1774 【bug】树列表下一级没了图标是文件夹的问题应该是节点
//update-end--Author:zhoujf Date:20170323 forTASK #1774 【bug】树列表下一级没了图标是文件夹的问题应该是节点(优化)
Object fieldValue = null; Object fieldValue = null;
for (i = 0; i < fields.length; ++i) { for (i = 0; i < fields.length; ++i) {
fieldName = fields[i].toString(); fieldName = fields[i].toString();
@ -201,9 +201,9 @@ public class TagUtil {
else { else {
fieldValue = fieldNametoValues(fieldName, list.get(j)); fieldValue = fieldNametoValues(fieldName, list.get(j));
} }
//update-begin--Author:zhoujf Date:20170315 for对象为null时返回空串而不是“null”
jsonTemp.append("\"" + fieldName + "\"" + ":\"" + getStringValue(fieldValue).replace("\"", "\\\"") + "\""); jsonTemp.append("\"" + fieldName + "\"" + ":\"" + getStringValue(fieldValue).replace("\"", "\\\"") + "\"");
//update-end--Author:zhoujf Date:20170315 for对象为null时返回空串而不是“null”
if (i != fields.length - 1) { if (i != fields.length - 1) {
jsonTemp.append(","); jsonTemp.append(",");
} }
@ -240,7 +240,7 @@ public class TagUtil {
jsonTemp.append("}"); jsonTemp.append("}");
return jsonTemp.toString(); return jsonTemp.toString();
} }
//update--begin--author:gj_shaojc-- date:20180604--forTASK #2763 【确认问题】合计金额展示问题,国际通用格式 如61,100.00 确认是否存在问题
/** /**
* LISTEASYUIJSONFootersjson * LISTEASYUIJSONFootersjson
* @param fields * @param fields
@ -307,12 +307,13 @@ public class TagUtil {
jsonTemp.append("}"); jsonTemp.append("}");
return jsonTemp.toString(); return jsonTemp.toString();
} }
//update--end--author:gj_shaojc-- date:20180604--forTASK #2763 【确认问题】合计金额展示问题,国际通用格式 如61,100.00 确认是否存在问题
//update-begin--Author:zhoujf Date:20170315 for对象为null时返回空串而不是“null”
//为空时返回空串 //为空时返回空串
private static String getStringValue(Object obj){ private static String getStringValue(Object obj){
return (obj == null) ? "" : obj.toString(); return (obj == null) ? "" : obj.toString();
} }
//update-end--Author:zhoujf Date:20170315 for对象为null时返回空串而不是“null”
/** /**
* *
@ -414,19 +415,19 @@ public class TagUtil {
private static JSONObject getJson(DataGrid dg) { private static JSONObject getJson(DataGrid dg) {
JSONObject jObject = null; JSONObject jObject = null;
try { try {
//update--begin--author:zhangjiaqiang date:20170413 for:支持jqgrid列表 json格式
if(!StringUtil.isEmpty(dg.getFooter())){ if(!StringUtil.isEmpty(dg.getFooter())){
//update--begin--author:gj_shaojc-- date:20180604--forTASK #2763 【确认问题】合计金额展示问题,国际通用格式 如61,100.00 确认是否存在问题
if(dg.getFooter().startsWith("[")){ if(dg.getFooter().startsWith("[")){
jObject = JSONObject.parseObject(listtojsonByFootersJson(dg.getField().split(","), dg.getTotal(), dg.getResults(),dg.getFooter(),dg.getDataStyle(),dg.getRows())); jObject = JSONObject.parseObject(listtojsonByFootersJson(dg.getField().split(","), dg.getTotal(), dg.getResults(),dg.getFooter(),dg.getDataStyle(),dg.getRows()));
}else{ }else{
jObject = JSONObject.parseObject(listtojson(dg.getField().split(","), dg.getTotal(), dg.getResults(),dg.getFooter().split(","),dg.getDataStyle(),dg.getRows())); jObject = JSONObject.parseObject(listtojson(dg.getField().split(","), dg.getTotal(), dg.getResults(),dg.getFooter().split(","),dg.getDataStyle(),dg.getRows()));
} }
//update--end--author:gj_shaojc-- date:20180604--forTASK #2763 【确认问题】合计金额展示问题,国际通用格式 如61,100.00 确认是否存在问题
}else{ }else{
jObject = JSONObject.parseObject(listtojson(dg.getField().split(","), dg.getTotal(), dg.getResults(),null,dg.getDataStyle(),dg.getRows())); jObject = JSONObject.parseObject(listtojson(dg.getField().split(","), dg.getTotal(), dg.getResults(),null,dg.getDataStyle(),dg.getRows()));
} }
//update--end--author:zhangjiaqiang date:20170413 for:支持jqgrid列表 json格式
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -560,31 +561,21 @@ public class TagUtil {
PrintWriter pw = null; PrintWriter pw = null;
try { try {
pw=response.getWriter();
HttpServletRequest request = ContextHolderUtils.getRequest();
if (GzipUtilities.isGzipSupported(request) && !GzipUtilities.isGzipDisabled(request)) {
log.debug("-------datagrid----json-----开启Gzip压缩-------------");
pw = GzipUtilities.getGzipWriter(response);
response.setHeader("Content-Encoding", "gzip");
} else {
pw = response.getWriter();
}
pw.write(object.toString()); pw.write(object.toString());
pw.flush(); pw.flush();
pw.close();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
}finally{ }finally{
try { try {
//update-begin--Author:scott Date:20160530 for清空降低缓存占用
pw.close();
object.clear(); object.clear();
object = null; object = null;
dg.clear(); dg.clear();
dg = null; dg = null;
System.gc(); System.gc();
//update-end--Author:scott Date:20160530 for清空降低缓存占用
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -604,30 +595,22 @@ public class TagUtil {
JSONArray rows = object.getJSONArray("rows"); JSONArray rows = object.getJSONArray("rows");
PrintWriter pw = null; PrintWriter pw = null;
try { try {
pw = response.getWriter();
HttpServletRequest request = ContextHolderUtils.getRequest();
if (GzipUtilities.isGzipSupported(request) && !GzipUtilities.isGzipDisabled(request)) {
log.info("-------datagrid----json-----开启Gzip压缩-------------");
pw = GzipUtilities.getGzipWriter(response);
response.setHeader("Content-Encoding", "gzip");
} else {
pw = response.getWriter();
}
pw.write(rows.toString()); pw.write(rows.toString());
pw.flush(); pw.flush();
pw.close();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
}finally{ }finally{
try { try {
//update-begin--Author:scott Date:20160530 for清空降低缓存占用
pw.close();
object.clear(); object.clear();
//update-end--Author:scott Date:20160530 for清空降低缓存占用
//update-begin--Author:scott Date:20170830 forTASK #1756 【性能优化】分页查询存在写法问题,性能 CriteriaQuery cq 清空---
dg.clear(); dg.clear();
dg = null; dg = null;
System.gc(); System.gc();
//update-end--Author:scott Date:20170830 forTASK #1756 【性能优化】分页查询存在写法问题,性能 CriteriaQuery cq 清空---
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -652,31 +635,21 @@ public class TagUtil {
} }
PrintWriter pw = null; PrintWriter pw = null;
try { try {
pw = response.getWriter();
HttpServletRequest request = ContextHolderUtils.getRequest();
if (GzipUtilities.isGzipSupported(request) && !GzipUtilities.isGzipDisabled(request)) {
log.debug("-------datagrid----json-----开启Gzip压缩-------------");
pw = GzipUtilities.getGzipWriter(response);
response.setHeader("Content-Encoding", "gzip");
} else {
pw = response.getWriter();
}
pw.write(object.toString()); pw.write(object.toString());
pw.flush(); pw.flush();
pw.close();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
}finally{ }finally{
try { try {
//update-begin--Author:scott Date:20160530 for清空降低缓存占用
pw.close();
object.clear(); object.clear();
dg.clear(); dg.clear();
dg = null; dg = null;
System.gc(); System.gc();
extMap = null; extMap = null;
//update-begin--Author:scott Date:20160530 for清空降低缓存占用
} catch (Exception e2) { } catch (Exception e2) {
// TODO: handle exception // TODO: handle exception
} }
@ -814,7 +787,8 @@ public class TagUtil {
param += "'\"+index+\"'";// 传出行索引号参数 param += "'\"+index+\"'";// 传出行索引号参数
return param; return param;
} }
//update-begin--Author:luobaoli Date:20150711 for新增方法将存储过程返回的数据解析为json格式
public static String getJson(List fields,List datas){ public static String getJson(List fields,List datas){
if(datas!=null && datas.size()>0){ if(datas!=null && datas.size()>0){
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
@ -834,7 +808,7 @@ public class TagUtil {
return "{\"total\":\"0\",\"rows\":[]}"; return "{\"total\":\"0\",\"rows\":[]}";
} }
} }
//update-begin--Author:luobaoli Date:20150711 for新增方法将存储过程返回的数据解析为json格式
public static String getJsonByMap(List fields,List<Map<String,Object>> datas){ public static String getJsonByMap(List fields,List<Map<String,Object>> datas){
if(datas!=null && datas.size()>0){ if(datas!=null && datas.size()>0){