当前位置:文档之家› JavaBean+Servlet+jsp实现分页显示(原创)

JavaBean+Servlet+jsp实现分页显示(原创)

JavaBean+Servlet+jsp实现分页显示(原创)
JavaBean+Servlet+jsp实现分页显示(原创)

JavaBean+Servlet+jsp实现分页显示(原创)实现效果图

代码:

(1)JavaBean

PageDivide.java

package com.bean;

import java.io.UnsupportedEncodingException;

import java.sql.*;

import java.util.ArrayList;

import java.util.List;

import com.myutil.DBCon;

public class PageDivide {

int sumRecord=0; //显示的总记录条数

int pageRecord=5; //每页显示的记录数

int pageNum=0; //显示的总页码数

int showPage=1; //所要显示的页码数

private Connection con=null;

private PreparedStatement pstm=null;

private ResultSet rs=null;

private String sql="select * from category";

public PageDivide(){

//数据库连接

con=DBCon.getConn();

try {

pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CON CUR_UPDATABLE);

rs=pstm.executeQuery();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

this.sumRecord=this.getSumRecord();

// this.setSumRecord(this.getSumRecord());

this.pageNum=this.getPageNum();

}

//获取总记录数

public int getSumRecord() {

try {

rs=pstm.executeQuery();

https://www.doczj.com/doc/6213076722.html,st();

sumRecord=rs.getRow();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return sumRecord;

}

public List getData(int n){

List list=new ArrayList();

if(n<1)

{

n=1;

}

if(n>=pageNum)

{

n=pageNum;

}

int begin=(n-1)*pageRecord+1;//获取第n页的第一条记录的位置值

try {

rs=pstm.executeQuery();

rs.absolute(begin);//将结果集的游标定位到第n页的第一条记录

for(int i=0;i

//处理最后一页的特殊情况

try {

int id = rs.getInt(1);

String categoryName = rs.getString(2);

//中文处理

categoryName=new

String(categoryName.getBytes("ISO8859_1"),"GB2312") ;

int parentID = rs.getInt(3);

int layer = rs.getInt(4);

String bz = rs.getString(5);

//中文处理

bz=new String(bz.getBytes("ISO8859_1"),"GB2312") ;

// 封装信息到实体中

Category category = new Category();

category.setId(id);

category.setCategoryName(categoryName);

category.setParentID(parentID);

category.setLayer(layer);

category.setBz(bz);

list.add(category);

rs.next();

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// if (rs != null)

// pstm.close();

// if (pstm != null)

// pstm.close();

// if (con != null)

// con.close();

rs.close();

pstm.close();

con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return list;

}

public void setSumRecord(int sumRecord) {

this.sumRecord = sumRecord;

}

public int getPageRecord() {

return pageRecord;

}

public void setPageRecord(int pageRecord) {

this.pageRecord = pageRecord;

}

//计算总页码数

public int getPageNum() {

if(sumRecord%pageRecord==0)

{

pageNum=sumRecord/pageRecord;

}else

{

pageNum=sumRecord/pageRecord+1;

}

System.out.println("总页数"+pageNum +" 总记录条数"+sumRecord+" 每页显示的记录数"+pageRecord);

return pageNum;

}

public void setPageNum(int pageNum) {

this.pageNum = pageNum;

}

public int getShowPage() {

return showPage;

}

public void setShowPage(int showPage) {

this.showPage = showPage;

}

}

附数据库连接类:DBCon.java

package com.myutil;

import java.sql.*;

//数据库驱动加载及连接

public class DBCon {

int x;

public static Connection getConn(){

Connection con=null;

String driver;

String url;

driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";

url="jdbc:microsoft:sqlserver://localhost:1433;databas eName=bookManager";

try{

Class.forName(driver);

con=DriverManager.getConnection(url,"sa","*****");

}catch(Exception e){

e.printStackTrace();

}finally{

return con;

}

}

//数据源方式连接

public static Connection getConn2(){

Connection con=null;

String driver;

String url;

driver="sun.jdbc.odbc.JdbcOdbcDriver";

url="jdbc:odbc:book";

try{

Class.forName(driver);

con=DriverManager.getConnection(url);

}catch(Exception e){

e.printStackTrace();

}finally{

return con;

}

}

public static void main(String args[]){

getConn2();

}

}

---------------------------------------------------------------------------------------------------------------------- (2)Servlet

PageServlet.java

package com.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.bean.PageDivide;

public class PageServlet extends HttpServlet {

/**

* Constructor of the object.

*/

public PageServlet() {

super();

}

/**

* Destruction of the servlet.

*/

public void destroy() {

super.destroy(); // Just puts "destroy" string in log

// Put your code here

}

/**

* The doGet method of the servlet.

*

* This method is called when a form has its tag value method equals to get.

*

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=GB2312");

PrintWriter out = response.getWriter();

//1.创建分页Bean对象

PageDivide pd=new PageDivide();

String showPage=request.getParameter("showPage");//获取所要显示的页码数字符串

int n;//获取所要显示的页码数

int pageNum=pd.getPageNum();//获取总页码数

if(showPage==null||"".equals(showPage)){

n=1;

}

else if(Integer.parseInt(showPage)>pageNum){

n=pageNum;

}

else{

n=Integer.parseInt(showPage);

}

//获取第n页数据

List list=pd.getData(n);

request.setAttribute("showPage", new Integer(n));//保存当前所显示的页码

request.setAttribute("pageNum", new Integer(pageNum));//保存总页数

request.setAttribute("data", list); //保存第n页的数据

request.getRequestDispatcher("/PageDivide/pagedivide2.jsp").forward(request, response);//页面的转向

out.flush();

out.close();

}

/**

* The doPost method of the servlet.

*

* This method is called when a form has its tag value method equals to post.

*

* @param request the request send by the client to the server

* @param response the response send by the server to the client

* @throws ServletException if an error occurred

* @throws IOException if an error occurred

*/

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doGet(request, response);

}

/**

* Initialization of the servlet.

*

* @throws ServletException if an error occurs

*/

public void init() throws ServletException {

// Put your code here

}

}

----------------------------------------------------------------------------------------------------------------------

(3)Jsp显示页面

pagedivide2.jsp

<%@page language="java"import="java.util.*,com.bean.*"

pageEncoding="GB2312"%>

<%@page contentType="text/html;GB2312"%>

My JSP 'pagedivide2.jsp' starting page

<%!

int showPage=1;

int pageNum=0;

%>

<%

Integer

spstr=(Integer)request.getAttribute("showPage");//获取当前所显示的页码

Integer

pnstr=(Integer)request.getAttribute("pageNum");//获取总页数 List list=(ArrayList) request.getAttribute("data"); //获取第n页的数据

//处理当前页码值

if(spstr==null||"".equals(spstr)){

showPage=1;

}

else{

// showPage=Integer.parseInt(spstr);

showPage=spstr.intValue();

}

//处理总页数

pageNum=pnstr.intValue();

//显示第n页的值

for(int i=0;i

Category c=(Category)list.get(i);

out.print(c.getCategoryName()+" "+c.getId()+" "+c.getBz());

out.print("
");

}

%>


第一页

下一页

上一页

最后一页

---------------------------------------------------------------------------------------------------------------------- Ps:本人初学javaweb,上述代码如有什么错误或不足之处欢迎指正。谢谢。

VS2010+自带分页实现及操作

VS2010 自带分页实现及操作 这里以一个简单的签到系统为例子进行讲解。 先看一下,假设你已经设计好的初始页面,其中填写原因是对点击此条记录进行修改。 图1-1 上图中可以看到已经设置了分页,分页具体设置如下:选择gridview的属性,开启自动分页。 图1-2

然后在gridview的事件里选择分页的事件:如图1-3,可以直接双击就可以。 图1-3

点击填写原因就是报错,下标越界的提示。

这样就解决了第二页下标越界的问题了。 最后遗留的问题是:填写了迟到原因返回后要去到达修改前的那一页。 1.我首先可以在点击填写原因的时候获得当前页的索引int iPageIndex = gvAttend.PageIndex; //获取当前页的索引 2.然后把此ipageIndex一起传到修改页面去。 String URLString= String.Format("FillReason.aspx?WorkDate={0}&CardId={1}&AttendTime={2}&LateReason={ 3}&iPageIndex={4}", WorkDate, cardid, AttendTime, LateReason, iPageIndex); 3.得到修改后以后,再把此ipageIndex传回的修改前的页面。当前页接收 此ipageIndex后,赋值个gridview的pageindex。 int pageindex = Convert.ToInt32(Request.QueryString["pageindex"]); gvAttend.PageIndex=pageindex; 以上所有操作就完成了,vs2010自带分页及操作的功能。

分页的实现步骤

为什么需要分页? 1.从客户角度来讲,数据内容过多,查看数据非常不便。 2.从服务器和网络的角度来讲,查这么多数据,传输这么多数据,是一种效率很低的做法。分页的核心SQL: 最简单最原始的分页: 分页的简单过程: 用户点击第一页传递一个参数:Num=1到后台,服务器获取num=1将该参数传到Dao 中,dao中:select * from tb_article where id>10 limit ?,?;, ps.setint((num-1)*10),返回一个List,传递到jsp中进行显示,发送给客户端。 1.

2.

3.访问:channel.jsp,然后点击在下面的页号导航即可看到简单的分页效果。 首页上一页1,2,3,4,5,6,7,8,9,10 下一页末页共101页 分页的实现原理: 1.获得需要显示的总的记录数rowCount—》从数据库中取 2.设定每页最多显示的记录数size—》10 3.指定显示的页码:num →作为参数得到 4.所要显示的数据对象→根据startRow和size从数据库中查出! 5.根据rowCount,size,num可计算出其余的元素: a)本页面从第几个记录开始:startRow = (this.num-1) * size; b)共有多少页:pageCount = (int) Math.ceil((double)rowCount/size); c)list:包含了所要显示的数据对象的集合 d)下一页:next=Math.min( this.pageCount, this.num+1) e)上一页:prev = Math.max(1 , this.num-1) f)页号控制元素: numCount:每页最多显示多少页号。(一共显示numCount+1个页号) start = Math.max(this.num-numCount/2, first); //本页显示页号从多少页开始 end = Math.min(start+numCount, last); //本页显示页号在多少页结束 页号控制: if(end-start < numCount){ //当本页总显示的页号数不够numCount时,如何计算起始页号。 start = Math.max(end-numCount, 1); } 分页实现步骤 Pagenation工具类代码:

