Action:
public void searchAllArea() throws ServletException, IOException {
int level = 0;
String rep = request.getParameter("treetype");
String levell=request.getParameter("level");
String year11=request.getParameter("year");
int year=2007;
if(year11!=null && !(year11.equals(""))){
year=Integer.parseInt(year11);
}
if (levell != null && !(levell.equals(""))) {
level = Integer.parseInt(levell);
}
int totalCount=0;
List<Area> alst;
if (level == 1) {
alst = AreaBean.getAreaByWhere(" u.pid=0");
totalCount = AreaBean.countAreaByWhere("pid=0");
} else{
alst = AreaBean.getAreaByWhere("u.pid<>0");
totalCount = AreaBean.countAreaByWhere("pid<>0");
}
StringBuffer aid = new StringBuffer();
for (Area area : alst) {
aid.append(area.getId());
aid.append(",");
}
aid.deleteCharAt(aid.length() - 1);
String[] aids = aid.toString().split(",");
Map<String, Integer> list = new HashMap<String, Integer>();
int sum;
int val = 0;
for (int j = 0; j < totalCount; j++) {
List<Area> calst = AreaBean.getSAreaByPid(Integer.parseInt(aids[j]));
if (calst.size() > 0) {
sum = 0;
for (Area areat : calst) {
sum=sum+TreeDataBean.TreeListByArea(year, areat.getId(), rep);
}
val = sum;
} else {
val=TreeDataBean.TreeListByArea(year, Integer.parseInt(aids[j]), rep);
}
list.put((AreaBean.getAreaById(Integer.parseInt(aids[j])).getName()), val);
}
JSONArray ja = null;
Map<String, Object> jsonMap = new HashMap<String, Object>();
try {
jsonMap.put("year", year);
jsonMap.put("rows", list);
jsonMap.put("level",level);
ja = JSONArray.fromObject(jsonMap);
} catch (Exception e) {
e.printStackTrace();
}
String resultString = "";
resultString = ja.toString();
resultString = resultString.replace("[", "");
resultString = resultString.replace("]", "");
response.reset();
response.setContentType("text/plain");
response.setHeader("Pragma", "No-Cache");
response.setHeader("Cache-Control", "No-Cache");
response.setDateHeader("Expires", 0);
request.setAttribute("resultString", resultString);
super.forView(ConnMapLink, request, response);
}
其中TreeListByArea方法在javaBean中如下:(求和)
public static Integer TreeListByArea(int year,int aid,String ty){
int val=0;
try{
Session session=HibernateUtilBean.currentSession();
Connection conn=session.connection();
Statement st=conn.createStatement();
String hql="select sum(value) as value from TreeData where year="+year+" and areaid="+aid+" and treetype="+ty;
ResultSet rs=st.executeQuery(hql);
if(rs.next()){
val=rs.getInt("value");
}
conn.close();
}catch(Exception e){
e.printStackTrace();
}
return val;
}
jsp页面测试:
<%@ page language="java" pageEncoding="utf-8"%>
<%
String resultString=(String)request.getAttribute("resultString");
response.getWriter().write(resultString);
%>
结果:
{"level":1,"year":1980,"rows":{"三门峡市":29997,"洛阳市":59994,"周口市":59994,"鹤壁市":0,"安阳市":59994,"平顶山市":49995,"商丘市":49995,"漯河市":59994,"濮阳市":59994,"郑州市":89991,"驻马店市":49995,"信阳市":78881,"南阳市":49995,"济源市":0,"焦作市":39996,"许昌市":39996,"开封市":79992,"新乡市":6106}}