首先在数据库里面添加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
分享到:
相关推荐
`Ajax主要代码.txt`可能包含了一些关键的Ajax代码示例。`ajax登录`可能是一个实际的DWR应用示例,展示如何实现无刷新的登录功能。`dwrdemo`可能是一个完整的DWR演示项目,包含运行示例的源代码。`dwr需要用的jar`是...
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在分页机制中的应用,以及如何利用它们来构建高效的分页功能。 ### 1. Ajax分页基础 Ajax分页的核心在于通过异步请求获取服务器上的部分数据,而不是一次性加载所有内容。这减少了网络传输...
DWR(Direct Web Remoting)是一个...通过以上步骤,我们可以利用DWR和JSP实现一个高效、无刷新的分页功能,为用户提供更加流畅的浏览体验。在实际开发中,还需要结合具体的业务需求和项目架构进行适当的调整和优化。
在本压缩包中,我们很可能是获取到了一组与DWR分页相关的源代码,这将帮助我们理解如何在DWR框架下实现分页功能。 在Web应用中,分页是一种常见的数据展示方式,尤其是当处理大量数据时,它可以提高用户体验并减轻...
采用SSH+ajax(DWR)实现增删改查+分页的功能!!含有数据库!可以直接运行!
6. **测试与优化**:运行项目,测试分页功能是否正常,根据实际需求进行性能优化。 **四、MyDwrPage文件解析** 在提供的文件"**MyDwrPage**"中,可能包含以下内容: - HTML模板,用于展示分页界面和数据区域。 - ...
这个例子包含了源代码和调试成功的案例,这意味着我们可以直接运行和学习,而无需从零开始搭建环境。 首先,DWR的基本概念包括: 1. **配置**:在DWR的配置文件(通常为dwr.xml)中,我们需要定义哪些Java类和方法...
在提供的“AJAX框架DWR简单应用.pdf”文件中,你可能会找到关于如何设置DWR环境、编写Java接口、配置DWR配置文件、在前端JavaScript中使用DWR,以及示例代码和实际运行效果的详细教程。这个文件是学习和理解DWR工作...
5. **集成DWR和Ajax**:理解何时使用DWR,何时使用纯Ajax,以及如何将两者结合使用,以优化Web应用性能。 6. **实战应用**:通过阅读提供的文档和示例,实践创建简单的DWR和Ajax应用,如实时搜索、无刷新表格更新等...
DWR还提供了其他功能,如批量调用、缓存控制、错误处理等,以提高性能和用户体验。此外,DWR支持多种浏览器,包括IE、Firefox、Chrome等,确保了良好的兼容性。 通过以上介绍,我们可以看到,DWR简化了Ajax应用的...
此外,对于希望学习Ajax技术或者想要自定义DWR功能的开发者,理解源代码是必不可少的一步。 总的来说,DWR 2.0.3的源代码是一份宝贵的教育资源,它揭示了Ajax通信背后的细节,是提升Web开发技能的重要途径。通过...
在描述中提到的“dwr无刷新分页实例代码”,意味着这个压缩包包含了使用DWR实现分页功能的具体示例代码。这通常包括JavaScript、HTML、以及可能的Java后端代码。通过这些代码,开发者可以学习如何在不刷新整个页面的...
5. **示例代码和教程**:可能包含演示如何使用DWR创建AJAX效果的HTML、JavaScript和Java文件,这对于初学者理解和学习DWR非常有帮助。 使用DWR,开发者可以创建以下类型的AJAX应用: - **实时更新**:比如股票报价...
- **使用Ajax标签库**:像DWR这样的框架提供了Ajax标签库,使得在JSP页面上直接调用Ajax请求变得简单。 - **返回JSON或XML**:Action处理完业务逻辑后,可以返回JSON或XML数据,这些数据将在前端被解析并用于更新DOM...
总结起来,DWR是一个强大的工具,它简化了Ajax开发,提供了丰富的功能和良好的安全性,使得开发者能够更加专注于业务逻辑的实现,而不是技术细节。如果你正在寻找一种方式来增强你的Web应用的交互性和响应速度,DWR...
在这个"Ajax+DWR示例"中,提供了两个使用Ajax和DWR结合的实际应用例子。这些例子可能包含以下关键知识点: 1. **DWR配置**:在Web应用程序中,需要配置DWR的Context.xml和DWRServlet映射,以启用DWR服务。 2. **...
Direct Web Remoting (DWR) 是一个开源Java框架,简化了在Web应用中使用Ajax的技术。DWR允许JavaScript代码直接调用服务器端的Java方法,将Java对象转换为JavaScript对象,反之亦然。这样,开发者无需关心底层的...
DWR(Direct Web Remoting)是一种Java技术,用于在Web应用程序中实现实时的、无需刷新页面的Ajax交互。无刷新分页是现代Web应用中常见的功能,它提高了用户体验,让用户能够在浏览大量数据时轻松地切换和加载不同...
DWR是Ajax的一种实现方式,它提供了一种更简洁、更易用的接口来使用Ajax。DWR自动处理了XMLHttpRequest对象的创建、请求的发送和响应的处理,使得开发者可以专注于业务逻辑,而不是底层的通信细节。 五、DWR使用...