- 浏览: 165896 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
sunjia44:
很不错的方法
JTable设置单元格不可编辑 -
atian25:
主要是html dom生成的太多了.4.x版本中grid得到了 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死! -
aspnetdb:
遇到过同样的情况,纠结中。grid显示不只和行后关系和列的多少 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死! -
beyondsphinx:
我用TABLE一次加载几百行浏览器也卡死啊,客户端电脑,浏览器 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死! -
共产主义:
我也遇到这个问题。用buffergrid加载的时候,数据量一多 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死!
1.数据库内容:
建立数据库:pagetest
c:\>mysql -uroot -p
*******
mysql>create database pagetest ;
创建用户:thtwinj2ee
mysql>grant all privileges on pagetest.* to thtwinj2ee@'%' identified by '123' with grant option ;
创建表:
mysql>create table user(userId int auto_increment,userName varchar(20),primary key(userId)) ;
插入相应的测试数据
mysql> select * from user limit 6,12 ;
+--------+-------------+
| userid | userName |
+--------+-------------+
| 7 | thtwin |
| 8 | jsp |
| 9 | servlet |
| 10 | ajax |
| 11 | mysql |
| 12 | tomcat |
| 13 | myeclipse |
| 14 | jsp分页总结 |
| 15 | jsp分页总结 |
| 16 | jsp分页总结 |
| 17 | jsp分页总结 |
| 18 | jsp分页总结 |
+--------+-------------+
12 rows in set (0.00 sec)
2.Servlet方面的准备
思路:
pageSize(每页的数据条数):从pagesize.xml文件中通过GetPageSizeSevlet来读取(其中应该注意的是pagesize.xml文件路径问题和对GetPageSizeSevlet的配置)详细查看web.xml文件与GetPageSizeSevlet.java文件
其它的Servlet没有什么突出的,代码给出如下(User.java与DBConn.java没有帖):
pagesize.xml
<?xml version="1.0" encoding="UTF-8"?>
<page-config>
<page-size>5</page-size>
</page-config>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>GetPageSizeSevlet</servlet-name>
<servlet-class>cn.hld.edu.servlet.GetPageSizeSevlet</servlet-class>
<init-param>
<!--pagesize.xml存放路径,在Servlet中通过mypageconfig来读取-->
<param-name>mypageconfig</param-name>
<param-value>/WEB-INF/pagesize.xml</param-value>
</init-param>
<!--必须加上下面这个属性配置,不然取不到pageSize-->
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>getUserData</servlet-name>
<servlet-class>cn.hld.edu.servlet.GetDataServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getUserData</servlet-name>
<url-pattern>/getUserData</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>GetPageSizeSevlet</servlet-name>
<url-pattern>/GetPageSizeSevlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
GetPageSizeSevlet.java
package cn.hld.edu.servlet;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
public class GetPageSizeSevlet extends HttpServlet
{
private static int pageSize = 0 ;
public static int getPageSize()
{
return pageSize;
}
public static void setPageSize(int pageSize)
{
//注意此处与一般的类成员的区别!
GetPageSizeSevlet.pageSize = pageSize;
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
}
@Override
public void init() throws ServletException
{
initPageSize() ;
}
public void initPageSize()
{
//String xmlDir = System.getProperty("user.dir") ;
//xmlDir += this.getInitParameter("mypageconfig") ;
String xmlDir = this.getServletConfig().getServletContext().getRealPath("/");
xmlDir += this.getInitParameter("mypageconfig") ;
System.out.println("读取到的XML文件的路径为: " + xmlDir);
//读取到的XML文件的路径为: D:\Tomcat 5.5\webapps\Pagination\/WEB-INF/pagesize.xml
/*
System.getProperties().getProperty("user.dir")user.dir是死的
InputStream is = null ;
is = this.getServletContext().getResourceAsStream("xmlDir") ;
SAXBuilder saxBuilder = new SAXBuilder(false) ;
读取XML文件用dom4j
public void readXml(String path){
SAXReader xml=new SAXReader();
try{
Document doc=xml.read(path);
System.out.println("根节点:"+dom.getRootElement().getName());
Element ele=dom.getRootElement();
List list=ele.elements();
Iterator iter=list.iterator();
}catch(Exception e){e.printStackTrace();}
}
*/
Document doc = null ;
DocumentBuilderFactory df = DocumentBuilderFactory.newInstance() ;
try
{
DocumentBuilder db = df.newDocumentBuilder() ;
doc = db.parse(new File(xmlDir)) ;
String strPageSize = doc.getElementsByTagName("page-size").item(0).getFirstChild().getNodeValue() ;
pageSize = Integer.parseInt(strPageSize) ;
}
catch(Exception e)
{
e.printStackTrace() ;
}
}
}
GetDataServlet.java
package cn.hld.edu.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.hld.edu.dao.GetUserDataDao;
public class GetDataServlet extends HttpServlet
{
HttpSession session = null ;
int curPage = 1 ;
int pageSize = 0 ;
int allPages = 0 ;
int allCount = 0 ;
int position = 0 ;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
//别人建议不要用session
//session = req.getSession() ;
String strCurPage = req.getParameter("curPage") ;
try
{
curPage = Integer.parseInt(strCurPage) ;
}
catch(NumberFormatException e)
{
//System.out.println("curPage类型转换错误!");
curPage = 1 ;
}
//从servlet中读取数据web.xml配置servlet时必须加上<load-on-startup>这个属性
this.pageSize = GetPageSizeSevlet.getPageSize() ;
this.allCount = GetUserDataDao.getAllPages() ;
//进行相应的校正
this.correct();
this.position = (curPage-1) * pageSize ;
List userList = new ArrayList() ;
userList = GetUserDataDao.getUserListByCurPage(position,pageSize) ;
Map map = new HashMap() ;
map.put("userList", userList) ;
map.put("curPage", curPage) ;
map.put("allPages", allPages) ;
//session.setAttribute("userList", userList) ;
//session.setAttribute("map", map) ;
req.setAttribute("map", map) ;
req.getRequestDispatcher("index.jsp").forward(req, res) ;
}
public void correct()
{
if(allCount % pageSize == 0 )
{
allPages = allCount / pageSize ;
}
else
{
allPages = allCount / pageSize + 1 ;
}
if(this.curPage <= 0)
{
this.curPage = 1 ;
}
else if(this.curPage > this.allPages)
{
this.curPage = this.allPages ;
}
}
@Override
protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException
{
doGet(arg0,arg1) ;
}
}
GetUserDataDao.java
package cn.hld.edu.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import cn.hld.edu.vo.User;
public class GetUserDataDao
{
public static List getUserListByCurPage(int position,int pageSize)
{
List list = new ArrayList() ;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
Connection conn = null ;
conn = DBConn.getConn() ;
String sql = "select * from user limit ?,?" ;
try
{
pstmt = conn.prepareStatement(sql) ;
//之前还忘记了,设的时候是从1开始
pstmt.setInt(1, position) ;
pstmt.setInt(2, pageSize) ;
rs = pstmt.executeQuery() ;
while(rs.next())
{
User user = new User() ;
//之前还忘记了,取的时候是从1开始
user.setUserId(rs.getInt(1)) ;
user.setUserName(rs.getString(2)) ;
list.add(user) ;
}
}
catch(SQLException e)
{
e.printStackTrace() ;
System.out.println("分页查询出错!");
}
return list ;
}
public static int getAllPages()
{
int allPages = 0 ;
Connection conn = null ;
conn = DBConn.getConn() ;
try
{
Statement stmt = conn.createStatement() ;
ResultSet rs = stmt.executeQuery("select count(*) from user") ;
rs.next() ;
allPages = rs.getInt(1) ;
}
catch(Exception e)
{
e.printStackTrace() ;
}
return allPages ;
}
}
3.JSP的展现方面源代码如下(数字分页实现不好!):
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="cn.hld.edu.vo.*,java.util.List,java.util.Iterator,java.util.Map,java.util.HashMap"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<style type="text/css">
a
{
text-decoration:none ;
margin:5px ;
}
a:hover
{
background:#5ef8fc ;
}
</style>
</head>
<body>
<table border="1">
<tr>
<td>用户编号</td>
<td colspan="5">用户名</td>
</tr>
<%
Map map = (Map)request.getAttribute("map") ;
int curPage = Integer.parseInt(map.get("curPage").toString()) ;
int allPages = Integer.parseInt(map.get("allPages").toString()) ;
List userList = (List)map.get("userList") ;
Iterator it = userList.iterator() ;
while(it.hasNext())
{
User user = (User)it.next() ;
%>
<tr>
<td><%=user.getUserId()%></td>
<td colspan="5"><%=user.getUserName()%></td>
</tr>
<%
}
%>
<tr>
<td>共<%=allPages %>页</td>
<td>第<%=curPage %>页</td>
<td><a href="getUserData?curPage=<%=(curPage - 1) %>">上一页</a></td>
<td>
<script language="javascript">
for(var i = <%=curPage %> ; i <= <%=(curPage + 5 > allPages?allPages:curPage + 5)%> ; i++)
{
document.write("<a href=\'getUserData?curPage=" + i + "\'>" + i + "<//a>") ;
}
</script>
</td>
<td><a href="getUserData?curPage=<%=(curPage + 1) %>">下一页</a></td>
<td>
<form action="getUserData" method="get">
<select name="curPage">
<%
for(int i = 1 ; i <= allPages ; i++)
{
%>
<option value="<%=i %>" <%=(i==curPage?"selected":"") %>><%=i %></option>
<%
}
%>
</select>
<input type="submit" value="Go"/>
</form>
</td>
</tr>
</table>
</body>
</html>
- Pagination.rar (478.8 KB)
- 描述: Servlet读取XML文件实现JSP简单分页
- 下载次数: 45
发表评论
-
java-发短信(duanxinmao)
2010-03-14 08:21 1507import javax.comm.*; import ja ... -
KindEditor图片上传相关问题 (转)
2010-03-06 17:33 3435从众多的Web编辑器中选择KindEditor ,主要是看重它 ... -
KindEditor的上传图片CGI(JSP版) (转)
2010-03-06 16:42 1879见过、用过很多网页在线编辑器,如:fckEditor、eWeb ... -
java web和servlet结合使用为数据库备份
2010-01-27 13:26 1598使用Runtime类的方法备份数据库和web下载结合起来,就可 ... -
汉字编码问题
2010-01-18 13:02 692汉字编码问题。以下是 ... -
一个实现将动态页面转为静态的方案
2009-08-16 00:15 7161.前言 为了能深入浅出的理解这个框架的由来,我们首先来了解一 ... -
JAVA的JSP中生成静态页面技术解决方案系列(一,二)(转帖)
2009-08-16 00:14 829生成静态页面技术解决方案系列(一) 2006 ... -
java web中的路径全接触
2009-07-22 00:46 11511.基本概念的理解 绝对路径:绝对路径就是你的主页上的文 ... -
JSTL中定义String数组
2009-07-22 00:45 2479<c:choose> <c:whe ... -
servlet过滤器
2009-07-22 00:44 726一、字符编码的过滤器 import javax.servle ... -
Servlet和Filter的url匹配url-pattern
2009-07-22 00:42 1013估计大多数朋友都是直接配置用,也没有关心过具体的细节,今天遇 ...
相关推荐
总的来说,Servlet读取XML文件实现JSP分页涉及了Java的文件I/O、XML解析、数据处理、HTTP请求处理和页面渲染等多个环节,是一个综合性的Web开发任务。通过这种方式,我们可以构建一个灵活且可扩展的分页系统,满足...
总的来说,Servlet读取XML文件实现JSP分页的过程涉及了文件I/O、XML解析、Servlet与JSP交互以及前端分页展示等多个环节,是一个综合性的Java Web开发实例。通过对这个案例的学习,开发者可以更好地理解和掌握Java ...
在分页实现中,Servlet通常用于计算总页数、获取当前页的数据,并将这些信息传递给JSP。 **3. EL表达式** EL(Expression Language)是JSP 2.0引入的一种轻量级的脚本语言,用于在JSP页面中简便地访问JavaBean属性...
这个项目主要展示了如何利用Java来处理XML文件,实现了对XML数据的CRUD(创建、读取、更新、删除)操作,并通过JSP页面进行前端展示,同时结合了分页技术,使得用户可以方便地浏览大量的留言数据。 首先,Java在该...
本文将详细介绍如何使用Java Server Pages(JSP)技术来实现XML内容的分页显示,并进一步探讨如何将此方法扩展到其他查询的分页功能。 首先,理解基本原理:分页通常涉及计算总页数、当前页以及每页应显示的条目...
【标题】"JSP+servlet实现后台超市管理系统"是一个典型的Web应用开发项目,它结合了Java服务器页面(JSP)和Servlet技术,用于构建一个基于Java的后台管理系统。在这个系统中,开发人员使用了JDK 1.7作为Java开发...
这通常通过Apache POI库来实现,该库允许Java程序创建、修改和读取Microsoft Office格式的文件,包括Excel。 总的来说,这个项目涵盖了Web开发中的一些核心实践,包括前后端交互、数据库操作、数据安全、用户体验...
该文件可能包含JSP页面(如register.jsp、listUsers.jsp等)、Servlet类(如RegistrationServlet.java)以及相关的配置文件(如web.xml)。开发者可以通过分析和运行这个示例,了解如何在实际项目中结合JSP和Servlet...
【标题】"jsp+servlet增删改查分页显示"涉及的是Web开发中的核心功能,主要涵盖JavaServer Pages(JSP)和Servlet技术在数据库操作中的应用,特别是针对数据的CRUD(创建、读取、更新、删除)操作以及分页显示。...
这个项目结合了JDBC(Java Database Connectivity)、Servlet、Filter和JSP(JavaServer Pages)技术来实现对单一数据表的完整操作,并且包含分页功能,使得数据管理更加高效。 **JDBC** 是Java中与数据库交互的...
在这个场景中,我们关注的是如何使用Servlet来实现文件的上传和下载功能,同时结合Tomcat服务器和XML文件进行数据存储。以下是关于这些知识点的详细说明: 1. **Servlet**: Servlet是Java EE规范的一部分,它是一...
在Java Web开发中,"基于jsp+servlet、使用原生ajax,实现单表增删改查、文件上传、条件查询和分页" 是一个常见的实战项目,非常适合初学者熟悉整个Web应用开发流程。这个项目主要涵盖了以下几个核心知识点: 1. **...
在本项目中,“jsp+servlet+MySQL实现的微博项目源码”是一个基于JavaWeb技术的微型社交网络平台,主要用于教学和入门级实践。这个项目融合了多种核心技术,旨在帮助开发者理解如何将这些组件结合在一起创建一个功能...
- **JSP分页.rar**:这个压缩包可能提供了JSP分页的具体实现,包括HTML表单、JSP脚本和对应的Servlet代码,供初学者学习和参考。 - **xiaoxiang.fileUpload.2.2.rar**:可能是一个名为“小象”的文件上传组件的版本...
本项目是关于使用Java服务器页面(JSP)和Servlet技术,结合ExtJS前端框架,实现数据的创建(Create)、读取(Read)、更新(Update)和删除(Delete),也就是常说的CRUD操作。这是一个典型的Web应用程序开发示例,...
在本文中,我们将深入探讨如何使用Java JSP技术来实现基本的CRUD(创建、读取、更新和删除)操作,以及分页查询功能。这是一个非常适合初学者的实践项目,尤其是对在校学生而言,能够帮助他们更好地理解Web开发的...
【Java购物车】是一个基于JSP(JavaServer Pages)和Servlet技术实现的Web应用程序,它模拟了实际在线购物过程中的商品选择、添加到购物车、查看购物车内容以及结算等功能。这个项目对于初学者来说是一个很好的实践...
在"jsp简单留言本"项目中,Servlet通常用于接收HTTP请求,执行业务逻辑(如添加、读取或删除留言),然后可能将控制权传递给JSP来渲染结果页面。 **JSP基础知识:** 1. **指令元素**:JSP提供了三种类型的指令元素...
【标题】"简单的超市进销系统,使用Servlet+Jsp+JavaBean实现.zip"是一个针对初学者或学生设计的IT项目,旨在教授如何利用Java Web技术构建一个基础的超市库存管理平台。这个系统包含了从商品进货到销售的全流程管理...