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

用Ajax和DWR做的静态分页功能源代码

    博客分类:
  • DWR
阅读更多

首先在数据库里面添加N条信息
我这里是用sqlserver2005做的

开启Eclipse 新建项目,新建类DBHelper类,连接数据库的帮助类  

1.   DBHelper

public class DBHelper {
	private Connection conn;

	private Statement stmt;

	private ResultSet rs;

	/**
	 * 创建数据库连接
	 * 
	 */
	private void getConnection() {
		String driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
		String url = "jdbc:sqlserver://localhost:1433;databasename=ajax03";
		String username = "sa";
		String password = "123456";

		// 1、加载驱动
		try {
			Class.forName(driverClassName);
		} catch (ClassNotFoundException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
		// 2、获取连接

		try {
			conn = DriverManager.getConnection(url, username, password);
		} catch (SQLException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
	}

	/**
	 * 用statement执行查询,外面调用的时候,要关闭数据库资源
	 * 
	 * @param sql
	 * @return
	 * @throws SQLException
	 */
	public ResultSet executeQuery(String sql) throws SQLException {
		getConnection();
		stmt = conn.createStatement();
		rs = stmt.executeQuery(sql);
		return rs;
	}

	/**
	 * 关闭数据库资源
	 * 
	 */
	public void close() {
		try {
			if (rs != null) {
				rs.close();
			}
			if (stmt != null) {
				stmt.close();
			}
			if (conn != null && !conn.isClosed()) {
				conn.close();
			}
		} catch (SQLException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
	}

}

 DBHelper类已创建成功,接着创建它的实体类Province,我们在这里假设有2列数据(id ,name)

2.   Province

public class Province {
	private Integer id;
	private String name;

	public Province() {
		super();
	}

	public Province(Integer id, String name) {
		super();
		this.id = id;
		this.name = name;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

 接着开始创建逻辑类,首先考虑的是,分页需要哪些步骤,有些什么功能,在数据库里面如何写sql语句,我在这里简单的写了些功能

3. PageDao

 

public class PageDao {

	private DBHelper helper = new DBHelper();

	/*
	 * 每页的记录数
	 */
	private int pageSizes=10 ;

	/*
	 * 总页数
	 */
	private int totalPage;

	/*
	 * 当前行号
	 */
	private int currentPage = 1;
	
	/**
	 * 得到所有数据
	 * @return
	 */
	public int getTotalPage(int total) {
		total =0;
		String sql = "select * from tbl_province";
		try {
			ResultSet rs = helper.executeQuery(sql);
			while (rs.next()) {
				total++;
			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			helper.close();
		}
		totalPage = (int) Math.ceil(total/(double)pageSizes);
		return totalPage  ;
	}
	
	/**
	 * 分页
	 * @param page
	 * @return
	 */
	public List<Province> getPage(int page ,int pageSize) {
		pageSizes = pageSize;
		String sql = "SELECT TOP " + pageSizes + " * "
				+ "FROM tbl_province WHERE (id NOT IN " + "(SELECT TOP "
				+ (pageSizes*(page-1)) + " id " + "FROM tbl_province order by id)) "
				+ "order by id";
		List<Province> list = new ArrayList<Province>();
		try {
			ResultSet rs = helper.executeQuery(sql);
			while (rs.next()) {
				Province province = new Province();
				province.setId(rs.getInt("id"));
				province.setName(rs.getString("name"));
				list.add(province);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			helper.close();
		}
		return list;
	}

	/**
	 * 得到第一页
	 * @param page
	 * @return
	 */
	public int getFistPage(int page) {
		currentPage = page;
		return currentPage;
	}
	
	/**
	 * 得到最后一页
	 * @param page
	 * @return
	 */
	public int getLastPage(int page) {
		totalPage = getTotalPage(page-1);
		page = totalPage;
		return totalPage;
	}

	/**
	 * 下一页
	 * @param page
	 * @return
	 */
	public int hasNextPage(int page) {
		totalPage = getTotalPage(page);
		if (page >= totalPage) {
			return totalPage;
		}
		currentPage = page+1;
//		System.out.println(totalPage);
		return currentPage ++;

	}
	/**
	 * 上一页
	 * @param page
	 * @return
	 */
	public int hasPreviousPage(int page) {
		totalPage = getTotalPage(page);
		if (page <= 1) {
			return 1;
		}
		currentPage = page;
		return currentPage -1;
	}
	
	/**
	 * 得到当前的页数
	 * @param page
	 * @return
	 */
	public int getNowPage(int page){
		currentPage = page;
		return currentPage;
	}
	
}

 基本上的逻辑已经完成,现在只需要界面上的代码,就可以实现简单的分页了...

 当然在web.xml 和 dwr.xml中的配置可不能忘记,这里我就不多说了

 在index.jsp中导入dwr的配置文件

<script type='text/javascript' src='/项目名/dwr/engine.js'></script>
		<script type='text/javascript' src='/项目名/dwr/util.js'></script>
		<script type='text/javascript'
			src='/项目名/dwr/interface/PageDao.js'></script>

 完成之后开始js脚本 和页面的设置

<script type="text/javascript">
		DWREngine.setOrdered(true);
		var page = 1;
			function getPage(pages){
				page = pages;
				PageDao.getPage(pages,$("psizes").value,showPage);
			}
			//用来确定显示具体数据的
			var cellFunctions=[
				//第一列显示什么数据,item就是相应的对象
				function(item){return item.id},
				//第二列显示什么数据
				function(item){return item.name}
			]
			function showPage(data){
				
				totalPage();
				getNpage();
				
				DWRUtil.removeAllRows("abc");
				DWRUtil.addRows("abc", data, cellFunctions);
				
			}
			
			//得到第一页
			function fistPage(){
				PageDao.getFistPage(1,getPage);
				if(page <= 1){
					alert("已经是第一页了...");
				}
			}
			
			//下一页
			function nextPage(){
				PageDao.hasNextPage(page,getPage);
				var total = $("total").innerHTML;
				if(page >= total){
					alert("已经是最后一页了...");
				}
			}
			
			//上一页
			function previousPage(){
				PageDao.hasPreviousPage(page,getPage);
				if(page <= 1){
					alert("已经是第一页了...");
				}
			}
			
			//最后一页
			function lastPage(){
			var total = $("total").innerHTML;
				PageDao.getLastPage(page,getPage);
				if(page >= total){
					alert("已经是最后一页了...");
				}
			}
			
			//到第几页
			function myPage(page){
				PageDao.getNowPage(page,getPage);
			}
			
			function getTotal(data){
				$("total").innerHTML=data;
				setForPage();
				setPageId();
			}
			
			//显示得到现在的页面数
			function getNow(data){
				$("pid").innerText=data;
				$("pageSize").options[data-1].selected =true;
			}
			
			//得到总共的页面书
			function totalPage(){
				PageDao.getTotalPage(page,getTotal);
			}
			//得到现在的页面数
			function getNpage(){
				PageDao.getNowPage(page,getNow);
			}
			//设置下拉框到的页面
			function setForPage(){
				$("pageSize").length=0;
				var allPageNumber = $("total").innerHTML;
				for(i=1;i<=allPageNumber;i++){
					$("pageSize").options.add(new Option(i,i));
				}
			}
			//得到页面的数字
			function setPageId(){
				$("pageId").innerHTML="";
				var allPageNumber = $("total").innerHTML;
				for(i=1;i<=allPageNumber;i++){
					if(page != i){
						$("pageId").innerHTML += "<a href='javascript:myPage("+i+")'>"+"[ "+i+" ]"+"</a>"+"  ";
					}else{
						$("pageId").innerHTML += "[<span style='color:red'> "+i+" </span>]";
					}                                                                                                                    
				}
			}
		</script>

	</head>

	<body onload="getPage(1);">
		请输入每页要显示的数据:
		<input type="text" name="pageSizes" id="psizes" size="1" value="10" />
		<input type="button" onclick="fistPage();" value="确定">
		<br>
		<table border="1" width="600">
			<caption>
				简单的分页功能
			</caption>
			<thead>
				<tr>
					<th>
						ID
					</th>
					<th>
						名字
					</th>
				</tr>
			</thead>
			<tbody id="abc">
			</tbody>

		</table>
		<tbody>
			<tr>
				<td>
					<a href="javaScript:fistPage()">首页</a>
				</td>
				<td>
					<a href="javaScript:previousPage()" id="up">上一页</a>
				</td>
				<td style="color:red">
					
						<span id="pageId">  </span>
						
				</td>
				<td>
					<a href="javaScript:nextPage()" id="next">下一页</a>
				</td>
				<td>
					<a href="javaScript:lastPage()">最后一页</a>
				</td>
				<td>
					第
					<select id="pageSize" onchange="myPage(this.value)">
						<option selected="selected">
					</select>
					页
				</td>
			</tr>
		</tbody>
		第
		<span id="pid">1</span> 页    总共有
		<span id="total">0</span>页 
	</body>

 

简单的静态分页功能就这样实现了,可能我写的有点问题吧,但大致就是这样了,其实还有更简单的方法,但我这个人比较懒,一直都没去做了,如果有什么问题,可以给我留言,大家一起好好讨论。

  • 大小: 52 KB
分享到:
评论

相关推荐

    dwr实现ajax功能ajax+dwr

    `Ajax主要代码.txt`可能包含了一些关键的Ajax代码示例。`ajax登录`可能是一个实际的DWR应用示例,展示如何实现无刷新的登录功能。`dwrdemo`可能是一个完整的DWR演示项目,包含运行示例的源代码。`dwr需要用的jar`是...

    JavaEE源代码 dwr.jar 2.0

    JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源...

    ajax DWR分页机制

    本文将深入探讨Ajax和DWR在分页机制中的应用,以及如何利用它们来构建高效的分页功能。 ### 1. Ajax分页基础 Ajax分页的核心在于通过异步请求获取服务器上的部分数据,而不是一次性加载所有内容。这减少了网络传输...

    dwr实现的分页功能

    DWR(Direct Web Remoting)是一个...通过以上步骤,我们可以利用DWR和JSP实现一个高效、无刷新的分页功能,为用户提供更加流畅的浏览体验。在实际开发中,还需要结合具体的业务需求和项目架构进行适当的调整和优化。

    dwr分页源码,dwr分页源码

    在本压缩包中,我们很可能是获取到了一组与DWR分页相关的源代码,这将帮助我们理解如何在DWR框架下实现分页功能。 在Web应用中,分页是一种常见的数据展示方式,尤其是当处理大量数据时,它可以提高用户体验并减轻...

    SSH+ajax(DWR)增删改查+分页

    采用SSH+ajax(DWR)实现增删改查+分页的功能!!含有数据库!可以直接运行!

    dwr框架实现无刷新分页

    6. **测试与优化**:运行项目,测试分页功能是否正常,根据实际需求进行性能优化。 **四、MyDwrPage文件解析** 在提供的文件"**MyDwrPage**"中,可能包含以下内容: - HTML模板,用于展示分页界面和数据区域。 - ...

    ajax的DWR框架入门例子

    这个例子包含了源代码和调试成功的案例,这意味着我们可以直接运行和学习,而无需从零开始搭建环境。 首先,DWR的基本概念包括: 1. **配置**:在DWR的配置文件(通常为dwr.xml)中,我们需要定义哪些Java类和方法...

    AJAX框架DWR简单应用

    在提供的“AJAX框架DWR简单应用.pdf”文件中,你可能会找到关于如何设置DWR环境、编写Java接口、配置DWR配置文件、在前端JavaScript中使用DWR,以及示例代码和实际运行效果的详细教程。这个文件是学习和理解DWR工作...

    dwr和ajax技术

    5. **集成DWR和Ajax**:理解何时使用DWR,何时使用纯Ajax,以及如何将两者结合使用,以优化Web应用性能。 6. **实战应用**:通过阅读提供的文档和示例,实践创建简单的DWR和Ajax应用,如实时搜索、无刷新表格更新等...

    Ajax(DWR实现例子)

    DWR还提供了其他功能,如批量调用、缓存控制、错误处理等,以提高性能和用户体验。此外,DWR支持多种浏览器,包括IE、Firefox、Chrome等,确保了良好的兼容性。 通过以上介绍,我们可以看到,DWR简化了Ajax应用的...

    dwr-2.0.3-源代码

    此外,对于希望学习Ajax技术或者想要自定义DWR功能的开发者,理解源代码是必不可少的一步。 总的来说,DWR 2.0.3的源代码是一份宝贵的教育资源,它揭示了Ajax通信背后的细节,是提升Web开发技能的重要途径。通过...

    Dwr无刷新分页.rar

    在描述中提到的“dwr无刷新分页实例代码”,意味着这个压缩包包含了使用DWR实现分页功能的具体示例代码。这通常包括JavaScript、HTML、以及可能的Java后端代码。通过这些代码,开发者可以学习如何在不刷新整个页面的...

    ajax_dwr包

    5. **示例代码和教程**:可能包含演示如何使用DWR创建AJAX效果的HTML、JavaScript和Java文件,这对于初学者理解和学习DWR非常有帮助。 使用DWR,开发者可以创建以下类型的AJAX应用: - **实时更新**:比如股票报价...

    Ajax + struts 与 ajax 的 dwr 框架的使用

    - **使用Ajax标签库**:像DWR这样的框架提供了Ajax标签库,使得在JSP页面上直接调用Ajax请求变得简单。 - **返回JSON或XML**:Action处理完业务逻辑后,可以返回JSON或XML数据,这些数据将在前端被解析并用于更新DOM...

    ajax的dwr包

    总结起来,DWR是一个强大的工具,它简化了Ajax开发,提供了丰富的功能和良好的安全性,使得开发者能够更加专注于业务逻辑的实现,而不是技术细节。如果你正在寻找一种方式来增强你的Web应用的交互性和响应速度,DWR...

    Ajax+DWR示例

    在这个"Ajax+DWR示例"中,提供了两个使用Ajax和DWR结合的实际应用例子。这些例子可能包含以下关键知识点: 1. **DWR配置**:在Web应用程序中,需要配置DWR的Context.xml和DWRServlet映射,以启用DWR服务。 2. **...

    AJAX 与 DWR框架

    Direct Web Remoting (DWR) 是一个开源Java框架,简化了在Web应用中使用Ajax的技术。DWR允许JavaScript代码直接调用服务器端的Java方法,将Java对象转换为JavaScript对象,反之亦然。这样,开发者无需关心底层的...

    dwr实现无刷新分页

    DWR(Direct Web Remoting)是一种Java技术,用于在Web应用程序中实现实时的、无需刷新页面的Ajax交互。无刷新分页是现代Web应用中常见的功能,它提高了用户体验,让用户能够在浏览大量数据时轻松地切换和加载不同...

    dwr和ajax使用demo

    DWR是Ajax的一种实现方式,它提供了一种更简洁、更易用的接口来使用Ajax。DWR自动处理了XMLHttpRequest对象的创建、请求的发送和响应的处理,使得开发者可以专注于业务逻辑,而不是底层的通信细节。 五、DWR使用...

Global site tag (gtag.js) - Google Analytics