`

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\" 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>&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;
	}
}

 

分享到:
评论

相关推荐

    Recyclerview+json+图片展示+上下拉取刷新

    在Android开发中,"Recyclerview+json+图片展示+上下拉取刷新" 是一个常见的应用场景,主要用于构建数据密集型的用户界面,如新闻列表、商品展示等。...记得在使用和分享代码时,尊重原创,标明来源。

    json格式转换

    日期转换格式 把一个json数组串转换成普通数组,实体数组,且数组元素的属性含有另外实例Bean。把实体Bean、Map对象、数组、列表集合转换成Json串

    爬虫代码实例源码大全(实例).rar

    【描述】"计算机专业毕业设计Python源代码+开发文档说明"说明这些代码是为计算机专业学生的毕业设计准备的,意味着它们可能是某个项目的一部分,旨在教授学生如何使用Python进行网络爬虫的开发。此外,它还提到包含...

    ios开发实例

    学习如何使用JSON和XML解析数据,以及如何进行异步编程,是iOS开发者必备的技能。 此外,iOS应用还可能涉及数据库存储。Core Data是Apple提供的一个对象图形管理系统,用于处理数据模型、持久化和对象关系映射。...

    PHP实例开发源码——金点网络原创图标在线生成器 PHP版.zip

    "PHP实例开发源码——金点网络原创图标在线生成器 PHP版.zip" 是一个基于PHP编程语言的实例项目,主要用于创建在线图标生成器。这个项目由金点网络开发,提供了完整的源代码,让开发者可以研究、学习或在自己的项目...

    微信小程序实例-小熊日记.zip

    通过阅读和修改源码,初学者可以深入理解小程序的生命周期、组件使用、网络请求、数据管理等核心概念。 总的来说,“微信小程序实例-小熊日记.zip”提供了一个可实践的微信小程序项目,对于学习和掌握微信小程序...

    PHP实例开发源码—PHP可道云在线网盘源码(资源管理器).zip

    5. 用户认证与授权:源码可能包含了用户注册、登录、权限验证等模块,这涉及到session和cookie的使用,以及可能的OAuth2或JWT(JSON Web Tokens)等现代认证机制。 6. 文件夹和文件权限:在资源管理器中,权限管理...

    springboot原创歌曲分享平台.zip

    总之,《SpringBoot原创歌曲分享平台》项目是一个全面展示SpringBoot应用开发的实例,涵盖了Web开发、数据库操作、安全控制等多个方面,对于想要深入学习SpringBoot及其生态的开发者来说,具有很高的参考价值。

    基于QQ OpenAPI V3的.Net SDK TencentOpenAPI(原创)

    1、为了照顾到低版本用户使用了.Net 2.0开发,所以没能使用.Net高版本提供的json序列化功能,所以使用了Newtonsoft.Json控件,非常感谢此控件作者,控件相关信息请搜索。 2、SocketObj.cs、Sort.cs两个类以及...

    原创 Android 音乐播放器(豆瓣第三方客户端)

    创建一个MusicService,将MediaPlayer实例化并绑定到服务中。这样即使用户离开应用,音乐仍能继续播放。同时,通过BroadcastReceiver监听媒体按键事件,实现全局播放控制。 【豆瓣API集成】 作为豆瓣第三方客户端...

    java通讯录 本人原创

    此外,类间可能会有协作,如`AddressBook`类操作`Contact`实例,展示了多态性和接口的使用。 2. **GUI设计**:为了实现用户友好的交互界面,项目可能使用了Java Swing或JavaFX库。这些库提供了一系列组件(如JFrame...

    Struts2原创讲义

    Result则是Action执行后展示的结果,通常用来跳转到不同的JSP页面或者返回JSON、XML等数据。Interceptor则扮演拦截器的角色,它在Action执行前后进行额外的处理,如日志记录、权限检查等。 Struts2的配置文件通常是...

    原创android仿QQ微信,融云输入框

    "原创android仿QQ微信,融云输入框"项目正是这样一个实例,它实现了融云SDK与微信、QQ风格的输入框功能。下面将详细阐述这个项目中的关键知识点。 首先,我们关注的是自定义View的概念。在Android中,系统提供的...

    Unity_XLua热更流程,原创

    - 初始化Lua虚拟机,如示例代码所示,创建`LuaEnv`实例,并设置自定义的加载器`MyLoader`。 7. **使用Lua虚拟机**: - 在`Awake`方法中,通过`DoString`加载Lua脚本。 - `OnDisable`和`OnDestroy`方法分别用于...

    Android项目:扬子地板仓库管理系统说明资源来源网络以及部分开源社区、仅供参考与学习、项目不可商用、一切后果由使用者承担

    《Android项目:扬子地板仓库管理系统详解》 在IT行业中,Android系统因其开源特性,成为开发者构建各种应用程序的首选平台。...同时,这个项目也提醒我们在使用开源资源时需遵守相关法律法规,尊重原创,合理使用。

    js酒店价格日历_js门票价格日历_javascript价格日历

    data.php 包含一个价格日历生成类和 一些实例 product.php ajax产品的json格式 style 样式和js文件 说明: 此程序中js是驴妈妈上的,我做了些修改,做学习用,精简了代码和功能,只提供酒店和门票,部分提交url请...

    小程序源码(无后台)_易打卡 表单设计.rar

    这意味着使用者不能将此源码直接应用于商业项目,否则可能会侵犯原创者的知识产权。如果想在实际项目中使用类似功能,建议购买官方授权或者自行开发。 6. **文件列表**:由于未提供具体的文件名列表,我们无法详细...

    图解Solr5.3.1与MySQL配置【原创】

    Solr是一款高性能、可伸缩的企业级搜索引擎,它是Apache Lucene的分布式应用实例,广泛应用于各种需要全文搜索的应用场景中。MySQL则是一种关系型数据库管理系统,因其性能稳定、使用简便等特点,在各类项目中有着...

    AJAX实现无刷新简易聊天室

    【描述】中的“原创,jsp+ajax实现”表明这个项目是使用JavaServer Pages (JSP) 和 AJAX 结合的方式创建的。JSP 是一种服务器端的动态网页技术,它可以嵌入Java代码来处理HTTP请求和响应。通过结合AJAX,开发者可以在...

Global site tag (gtag.js) - Google Analytics