MyBatis自动分页实现

MyBatis自动分页实现 2013-08-16 近两天一直再研究MyBatis的分页问题,看了别人的处理方式,自己总结优化了一下,写了两个拦截类,给有需要的人使用和参考,源码请下载附件。 主要有3个类:Page,MybatisPageInterceptor,MybatisSpringPageInterceptor Page:作为分页对象,有:pageNo、pageSize、totalRecord、totalPage、results属性 MybatisPageInterceptor和MybatisSpringPageInterceptor: 均为拦截类,仅需要选用其中的一个,前者在任何情况下都可用,后再仅在Spring环境下使用。 推荐使用后者,其优点是使用后无需对mapper的XML文件作任何修改,只需要修改Mapper 类的方法,增加一个Page类型的参数即可。而前者使用时有可能会需要修改XML,特别是原Mapper方法只有一个参数时,需要增加@Param指定参数名,而后修改XML文件使用该参数名。 以下给出在Spring环境下的配置使用方法示例: MybatisSpringPageInterceptor: 修改Spring配置文件 Java代码 1. 2. 3. 4. 5.

分页的实现原理,分页的实现步骤

分页的实现原理: 1.获得需要显示的总的记录数rowCount—》从数据库中取 2.设定每页最多显示的记录数size—》10 3.指定显示的页码:num 作为参数得到 4.根据rowCount,size,num可计算出其余的元素: a)本页面从多少行记录开始:startRow = (this.num-1) * size ; b)共有多少页:pageCount = (int) Math.ceil((double)rowCount/size); c)下一页:next=Math.min( this.pageCount, this.num+1) d)上一页:prev = Math.max(1 , this.num-1) e)页号控制元素: numCount:每页最多显示多少页号。(一共显示numCount+1个页号) start = Math.max(this.num-numCount/2, first); //本页显示页号从多少页开始 end = Math.min(start+numCount, last); //本页显示页号在多少页结束 页号控制: if(end-start < numCount){ //当本页总显示的页号数不够numCount时,如何计算起始页号。 start = Math.max(end-numCount, 1); } 分页实现步骤: 1.将Page类引入。需要自己修改的可自行修改。 package com.puckasoft.video.util; public class Page { private int num; //当前页号, 采用自然数计数 1,2,3,... private int size; //页面大小:一个页面显示多少个数据 private int rowCount;//数据总数:一共有多少个数据 private int pageCount; // 页面总数 private int startRow;//当前页面开始行, 第一行是0行 private int first = 1;//第一页页号 private int last;//最后页页号 private int next;//下一页页号 private int prev;//前页页号 private int start;//页号式导航, 起始页号 private int end;//页号式导航, 结束页号 private int numCount = 10;//页号式导航, 最多显示页号数量为numCount+1;这里显示11页。 public Page(int size, String str_num, int rowCount) { int num = 1; if (str_num != null) { num = Integer.parseInt(str_num);

