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 += "跳转到&nbsp;&nbsp;<select name=\"turnPage\" id=\"turnPage\" οnchange=\"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>&nbsp;&nbsp;";
				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;
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值