json的应用(原创实例)
json的使用(原创实例)
第一步:
前台核心js代码
function getNoteInfo(pageNo){ var tempPageCount = $("#tempPageCount").val(); if(pageNo==0){ alert("没有上一页"); pageNo = 1; } if(pageNo>tempPageCount){ alert("没有下一页"); pageNo = 1; } $("#fenye").html("正在加载中……"); $.ajax({ type : "post", url : "noteAction.do?mhd=getNoteInfo&pageNo="+pageNo,//获取点评内容 data : null, success:function(msg){ var json = eval('('+msg+')'); var content = ""; for(var i=0;i<json.pagesize;i++){ content += "<div class=\"dplist_each\">"; content += "<div class=\"h30 lh30 oh\">"; content += "<em class=\"fl ml10 fCE6700\">"+json.items[i][0]+"</em>"; content += "<em class=\"fl ml10 f_959595\">发表于:"+json.items[i][1]+"</em>"; content += "<em class=\"fl ml10 f_3866ab\">出游类型:"+json.items[i][2]+"</em>"; content += "</div>"; content += "<div class=\"h25 lh10\">"+json.items[i][3]+"</div>"; if(json.items[i][4]!=null){ content += "<div class=\"h30 lh30 oh\"><strong>"+json.items[i][4]+" 回复于:"+json.items[i][5]+" "+json.items[i][6]+"</strong></div>"; } content += "</div>" } $("#noteInfo").html(content); pageNo = parseInt(pageNo);//设置为数字格式 var ysContent = "<a href=\"javascript:getNoteInfo(1)\" class=\"bluelink mr10\"><<</a>"; var beforeIndex = parseInt(pageNo)-1; var nextIndex = parseInt(pageNo)+1; ysContent += "<a href=\"javascript:getNoteInfo("+beforeIndex+")\" class=\"bluelink mr10\">上一页</a>"; /* 分页显示机制开始 */ if(json.pageCount<=5){ /** 如果总共的页数小于等于5,直接显示从第一页到第五页的按钮 **/ for(var i=1;i<=json.pageCount;i++){ if(pageNo==i){ //是当前页不显示按钮标志 ysContent += "<a class=\"b mr10\">第"+i+"页</a>"; }else{ //非当前页显示按钮标志,可跳转 ysContent += "<a href=\"javascript:getNoteInfo("+i+")\" class=\"bluelink mr10\">第"+i+"页</a>"; } } } else{ /** 如果总共的页数大于5 **/ /*** 计算开始位置 ***/ if(pageNo-2<1){ /** 如果当前页数-2比1还要小,从第一页开始到当前页显示 **/ for(var k=1;k<=pageNo;k++){ if(pageNo==k){ //是当前页不显示按钮标志 ysContent += "<a class=\"b mr10\">第"+k+"页</a>"; }else{ //非当前页显示按钮标志,可跳转 ysContent += "<a href=\"javascript:getNoteInfo("+k+")\" class=\"bluelink mr10\">第"+k+"页</a>"; } } } else{ /** 从当前页倒数第二页开始 **/ ysContent += "..."; for(var k=pageNo-2;k<=pageNo;k++){ if(pageNo==k){ //是当前页不显示按钮标志 ysContent += "<a class=\"b mr10\">第"+k+"页</a>"; }else{ //非当前页显示按钮标志,可跳转 ysContent += "<a href=\"javascript:getNoteInfo("+k+")\" class=\"bluelink mr10\">第"+k+"页</a>"; } } } /*** 计算结束位置 ***/ if(pageNo+2>json.pageCount){ /** 如果当前页数+2比最大数还要大,显示从当前页到最大数那一页 **/ for(var k=pageNo+1;k<=json.pageCount;k++){ ysContent += "<a href=\"javascript:getNoteInfo("+k+")\" class=\"bluelink mr10\">第"+k+"页</a>"; } } else{ /** 从当前页的后两页结束 **/ for(var k=pageNo+1;k<=pageNo+2;k++){ ysContent += "<a href=\"javascript:getNoteInfo("+k+")\" class=\"bluelink mr10\">第"+k+"页</a>"; } ysContent += "..."; } } /* 分页显示机制结束 */ ysContent += "<a href=\"javascript:getNoteInfo("+nextIndex+")\" class=\"bluelink mr10\">下一页</a>"; ysContent += "<a href=\"javascript:getNoteInfo("+json.pageCount+")\" class=\"bluelink mr10\">>></a>"; ysContent += "跳转到 <select name=\"turnPage\" id=\"turnPage\" onchange=\"getNoteInfo(turnPage.value)\">"; for(var j=1;j<=json.pageCount;j++){ if(pageNo==j){ ysContent += "<option value=\""+j+"\" selected>第"+j+"页</option>"; }else{ ysContent += "<option value=\""+j+"\" >第"+j+"页</option>"; } } ysContent += "</select> "; ysContent += "共"+json.results+"条记录,共"+json.pageCount+"页"; $("#fenye").html(ysContent); $("#tempPageCount").attr("value",json.pageCount); } }); }
第二步:
action代码
/** * 获取留言内容 * @param mapping * @param form * @param request * @param response * @return */ public ActionForward getNoteInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ String hotelId = "170942"; int pageSize = TotalJson.pageSize;//每页的条数 int pageCurrent = Integer.parseInt(request.getParameter("pageNo"));//当前页数 try{ int index = (pageCurrent-1)*pageSize; int end = pageCurrent*pageSize; String result = noteserviceImpl.getJsonNoteInfo(hotelId, index, end); System.out.println("留言json内容:"+result); response.getWriter().print(result); }catch (Exception e) { System.out.println(e.getMessage().toString()); } return null; }
第三步:
dao层组件代码
/** * 获取留言内容(带分页功能的) */ public String getJsonNoteInfo(String hotelID,int index,int end) throws Exception { // TODO Auto-generated method stub Connection connection = null; PreparedStatement preparedStatement = null; PreparedStatement preparedStatement2 = null; ResultSet resultSet = null; ResultSet resultSet2 = null; long totalResult = 0;//总共条数 String sql = ""; String sql2 = ""; List list = new ArrayList(); String result = ""; try{ connection = this.jdbc_connector.getJDBCConnection(); sql2 = "select count(*) from hotel_note where HOTELID = ? and STATE = 2"; sql = "select * from (select c.*,rownum n from hotel_note c where HOTELID = ? and STATE = 2) where n>? and n<=? "; preparedStatement2 = connection.prepareStatement(sql2); preparedStatement2.setString(1, hotelID); resultSet2 = preparedStatement2.executeQuery(); while(resultSet2.next()){ totalResult = resultSet2.getInt(1); } preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, hotelID); preparedStatement.setInt(2, index); preparedStatement.setInt(3, end); resultSet = preparedStatement.executeQuery(); while(resultSet.next()){ String[] strings = new String[7]; strings[0] = resultSet.getString("LOGINID"); strings[1] = resultSet.getString("NOTEDATE"); strings[2] = resultSet.getString("TYPE"); strings[3] = resultSet.getString("CONTENT"); strings[4] = resultSet.getString("RENOTEMAN"); strings[5] = resultSet.getString("RENOTEDATE"); strings[6] = resultSet.getString("RENOTECONTENT"); list.add(strings); } result = ExtHelper.getJsonAllInfoFromList(totalResult,list); }catch (Exception e) { e.printStackTrace(); throw new Exception("读取酒店评论出错"); }finally{ if(resultSet2!=null){ resultSet2.close(); } if(resultSet!=null){ resultSet.close(); } if(preparedStatement2!=null){ preparedStatement.close(); } if(preparedStatement!=null){ preparedStatement.close(); } if(connection!=null){ connection.close(); } } return result; }
package com.csair.util; import java.util.ArrayList; import java.util.List; import net.sf.json.JSONObject; import com.csair.hotel.pojo.Hotel; /** * Title: Ext JS 辅助类 * Description: 该类用于转换java对象为XML文件格式或JSON文件格式 * @author weijun * @time: 2008.07.09 */ public class ExtHelper { /** * 通过List生成JSON数据 * @param recordTotal 记录总数,不一定与beanList中的记录数相等 * @param beanList 包含bean对象的集合 * @return 生成的JSON数据 */ public static String getJsonFromList(long recordTotal , List beanList){ int start = 0; int limit = 10; TotalJson total = new TotalJson(); List Ll = new ArrayList(); total.setResults(recordTotal); int pageCount; if(recordTotal % TotalJson.pageSize == 0){ pageCount = (int) (recordTotal/TotalJson.pageSize); }else { pageCount = (int) (recordTotal/TotalJson.pageSize+1); } total.setPageCount(pageCount); total.setPagesize(beanList.size()); total.setItems(beanList); JSONObject JsonObject = JSONObject.fromObject(total); System.out.println(JsonObject.toString()); return JsonObject.toString(); } /** * 通过List生成JSON数据 * @param beanList 包含bean对象的集合 * @return 生成的JSON数据 */ public static String getJsonFromList(List beanList){ return getJsonFromList(beanList.size(),beanList); } /** * 带页数的json格式返回 * @param recordTotal 记录总数,不一定与beanList中的记录数相等 * @param beanList 包含bean对象的集合 * @return 生成的JSON数据 */ public static String getJsonAllInfoFromList(long recordTotal , List<Hotel> beanList){ int start = 0; int limit = 10; TotalJson total = new TotalJson(); List Ll = new ArrayList(); total.setResults(recordTotal); int pageCount; if(recordTotal % TotalJson.pageSize == 0){ pageCount = (int) (recordTotal/TotalJson.pageSize); }else { pageCount = (int) (recordTotal/TotalJson.pageSize+1); } total.setPageCount(pageCount); total.setPagesize(beanList.size()); total.setItems(beanList); JSONObject JsonObject = JSONObject.fromObject(total); System.out.println("json~~~~"+JsonObject.toString()); return JsonObject.toString(); } /** * 通过bean生成JSON数据 * @param bean bean对象 * @return 生成的JSON数据 */ public static String getJsonFromBean(Object bean){ JSONObject JsonObject = JSONObject.fromObject(bean); return JsonObject.toString(); } /** * 生成几个测试用例 * @param args */ public static void main(String[] args) { /* * Example list返回为xml格式的字符串 */ List list=new ArrayList(); list.add("张三"); list.add("李四"); list.add("王五"); list.add("赵六"); /* * Example list返回为Json格式的字符串 */ String testString2=getJsonFromList(10,list); System.out.println(testString2); /* * Example Total返回为Json格式的字符串 */ Total total=new Total(); total.setResults(100); String totalString=getJsonFromBean(total); System.out.println(totalString); } }
package com.csair.util; import java.util.List; public class TotalJson { public static int pageSize = 6;//每页显示的条数 private long results;//总条数 private long pageCount;//总页数 private List items; private long pagesize; public List getItems() { return items; } public void setItems(List items) { this.items = items; } public long getResults() { return results; } public void setResults(long results) { this.results = results; } public long getPageCount() { return pageCount; } public void setPageCount(long pageCount) { this.pageCount = pageCount; } public long getPagesize() { return pagesize; } public void setPagesize(long pagesize) { this.pagesize = pagesize; } }
package com.csair.util; public class Total { private long results; public long getResults() { return results; } public void setResults(long results) { this.results = results; } }