第一步:
前台核心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;
}
}
分享到:
相关推荐
在Android开发中,"Recyclerview+json+图片展示+上下拉取刷新" 是一个常见的应用场景,主要用于构建数据密集型的用户界面,如新闻列表、商品展示等。...记得在使用和分享代码时,尊重原创,标明来源。
日期转换格式 把一个json数组串转换成普通数组,实体数组,且数组元素的属性含有另外实例Bean。把实体Bean、Map对象、数组、列表集合转换成Json串
【描述】"计算机专业毕业设计Python源代码+开发文档说明"说明这些代码是为计算机专业学生的毕业设计准备的,意味着它们可能是某个项目的一部分,旨在教授学生如何使用Python进行网络爬虫的开发。此外,它还提到包含...
学习如何使用JSON和XML解析数据,以及如何进行异步编程,是iOS开发者必备的技能。 此外,iOS应用还可能涉及数据库存储。Core Data是Apple提供的一个对象图形管理系统,用于处理数据模型、持久化和对象关系映射。...
"PHP实例开发源码——金点网络原创图标在线生成器 PHP版.zip" 是一个基于PHP编程语言的实例项目,主要用于创建在线图标生成器。这个项目由金点网络开发,提供了完整的源代码,让开发者可以研究、学习或在自己的项目...
通过阅读和修改源码,初学者可以深入理解小程序的生命周期、组件使用、网络请求、数据管理等核心概念。 总的来说,“微信小程序实例-小熊日记.zip”提供了一个可实践的微信小程序项目,对于学习和掌握微信小程序...
5. 用户认证与授权:源码可能包含了用户注册、登录、权限验证等模块,这涉及到session和cookie的使用,以及可能的OAuth2或JWT(JSON Web Tokens)等现代认证机制。 6. 文件夹和文件权限:在资源管理器中,权限管理...
总之,《SpringBoot原创歌曲分享平台》项目是一个全面展示SpringBoot应用开发的实例,涵盖了Web开发、数据库操作、安全控制等多个方面,对于想要深入学习SpringBoot及其生态的开发者来说,具有很高的参考价值。
1、为了照顾到低版本用户使用了.Net 2.0开发,所以没能使用.Net高版本提供的json序列化功能,所以使用了Newtonsoft.Json控件,非常感谢此控件作者,控件相关信息请搜索。 2、SocketObj.cs、Sort.cs两个类以及...
创建一个MusicService,将MediaPlayer实例化并绑定到服务中。这样即使用户离开应用,音乐仍能继续播放。同时,通过BroadcastReceiver监听媒体按键事件,实现全局播放控制。 【豆瓣API集成】 作为豆瓣第三方客户端...
此外,类间可能会有协作,如`AddressBook`类操作`Contact`实例,展示了多态性和接口的使用。 2. **GUI设计**:为了实现用户友好的交互界面,项目可能使用了Java Swing或JavaFX库。这些库提供了一系列组件(如JFrame...
Result则是Action执行后展示的结果,通常用来跳转到不同的JSP页面或者返回JSON、XML等数据。Interceptor则扮演拦截器的角色,它在Action执行前后进行额外的处理,如日志记录、权限检查等。 Struts2的配置文件通常是...
"原创android仿QQ微信,融云输入框"项目正是这样一个实例,它实现了融云SDK与微信、QQ风格的输入框功能。下面将详细阐述这个项目中的关键知识点。 首先,我们关注的是自定义View的概念。在Android中,系统提供的...
- 初始化Lua虚拟机,如示例代码所示,创建`LuaEnv`实例,并设置自定义的加载器`MyLoader`。 7. **使用Lua虚拟机**: - 在`Awake`方法中,通过`DoString`加载Lua脚本。 - `OnDisable`和`OnDestroy`方法分别用于...
《Android项目:扬子地板仓库管理系统详解》 在IT行业中,Android系统因其开源特性,成为开发者构建各种应用程序的首选平台。...同时,这个项目也提醒我们在使用开源资源时需遵守相关法律法规,尊重原创,合理使用。
data.php 包含一个价格日历生成类和 一些实例 product.php ajax产品的json格式 style 样式和js文件 说明: 此程序中js是驴妈妈上的,我做了些修改,做学习用,精简了代码和功能,只提供酒店和门票,部分提交url请...
这意味着使用者不能将此源码直接应用于商业项目,否则可能会侵犯原创者的知识产权。如果想在实际项目中使用类似功能,建议购买官方授权或者自行开发。 6. **文件列表**:由于未提供具体的文件名列表,我们无法详细...
Solr是一款高性能、可伸缩的企业级搜索引擎,它是Apache Lucene的分布式应用实例,广泛应用于各种需要全文搜索的应用场景中。MySQL则是一种关系型数据库管理系统,因其性能稳定、使用简便等特点,在各类项目中有着...
【描述】中的“原创,jsp+ajax实现”表明这个项目是使用JavaServer Pages (JSP) 和 AJAX 结合的方式创建的。JSP 是一种服务器端的动态网页技术,它可以嵌入Java代码来处理HTTP请求和响应。通过结合AJAX,开发者可以在...