从客户端传过来的参数为:limit,start
服务端代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@page import="java.sql.SQLException"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.ResultSet"%> <%@page import="com.gr.jiang.json.JsonString"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <% Connection con = null ; ResultSet set = null ; PreparedStatement pre = null ; try{ Class.forName("com.mysql.jdbc.Driver").newInstance() ; String url = "jdbc:mysql://localhost:3306/news_mobile" ; con = DriverManager.getConnection(url,"root","jiang") ; int pagecount = 0 ; String SEL = "SELECT * FROM books limit ?,?" ; String COU = "SELECT COUNT(*) FROM books" ; pre = con.prepareStatement(SEL) ; pre.setInt(1,Integer.parseInt(request.getParameter("start"))) ; pre.setInt(2,Integer.parseInt(request.getParameter("limit"))) ; set = pre.executeQuery() ; int count = 0 ; //JsonString json = new JsonString() ; String str = "[" ; while(set.next()){ str += "{\"id\":\""+set.getInt("id")+"\",\"image_url\":\"" +set.getString("image_url")+"\",\"book_name\":\"" +set.getString("book_name")+"\",\"author\":\"" +set.getString("author")+"\",\"description\":\"" +set.getString("description")+"\"}," ; // json.start() ; //json.setJson("id",set.getInt("id")) ; //json.setJson("image_url",set.getString("image_url")) ; //json.setJson("book_name",set.getString("book_name")) ; //json.setJson("author",set.getString("author")) ; //json.setJson("description",set.getString("description")) ; //json.end() ; count = set.getRow() ; } str = str.substring(0,str.length()-1)+"]" ; //System.out.println(str) ; pre = con.prepareStatement(COU) ; set = pre.executeQuery() ; set.next() ; pagecount = set.getInt(1) ; if(count > 0){ out.println("{\"success\":\"true\",\"bookCount\":\""+pagecount+"\",\"books\":"+str+"}") ; } else { out.println("{\"success\":\"false\",\"message\":\"读取数据失败\"}") ; } }catch(SQLException e){ out.println("{\"success\":\"false\",\"message\":\"读取数据失败\"}") ; e.printStackTrace() ; }finally{ set.close() ; pre.close() ; con.close() ; } %>
客户端app.js:
Ext.require([ 'Ext.data.Store', 'Ext.data.reader.Json', 'Ext.dataview.DataView' ]) Ext.application({ name: 'MyApp', icon: 'images/icon.png', glossOnIcon: false, phoneStartupScreen: 'images/phone_startup.png', tabletStartupScreen: 'images/tablet_startup.png', launch: function() { Ext.define('BookInfo', { extend: 'Ext.data.Model', config:{ fields:['image_url','book_name','author','description'] } }); var bookReader=Ext.create('Ext.data.reader.Json',{ type: 'json', rootProperty: 'books', totalProperty:'bookCount' }); var pageCount;//页数 var bookStore=Ext.create('Ext.data.Store',{ autoLoad:true, model:'BookInfo', proxy: { type: 'ajax', url : 'http://10.65.9.223:8080/news_mobile/json.jsp', reader: bookReader }, pageSize:5, scope:this, listeners: { load:function(store,records,successful,operation) { //读取数据失败 if(!successful) //弹出错误信息 Ext.Msg.alert( this.getProxy().getReader().rawData.message ); else { var recordCount=bookReader.rawData[bookReader.getTotalProperty()]; var pageSize=this.getPageSize(); pageCount=(recordCount-recordCount%pageSize)/pageSize; if(recordCount%pageSize>0) pageCount+=1; Ext.getCmp('pageInfo').setText( String(this.currentPage)+"/"+pageCount+"页" ); } } } }); var toolbar =Ext.create('Ext.Toolbar',{ docked : 'bottom', width:'100%', layout:{ type:'hbox', pack:'center' }, items: [ { iconMask:true, iconCls: 'firstpage', handler:function(){ bookStore.loadPage(1); } }, { iconMask:true, iconCls: 'arrow_left', handler:function(){ if(bookStore.currentPage>1) { bookStore.previousPage(); } } }, { iconMask:true, iconCls: 'arrow_right', handler:function(){ if(bookStore.currentPage<pageCount) { bookStore.nextPage(); } } }, { iconMask:true, iconCls: 'lastpage', handler:function(){ bookStore.loadPage(pageCount); } }, { html:'', style:'font-size:16px', id:'pageInfo' }] }); var bookTemplate=new Ext.XTemplate( '<tpl for=".">', '<div class="Book_img"><img src="{image_url}"/></div>', '<div class="Book_info">', '<h2>{book_name}</h2><br><h3>作者:{author}<h3>', '<p>{description:ellipsis(40)}</p>', '</div>', '</tpl>' ); var dataview=Ext.create('Ext.DataView',{ store:bookStore, items:toolbar, itemTpl:bookTemplate, emptyText:'没有数据', baseCls:'Book' }); Ext.Viewport.add(dataview); } });
HTML <!DOCTYPE html> <html> <head> <title>对服务器端数据进行分页</title> <link rel="stylesheet" href="css/application.css" type="text/css"> <style type="text/css"> .Book-item { padding: 10px 0 10px 68px; border-top: 1px solid #ccc; } .Book-item h2 { font-weight: bold; } .Book-item .Book_img { position: absolute; left: 10px; } .Book-item .Book_img img { max-width: 59px; } .Book-item .Book_info{ padding-left:5px; font-size:12px; } </style> <script src="js/sencha-touch.js"> </script><script src="js/app.js"></script> </head> <body></body> </html>
时间: 2024-11-05 15:49:14