`
haiyangyiba
  • 浏览: 14406 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

不妨看看我用dwr和json完成简单分页-jsp dwr分页(mssqlserver2005)

阅读更多

以前用dwr写的分页,感觉稍微有点麻烦,简单,可以在csdn的http://download.csdn.net/source/1413703下载,sqlser2000的数据库。

 

说明:我对json不熟悉,也不是陌生的那种,就是没怎么使用过,只是知道一点点。如果你也是这样的话,不妨你先看看

这里我的上一篇,我还是觉得挺简单的,代码没怎么细化,总体上讲简单,附上一下文件的源文件。

 

1、分页毫无疑问肯定有数据库链接类,注意,这里是mssql2005的数据库

package com.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * @Info 数据库链接管理类
 * @Email wwwchendonglisahao@163.com
 * @QQ 271069593
 */
public class DBManager {

	private static final String URL = "jdbc:sqlserver://localhost:1433;databasename=Struts";
	
	private static final String USERNAME = "sa";
	
	private static final String PASSWORD = "";
	
	public static Connection getConnection(){

		Connection con = null;
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
		} catch (Exception e) {
			System.out.println("DBManager.getConnection()" + e.getMessage());
			e.printStackTrace();
		}
		
		return con;
	}
	
	public static void Close(ResultSet rs ,PreparedStatement pst,Connection conn){
		
		try {
			if (rs != null)
				rs.close();
			if (pst != null)
				pst.close();
			if (conn != null)
				conn.close();
		} catch (Exception e) {
			System.out.println("DBManager.Close()" + e.getMessage());
			e.printStackTrace();
		}		
		
	}
	
}

 

2、数据库表结构信息

use struts

--drop table account
--新建表
create table account(
  id int identity(1,1) primary key,
  username varchar(10) default '',
  age int ,
  sex varchar(2)
)

--向表插入100条数据
declare @age int
declare @sex varchar(2)
set @age = 1
while(@age<=100)
begin
   if(@age%3=0)
   begin
     set @sex = '男'
   end
   else 
     set @sex = '女'
   insert into account values('冬冬',@age,@sex);
   set @age = @age + 1
end

--查询表数据
select * from account

 

3、dwr环境配置

(1)、web.xml配置

<servlet>
    <servlet-name>dwr-remote</servlet-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>true</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>dwr-remote</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

 (2)、dwr.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "dwr30.dtd">

<dwr>
	<allow>
		<create creator="new" javascript="p">
			<param name="class" value="com.dao.AnalysePage"></param>
		</create>
	</allow>
</dwr>

 

说明:我是把dwr3.0的dtd文件下载下来了,所以上面的这一行<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "dwr30.dtd">红字部分请注意。

 

4、分页处理类

package com.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;

import com.db.DBManager;

/**
 * 处理完成分页,让dwr在页面上调用处理
 *
 */
public class AnalysePage {

	private Connection conn = null;
	private PreparedStatement pst = null;
	private ResultSet rs = null;
	
	/**
	 * 处理分页的方法
	 * 默认为每页显示10条数据
	 * @param page 页数
	 */
	public ArrayList<String> loadAll(int page){
		
		ArrayList<String> list = null;
		int pageSize = 10;
		
		String sql = "select top " + pageSize + " *,(select count(0) from Account) as datasizes from Account where id not in (select top " + (pageSize * (page-1)) + " id from Account)";
		System.out.println(sql);
		conn = DBManager.getConnection();
		try {
			pst = conn.prepareStatement(sql);
			rs = pst.executeQuery();
			ResultSetMetaData rsmd = rs.getMetaData();
			int columnCounts = rsmd.getColumnCount();
			if(rs.next()){
				list = new ArrayList<String>();
				
				int datasizes = rs.getInt("datasizes");
				int count = (int)Math.round(Math.ceil((double)datasizes/(double)pageSize));
				
				do{
					String json = "";
					
					for(int i=1;i<=columnCounts;i++){
						
						String columnName = rsmd.getColumnName(i);
						String columnValue = rs.getString(i);
						if("datasizes".equals(columnName)){
							columnValue = count + "";
						}
						if(i==1){
							json += "{";
						}
						
						if(i==columnCounts){
							json += columnName + ":'" + columnValue + "'";
							json += "}";
							break;
						}
						json += columnName + ":'" + columnValue + "',";
						
					}
					list.add(json);
					
				}while(rs.next());
				
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			DBManager.Close(rs, pst, conn);
		}
		
		return list;
		
	}
	
	public static void main(String[] args) {
		
		AnalysePage dao = new AnalysePage();
		ArrayList<String> list = dao.loadAll(1);
		System.out.println(list.toString());
		for (String string : list) {
			System.out.println(string);
		}
		
	}
	
}

 

5、index.jsp页面使用

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>分页列表页面</title>
	<meta http-equiv="pragma" content="no-cache" />
	<meta http-equiv="cache-control" content="no-cache" />
	<meta http-equiv="expires" content="0" />    
  	
  	<script type='text/javascript' src='<%=path %>/dwr/interface/p.js'></script>
  	<script type='text/javascript' src='<%=path %>/dwr/engine.js'></script>
  	<script type='text/javascript' src='<%=path %>/dwr/util.js'></script>
  	
  	<style type="text/css">
  		#mybody td{
  			text-align: center;
  		}
  	</style>
  	
  	<script type="text/javascript">
  		
  		var pageid = 1;
  		var totalpage = 1;
  		
  		function loadPage(){
  			p.loadAll(pageid,analyseData);
  		}
  		
  		function analyseData(objjson){
  			
  			var nodata = document.getElementById("nodata");
  			if(objjson==null||objjson.length==0){
  				nodata.style.display = "block";
  				return ;
  			}
			var tbody = document.getElementById("mybody");
			
			removeTRS(tbody);//显示数据前,先清空数据
			
			for(var i=0;i<objjson.length;i++){
		    	var jj = objjson[i];
				eval("var json = " + jj + ";");
				totalpage = json.datasizes;
				document.getElementById("totalpage").innerHTML = totalpage;
				var tr = document.createElement("tr");
				for(var j in json){
					if("datasizes"==j){
						continue;
					}
					var td = document.createElement("td");
					td.innerHTML = json[j];
					tr.appendChild(td);
				}
				tbody.appendChild(tr);
			}
  			
  		}
  		
  		dwr.util.useLoadingMessage();
  		
  		/**
  		*清空tr的数据
  		*/
  		function removeTRS(obj){
  			
  			var len = obj.childNodes.length;
  			for(var i=0;i<len;i++){
  				obj.removeChild(obj.firstChild);
  			}
  		}
  		
  		function goFirstPage(){
 			//判断当前是否为第一页,如果为第一页则不必去加载数据 		
  			if(pageid==1){
  				alert("已经为首页!");
  				return;
  			}
  			pageid = 1;
  			p.loadAll(1,analyseData);
  			document.getElementById("thispage").innerHTML = pageid;
  		}
  		
  		function goNextPage(){
  			if(pageid==totalpage){
  				alert("已经为最末页,没有下1页!");
  				return;
  			}
  			pageid = pageid + 1;
  			document.getElementById("thispage").innerHTML = pageid;
  			p.loadAll(pageid,analyseData);
  		}
  		
  		function goPrePage(){
  			if(pageid==1){
  				alert("已经为第1页,没有上一页!");
  				return;
  			}
  			pageid = pageid - 1;
  			document.getElementById("thispage").innerHTML = pageid;
  			p.loadAll(pageid,analyseData);
  		}
  		
  		function goLastPage(){
  			if(pageid==totalpage){
  				alert('已经为最末页!');
  				return;
  			}
  			pageid = totalpage;
  			p.loadAll(pageid,analyseData);
  			document.getElementById("thispage").innerHTML = pageid;
  		}
  	</script>
  	
  	
  <body>
    
    <table style="border-collapse: collapse;" bordercolor="#FFCCFF" width="60%" border="1">
    	
    	<tr>
    		<th>编号</th>
    		<th>名称</th>
    		<th>年龄</th>
    		<th>性别</th>
    	</tr>
    	<tbody id="mybody">
    		<tr id="nodata" style="display: none;">
    			<td style="text-align: center;" colspan="4">没有数据!</td>
    		</tr>
    	</tbody>
    	<tr>
    		<td colspan="4" style="text-align: center;">
    			<a href="javascript:void(0);" onclick="goFirstPage();" style="padding:5px;">首页</a>
    			<a href="javascript:void(0);" onclick="goPrePage();" style="padding:5px;">上一页</a>
    			<a href="javascript:void(0);" onclick="goNextPage();" style="padding:5px;">下一页</a>
    			<a href="javascript:void(0);" onclick="goLastPage();" style="padding:5px;">末页</a>
    			<span id="thispage">1</span>/<span id="totalpage">loading...</span>
    		</td>
    	</tr>
    </table>
    
    <script type="text/javascript">
    	window.onload = loadPage;
    </script>
    
  </body>
</html>

 

0
3
分享到:
评论

相关推荐

    dwr + json简单分页

    在本项目中,我们将深入探讨如何利用DWR和JSON实现简单的分页功能。 首先,我们需要了解DWR的基本概念。DWR的核心是通过创建一个代理,使JavaScript可以像调用本地函数一样调用服务器端的Java方法。DWR提供了自动...

    dwr框架实现无刷新分页

    - **Remoting**:DWR实现了JavaScript和Java之间的远程调用,使前后端数据交换变得简单。 2. **DWR的主要组件:** - **Engine**:处理所有客户端到服务器的请求。 - **Ajax Engine**:处理与AJAX相关的请求。 -...

    DWR简单配置说明---xml、java、jsp层层说明

    ### DWR简单配置详解 #### 一、简介 Direct Web Remoting (DWR) 是一个开源框架,它简化了从JavaScript调用Java方法的过程。DWR不仅提供了远程调用的功能,还内置了一些辅助功能,例如数据序列化和安全性检查等。...

    dwr分页源码,dwr分页源码

    DWR (Direct Web Remoting) 是一个开源Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行双向通信。DWR使得动态Web应用能够轻松地实现Ajax(Asynchronous JavaScript and XML)功能,即在不刷新...

    dwr 分页示例(jsp)

    总的来说,"dwr分页示例(jsp)"是一个展示如何利用DWR和Ajax技术在JSP页面中实现高效、用户友好的数据分页功能的实例。通过理解DWR的工作机制、配置、JavaScript调用以及前端界面的构建,开发者可以构建出自己的...

    dwr的使用返回json

    Direct Web Remoting (DWR) 是一个开源的Java库,它允许在JavaScript和服务器端的Java之间进行异步通信,从而实现Web应用的Ajax功能。在这个例子中,我们将深入探讨如何利用DWR来返回JSON数据。 JSON(JavaScript ...

    dwr实现无刷新分页

    6. **状态维护**:为了确保用户在页面之间导航时能够保持状态,可以使用URL参数或隐藏表单字段来存储当前页码和分页设置。当页面加载时,可以读取这些值并初始化分页控件。 7. **优化性能**:考虑到大量数据可能...

    dwr源码包,dwr.jar包下载

    1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: &lt;!-- 配置DWR --&gt; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; &lt;servlet-class&gt; org.directwebremoting.servlet.DwrServlet &lt;/servlet-class&gt; ...

    dwr入门 -- 03 -- 结合Spring

    7. **测试与调试**:了解如何测试DWR和Spring结合的功能,包括使用浏览器的开发者工具进行调试,以及使用DWR提供的监控和日志功能。 由于没有具体的压缩包文件内容,我们无法深入探讨具体代码和实现细节。但通过...

    Struts2.0+dwr的分页

    DisplayTag是一个强大的JSP标签库,提供了易于使用的分页和排序功能。使用DisplayTag,你需要在Action中获取到数据的总条数和当前页的数据,然后在JSP页面上使用DisplayTag的标签进行显示。另一种方式是通过自定义...

    dwr实现的分页功能

    - `pagination.jsp`: JSP页面,包含分页条和数据展示区域,使用JavaScript处理分页逻辑。 通过以上步骤,我们可以利用DWR和JSP实现一个高效、无刷新的分页功能,为用户提供更加流畅的浏览体验。在实际开发中,还...

    dwr,jar和dwr-noncla.jar

    Direct Web Remoting (DWR) 是一个开源Java库,它允许在Web应用程序中轻松地进行JavaScript和服务器端Java代码之间的交互。DWR使得AJAX(Asynchronous JavaScript and XML)开发更为简便,允许开发者在不刷新整个...

    dwr.jar/dwr-2.0.5-src.zip/dwr.zip

    这个资源包包含了DWR的jar文件和源代码,可以帮助开发者深入了解并使用DWR框架。 1. **DWR.jar**: 这是DWR的核心库文件,包含了运行DWR所需的所有类和资源。当你在项目中引入dwr.jar,你可以使用DWR提供的API来...

    dwr-yui实现分页

    在本场景中,"dwr-yui实现分页"指的是利用DWR和YUI库来实现网页的分页功能。 分页是Web应用程序中常见的功能,尤其是处理大量数据时,它可以提高用户体验,避免一次性加载过多内容导致页面加载慢或者浏览器崩溃。...

    DWR 入門與應用-林信良

    DWR (Direct Web Remoting) 是一个开源的Java库,用于在Web应用程序中实现Ajax功能,使得JavaScript可以直接调用服务器端的Java方法,从而实现实时的、无需刷新页面的数据交互。DWR充当了Java开发者和网页设计者之间...

    整理好的DWR-2.0.5-src

    这个不是我的原创,原文件出至这里:...原资源包含了,源代码和API Doc,只是美中不足的是没有整理成可用的zip文档,我这特分离了一下,并重新打好包了,初步测试了一下能用。

    dwr+hibernate实现的分页技术

    ### dwr+hibernate实现的分页技术详解 在当今快速发展的互联网环境中,网站和应用程序需要处理大量的数据。为了提高用户体验并优化服务器资源利用,分页技术成为了必不可少的一部分。本文将详细介绍如何通过结合dwr...

Global site tag (gtag.js) - Google Analytics