基本分页存储管理的模拟实现

基本分页存储管理的模拟实现 学院 专业 学号 学生姓名 指导教师姓名 2014年03月18日 目录

一、设计目的与内容 二、各个功能模块 三、主要功能模块流程图 四、系统测试 五、结论 六、源程序及系统文件使用说明 一、设计目的与内容 设计的目的: 操作系统课程设计是计算机专业重要的教学环节, 它为学生提供了一个既动手又动脑, 将课本上的理论知识和实际有机的结合起来, 独立分析和解决实际问题的机会。 1. 进一步巩固和复习操作系统的基础知识。 2. 培养学生结构化程序、模块化程序设计的方法和能力。 3. 提高学生调试程序的技巧和软件设计的能力。 4. 提高学生分析问题、解决问题以及综合利用C 语言进行程序设计的能力。 设计内容: 根据设计要求实现对基本分页存储管理的模拟 设计要求:

1. 2. 进程名, 进程所需页数, 也 可从文件读出。 3. 况。 所采用的数据结构: typedef struct LNode{ int f; //进程号 char name[8]; //进程名 int size; //进程大小 int n; //进程页数 int ye[100]; //页表,下标表示页号, 内容表示进程各页所在物理块 struct LNode *next; }LNode,*LinkList; 二、各个功能模块 主要功能模块流程图

四、系统测试 主界面: (显示程序的各个功能块)1、选择1, 运行界面如下:

(选择1, 输入进程名, 显示内存物理块分配情况) 2、选择2, 运行界面如下: (显示2回收进程, 若进程名输入错误, 则显示进程不存在, )3、选择3, 运行界面如下:

java web 分页技术详解及代码

java web 分页技术详解及代码 关于在java web上实现分页技术,方式实际上有很多,也各有个的特点,此处我只写些我的认识。java web分页无外乎两种,一种是直接取出来,放到一个集合里,通过传begin 和end 参数控制分页,还有一种就是把分页工作交给数据库,让数据库读取需要的begin~end 之间的数据。 我们这里,先看从数据库中读取的情况 操作数据库就需要tsql语句,mssqlserver2005新推出了一个row_number()很好用,还有就是mysql的limit也非常好使。 mssqlserver2005的如下: select * from (select row_number() over (order by ename) as rn, f.* from emp f) b where b.rn between 6 and 10; mysql的: select * from emp limit 5,5 mysql的应注意,使用limit时,表中必须用主键,还有limit后的两个参数分别代表(标识位,长度),标识位从0开始 现在开始一步步完成,首先完成model模块,建立pagebean import java.util.*; public class PageBean { private Collection objs;//从数据库中读的集合 private int totalCount;//总的条数 private int pageNo;//当前的页数 private int pageCount;//每页的条数 public int getPageCount() { return pageCount; } public void setPageCount(int pageCount) { this.pageCount = pageCount; }

php实现简单的分页功能

大家在浏览网页的时候,都会看到每篇文章都会会显示“上一页”“下一页”。下面跟大家分享一下如何用php实现简单的分页功能。 首先,先创建一个mysql表: SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `test` -- ---------------------------- DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` int(5) NOT NULL AUTO_INCREMENT, `name` varchar(50) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; 然后在里面插入数据: -- ---------------------------- -- Records of test -- ---------------------------- INSERT INTO `test` VALUES ('1', '张三'); INSERT INTO `test` VALUES ('2', '李四'); INSERT INTO `test` VALUES ('3', '王五'); INSERT INTO `test` VALUES ('4', '赵六');

INSERT INTO `test` VALUES ('5', '阿萨达'); INSERT INTO `test` VALUES ('6', '回火'); INSERT INTO `test` VALUES ('7', 'adada'); 然后新建一个php文件,连接数据库: header("content-type:text/html;charset=UTF-8");//防止页面乱码$link = mysql_connect("localhost","root","") or die("数据库连接失败"); $result = mysql_select_db("test",$link); mysql_query("SET NAMES 'utf8'");//设置数据库连接编码 然后调取数据,并且计算出该表里面总共有多少条数据: function selectdata(){ $sql = "SELECT name FROM `test` ORDER BY id desc"; $arr = array(); $result = mysql_query($sql); while ($array = mysql_fetch_row($result)) { $arr[] = $array; } return $arr; } function selectdatabypages($limit1,$limit2){ $sql = "SELECT name FROM `test` ORDER BY id desc LIMIT $limit1,$limit2";

JSP-web开发技术课程教学大纲

《JSP web开发技术》课程教学大纲 课程名称:JSP web开发技术课程编码: 学时:54 学分:3 开课学期:5 课程类别:专业平台课 课程性质:选修 适用专业:计算机科学与技术(卓越计划) 先修课程:java程序设计基础 教学方式:课堂讲授为主,穿插课堂练习 教学手段:以多媒体教学手段为主,主要采用PPT、现场编程的方式,辅助手写板书

一、课程的性质、目的与任务 本课程是在学生修完Java程序设计等相关课程后,使学生进一步掌握一种动态网页设计技术(JSP技术)。 通过本课程的学习,使学生掌握JSP技术的基础知识,以及动态网页设计的基本思想方法,会应用JSP进行基本的程序设计。 二、教学内容及基本要求 单元1JSP简介 1. 教学目的和要求: 通过本单元的学习,使学生了解编写简单的html网页,利用Tomcat建立一个网站,在JSP中得到用户输入的值。 2. 知识点: (1)编写简单的html页面和安装Tomcat 补充编写一个简单、无标签的html页面,补充Tomcat安装、运行。 (2)配置Tomcat,建立一个简单的网站 设置web服务目录,补充配置Tomcat。 (3)使用MyEclipse开发网站 补充MyEclipse安装、配置Tomcat和JRE,补充在MyEclipse中新建Web网站。 (4)html标签 补充form、input、text、submit、password,request对象,补充textarea、radio、checkbox,用JSP如何得到选择的多个值,补充select标签。 3. 建议课时: 7课时。 4. 教学重点和难点: html页面各种标签,学会安装和配置Tomcat,在JSP中得到用户输入的值。 5. 复习与作业要求: 着重复习html页面各种标签,学会安装和配置Tomcat,在JSP中得到用户输入的值。 安装Tomcat,并完成一个简单的网站。 6. 考核知识点: 在Tomcat下建立网站、利用html标签输入值,在JSP中得到。 7. 辅助教学活动: 上机实践 单元2 JSP内置对象 1. 教学目的和要求: 通过本单元的学习,使学生了解JSP内部对象的基本概念,主要掌握out、request、response、session对象的功能以及使用方法。能够利用内部对象实现与客户端的交互。 2.知识点:

Java分页查询操作的两种实现办法

Dao实现类 public Listpage(int start, int end) { String pagesql = "select * from (select id,name,price,descri,rownumrn from t_product)where rn between ? and ?"; List list = new ArrayList(); Product p = null; Connection conn = null; PreparedStatementstm = null; ResultSetrs = null; try { conn = JDBCUtil.getConnection(); stm = conn.prepareStatement(pagesql); stm.setInt(1, start); stm.setInt(2, end); rs = stm.executeQuery(); while (rs.next()) { p = new Product(rs.getInt(1), rs.getString(2), rs.getDouble(3), rs.getString(4)); list.add(p); } } catch (Exception e) { thrownew RuntimeException("查询page全部异常", e); } finally { JDBCUtil.close(rs, stm, null); } return list; } public Long count() { Connection conn = null; PreparedStatementstm = null; ResultSetrs = null; Long count = null; try { conn = JDBCUtil.getConnection(); stm = conn.prepareStatement("select count(*) from t_product"); rs = stm.executeQuery(); while (rs.next()) { count = rs.getLong(1); } } catch (Exception e) { thrownew RuntimeException("查询count", e); } finally { JDBCUtil.close(rs, stm, null); } return count; } Service实现类

后台实现JSON分页显示

Action: /** * 团单明细--团体投保信息 */ public String teamInsure() { //String grpcode = getRequestParameter("grpcode"); // 团体代码 String grpcode = "CHS000G01944"; https://www.doczj.com/doc/6213076722.html,("grpcode:"+grpcode+"团体投保信息---"); List teamInsureList = new ArrayList(); Pager pager = getPager("classDetailInfo/classDetailInfo_teamInsure.do?page="); pager.setPagesize(3); PageText pageText = null; try { teamInsureList = classDetailInfoServices.getTeamInsure(grpcode); pageText = classDetailInfoServices.getPageText(teamInsureList, pager, teamInsureList.size()); JSONArray jsonArray = new JSONArray(); JSONObject jsonObject = new JSONObject(); for (int i = 0; i < teamInsureList.size(); i++) { jsonObject.element("gappno", (teamInsureList.get(i)).getGappno()); jsonObject.element("gpolicyno", (teamInsureList.get(i)).getGpolicyno()); jsonObject.element("classcode", (teamInsureList.get(i)).getClasscode()); jsonObject.element("size", (teamInsureList.size())); jsonObject.element("pagecount", ((teamInsureList.size() + 2) / 3)); String classcode = (teamInsureList.get(i)).getClasscode(); if (!FunctionUtils.isBlank(classcode)) { String classname = classDetailInfoServices.getClassname(classcode); // 险种名称 jsonObject.element("classname", classname); }else { jsonObject.element("classname", ""); } jsonObject.element("polist", (teamInsureList.get(i)).getPolist()); jsonObject.element("stat", (teamInsureList.get(i)).getStat()); jsonObject.element("sumamt", (teamInsureList.get(i)).getSumamt()); jsonObject.element("illamt", (teamInsureList.get(i)).getIllamt()); jsonObject.element("accamt", (teamInsureList.get(i)).getAccamt()); jsonObject.element("sickamt", (teamInsureList.get(i)).getSickamt()); jsonObject.element("medamt", (teamInsureList.get(i)).getMedamt());

JSP连接SQL数据库实现数据分页显示代码实现

<%@ page contentType="text/html; charset=gb2312" %> <%@ page language="java" import="java.sql.*" %> /** * 华夏课程设计西西~~ */ JSP连接SQL数据库实现数据分页显示

JSP连接SQL数据库实现数据分页显示

<% try {//建立JDBC-ODBC桥驱动程序,用到https://www.doczj.com/doc/6213076722.html,ng包中的类Class,调用其方法forName(). Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e){} try {//创建连接对象con,它属于Connection类,然后用类DriverManager调用 getConnection(). Connection con=DriverManager.getConnection("jdbc:odbc:stu"); Statement stmt=con.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);//创建SQL语 句对象. ResultSet rs=stmt.executeQuery("SELECT* FROM stuInfo");//执行SQL语句并返回结果. int pageSize;//一页显示的记录数 int totalItem;//记录总数 int totalPage;//总页数 int curPage;//待显示页码 String strPage; int i; pageSize=10;//设置一页显示的记录数 strPage=request.getParameter("page");//获得待显示页码 if(strPage==null)

java分页原理及实现方式

Java分页原理及常用分页方法 什么是分页技术 分页,是一种将所有数据分段展示给用户的技术.用户每次看到的不是全部数据,而是其中的一部分。如果在其中没有找到自习自己想要的内容,用户可以通过制定页码或是翻页的方式转换可见内容,直到找到自己想要的内容为止.其实这和我们阅读书籍很类似,我们不能把整本书的全部内容写在一页纸上。 为什么要分页? 1、加载少量数据,减少客户的和服务器数据交互,降低服务器压力。 2、增强用户体验,每次加载数据量少,加载速度自然就快,用户体验就好。 常见分页样式: 1、传统分页(分页工具栏),如百度的分页: 2、自动加载:如QQ空间下拉自动加载数据

传统分页与下拉式分页对比 传统分页可以明确数据信息,数量等; 下拉式无法明确数据量等信息,分页后之前从信息还在页面上。 常见分页实现方式 1.Java程序分页的实现主要是用List接口中的subList(intstartIndex,intendIndex)方法, 这种方式也称为程序内存分页。 2.使用数据库的SQL语句实现数据分页。适用于数据量较大,访问频度较低的操作。如 果数据量大,访问频度又高,可以参考大数据分页。 关于内存分页 当数据量较小时推荐使用。使用subList进行分页时,如果数据量比较大是一个非常耗费系统资源的方案。 目前web项目有许多分布式系统,可能有多个系统访问同一个数据库,那么对数据库的开销就比较大了,这时可以考虑对内存分页进行优化,例如利用程序缓存处理机制等。 其实真正的内存分页不是那么简单的事情,要实现一个完整的通用的机制,不是一两个小时就能搞定的。首先有一个数据记录的服务器缓存问题,然后才是数据记录分页问题,这个相对好解决一点,但第一个问题就不太好组织。因为缓存问题涉及到数据的缓存位置,缓存时间,删除时间和利于查询的数据组织问题。 数据库分页:

JSP+Servlet+Oracle三层结构分页实现

目前比较广泛使用的分页方法是将查询结果缓存在HttpSession或有状态bean 中,翻页的时候从缓存中取出一页的数据进行显示。这种方法有两个主要的缺点:一是用户可能看到的是过期数据;二是如果数据量非常大时第一次查询遍历结果集会耗费很长时间,并且缓存的数据也会占用大量内存,效率明显下降[i]。其它常见的方法还有每次翻页都查询一次数据库,从ResultSet中只取出一页的数据(使用https://www.doczj.com/doc/6213076722.html,st();rs.getRow()获得总计录条数,使用rs.absolute()定位到本页起始记录)。这种方式在某些数据库(如oracle)的JDBC实现中差不多也是需要遍历所有记录,实验证明在记录数很大时速度非常慢[ii]。因此,本系统选用一种利用数据库分页的方法,即每次翻页的时候只从数据库里检索页面大小的块区的数据。这样虽然每次翻页都需要查询数据库,但查询出的记录数很少,网络传输数据量不大,会大大提升查询数据库的效率[iii]。 下面以查询定检记录模块的分页技术为例,详细讲述本系统分页技术实现的具体过程。在查询定检记录的CraftCheckServlet中定义各个变量与分页算法,分页算法为:在数据库中查询得到的总记录数totalnum对每页显示记录数pagesize 取余,如果整除则分页的总页数totalpage = totalnum/pagesize,如果没有整除则totalpage = totalnum/pagesize+1,具体代码如下。在对数据库进行查询的CraftCheckDao中,利用数据库分页查询的技术编写的SQL语句如下所示。最后在CraftCheck.jsp中做好分页的显示,具体的代码如下所示。 1、Servlet中的代码部分 package craft.controller; public class CraftCheckServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter pr = response.getWriter(); String currentpageno = request.getParameter("currentpageno");//定义当前页码 String pagesizeno = request.getParameter("pagesize");//定义每页数据大小 int startpage= 1;//起始页 int totalpage=4;//总页数 int pagesize =3;//每页显示数据

JSP实现分页功能

JSP实现分页功能 分页须知知识点: (1)JDBC2.0的可滚动结果集。 (2)HTTP GET请求。 一、可滚动结果集 Connection con = DriverManager.getConnection(); PreparedStatement stmt = con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_RE AD_ONLY); ResultSet rs = stmt.executeQuery(); 常用方法: (1)rs.absolute(n); 可以将指针跳到第n行。 (2)rs.relative(n); 可以将指针相对向下或向上n行。 (3)rs.first(); (4)https://www.doczj.com/doc/6213076722.html,st(); (5)int curRow = rs.getRow(); 指针指向的当前行 二、功能实现分解 1.计算结果的个数 https://www.doczj.com/doc/6213076722.html,st(); int size = rs.getRow(); 即可得到结果的个数。 2.得到需要分几页 如果一页能够放5条记录,则 int pageCount = (size%5==0)?(size/5):(size/5+1); 即可获得需要分几页。

3.控制一页中规定显示记录个数 如果一页能显示5条记录,可以通过使用count进行计数。 int count = 0; do{ if(count>=5) break; ..... count++; }while(rs.next()); 通过break语句,能够使其显示到超过规定条目就跳出。 4.如何知道当前是第几页 通过HTTP get的特点,在地址栏中标明当前地址,如http://.......?curPage=1表示现在是第一页。 String tmp = request.getParameter("curPage"); if(tmp==null){ tmp="1"; } curPage = Integer.parseInt(tmp); 可以获得当前页。 注意: rs.absolute(1);表示指向第一条记录; 不存在rs.absolute(0); rs.absolute((curPage-1)*PAGESIZE+1); 把结果集指针调整到当前页应该显示的记录的开始. 比如如果一页显示5条记录,当前页是第二页,则需要把指针调整到6,当前页是第三页,则需要把指针调整为11. 5.点击首页、上一页、下一页、尾页的行为 下一页

JavaBean+Servlet+jsp实现分页显示(原创)

JavaBean+Servlet+jsp实现分页显示(原创)实现效果图 代码: (1)JavaBean PageDivide.java package com.bean; import java.io.UnsupportedEncodingException; import java.sql.*; import java.util.ArrayList; import java.util.List; import com.myutil.DBCon; public class PageDivide { int sumRecord=0; //显示的总记录条数 int pageRecord=5; //每页显示的记录数 int pageNum=0; //显示的总页码数

int showPage=1; //所要显示的页码数 private Connection con=null; private PreparedStatement pstm=null; private ResultSet rs=null; private String sql="select * from category"; public PageDivide(){ //数据库连接 con=DBCon.getConn(); try { pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CON CUR_UPDATABLE); rs=pstm.executeQuery(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } this.sumRecord=this.getSumRecord(); // this.setSumRecord(this.getSumRecord()); this.pageNum=this.getPageNum(); } //获取总记录数 public int getSumRecord() { try { rs=pstm.executeQuery(); https://www.doczj.com/doc/6213076722.html,st(); sumRecord=rs.getRow(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return sumRecord; } public List getData(int n){ List list=new ArrayList(); if(n<1) {

自己实现的百度分页算法

内容显示分页 3个变量 pagSize(每一页显示的记录条数) 自己定义 pageNow(当前页) 由用户指定,初始默认值为1 pageCount总页数,由pageSize和数据库总记录数决定 公式: pageCount=select count(*) from 记录表; if(pageCount%pageSize==0){ pageCount=pageCount/pageSize; }else{ pageCount=pageCount/pageSize+1; } pageNow是传入参数,pageCount是传出参数(getPageCount方法),pageSize内部使用页码分页显示 3个变量 pageNum 每一页显示的页码数和pageSize一样有用你自己定义 pageStart 每一页的页码起始数,由pagNow和pageNum动态计算 pageEnd 每一页的页码结尾数,有pageNow和pageNum动态计算pageStart和pageEnd的计算 /**默认的初始值**/ if(pageNow<=pageNum/2+1{ pageStart=1; pageEnd=pageNum; } if(pageNow>pageNum/2+1){ pageStart=pageNow-pageNum/2; pageEnd=pageNow+pageNum-1; //当然要保证页码的最大数不超过总的页数 if(pageEnd>pageCount){ pageEnd=pageCount; } } 具体程序应用 前台显示 上一页: 上一页 上一页 下一页:

jsp实现连接数据库分页浏览 增删改查等功能

一利用jsp实现Oracle数据库中表格的分页浏览:

二在Oracle数据库中建立表格,包含员工的工号、姓名、性别、工龄、工资等字段,并实现增删改查操作。 (1)所建的worker表格如下: (2)Input.jsp运行结果如下:

(3)Inputcheck.jsp运行结果如下:

Pagebreak.jsp代码如下: <%@page contentType="text/html"pageEncoding="UTF-8" import="java.sql.*"%> JSP page

分页显示记录内容
<% String oracledriver="oracle.jdbc.driver.OracleDriver"; String oracleUrl="jdbc:oracle:thin:@localhost:1521:ORACLE"; String username="scott"; String password="tiger"; Connection con; Class.forName(oracledriver); con=DriverManager.getConnection(oracleUrl,username,password); int intPageSize; int intRowCount; int intPageCount; int intPage; String strPage; int i; intPageSize = 10; strPage = request.getParameter("page"); if(strPage==null){ intPage =1; }else{ intPage = https://www.doczj.com/doc/6213076722.html,ng.Integer.parseInt(strPage); if(intPage<1) intPage = 1; } Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

实现分页的js方法

工号 姓名 性别 工龄 工资