//定义如下分页变量//1、定义没页要显示的记录数intlineSize=10;//" />
当前位置:文档之家› jsp假分页的实现

jsp假分页的实现

jsp假分页的实现
jsp假分页的实现

jsp假分页的实现:

1.假分页:完全有程序进行分页

思想:将全部的数据取出,只留下中间要显示的部分->用程序算法实现分页实际是对Resultset的操作

2.假分页最大的缺点是要将全部的数据读取进来,性能而言相对校对

以下是代码:

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

<%@ page import="java.sql.*"%>

分页显示

人员列表



<%!

final String jspUrl = "list_person_false_05.jsp" ;

%>

<%

// 定义如下分页变量

// 1、定义没页要显示的记录数

int lineSize = 10 ;

// 2、定义一个当前是第几页

int currentPage = 1 ;

// 计算出总页数

int pageSize = 0 ;

// 总记录数 / 每页显示的记录数

int allRecorders = 30 ;

%>

<%

// 接收传过来的当前页

try

{

currentPage = Integer.parseInt(request.getParameter("cp")) ;

}

catch(Exception e)

{}

%>

<%

final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

final String DBURL = "jdbc:mysql://localhost/mldn" ;

final String DBUSER = "root" ;

final String DBPASSWORD = "mysqladmin" ;

Connection conn = null ;

%>

<%

try

{

Class.forName(DBDRIVER) ;

conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; PreparedStatement pstmt = null ;

String sql = "SELECT COUNT(id) from person" ;

pstmt = conn.prepareStatement(sql) ;

ResultSet rs = pstmt.executeQuery() ;

if(rs.next())

{

allRecorders = rs.getInt(1) ;

}

rs.close() ;

pstmt.close() ;

// 计算总页数

pageSize = (allRecorders+lineSize-1)/lineSize ;

sql = "SELECT id,uid,name,password FROM person" ;

pstmt = conn.prepareStatement(sql) ;

rs = pstmt.executeQuery() ;

%>

<%=currentPage==1?"disabled":""%>>

onClick="openPage(<%=currentPage-1%>)"

<%=currentPage==1?"disabled":""%>>

onClick="openPage(<%=currentPage+1%>)"

<%=currentPage==pageSize?"disabled":""%>>

>

<%=currentPage%>

/

<%=pageSize%>

跳转到

<%

int i = 0 ;

for(int x=0;x<(currentPage-1)*lineSize;x++)

{

rs.next();

}

// 对于输出代码之前要求按显示的页数空出

for(int x=0;x

{

if(rs.next())

{

i++ ;

int id = rs.getInt(1) ;

String userid = rs.getString(2) ; String name = rs.getString(3) ;

String password = rs.getString(4) ; %>

<%

}

}

rs.close() ;

pstmt.close() ;

if(i==0)

{

%>

<%

}

%>

编号登陆名称姓名密码操作
<%=id%><%=userid%><%=name%><%=password%>更新删除
没有任何数据!!

<%

}

catch(Exception e)

{

%>

系统出错!!!

<%

}

finally

{

conn.close() ;

}

%>

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

<%@ page import="java.sql.*"%>

分页显示

人员列表



<%!

final String jspUrl = "list_person_false_05.jsp" ;

%>

<%

// 定义如下分页变量

// 1、定义没页要显示的记录数

int lineSize = 10 ;

// 2、定义一个当前是第几页

int currentPage = 1 ;

// 计算出总页数

int pageSize = 0 ;

// 总记录数 / 每页显示的记录数

int allRecorders = 30 ;

%>

<%

// 接收传过来的当前页

try

{

currentPage = Integer.parseInt(request.getParameter("cp")) ; }

catch(Exception e)

{}

%>

<%

final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

final String DBURL = "jdbc:mysql://localhost/mldn" ;

final String DBUSER = "root" ;

final String DBPASSWORD = "mysqladmin" ;

Connection conn = null ;

%>

<%

try

{

Class.forName(DBDRIVER) ;

conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; PreparedStatement pstmt = null ;

String sql = "SELECT COUNT(id) from person" ;

pstmt = conn.prepareStatement(sql) ;

ResultSet rs = pstmt.executeQuery() ;

if(rs.next())

{

allRecorders = rs.getInt(1) ;

}

rs.close() ;

pstmt.close() ;

// 计算总页数

pageSize = (allRecorders+lineSize-1)/lineSize ;

sql = "SELECT id,uid,name,password FROM person" ;

pstmt = conn.prepareStatement(sql) ;

rs = pstmt.executeQuery() ;

%>

<%=currentPage==1?"disabled":""%>>

onClick="openPage(<%=currentPage-1%>)"

<%=currentPage==1?"disabled":""%>>

onClick="openPage(<%=currentPage+1%>)"

<%=currentPage==pageSize?"disabled":""%>>

>

<%=currentPage%>

/

<%=pageSize%>

跳转到

<%

int i = 0 ;

for(int x=0;x<(currentPage-1)*lineSize;x++)

{

rs.next();

}

// 对于输出代码之前要求按显示的页数空出

for(int x=0;x

{

if(rs.next())

{

i++ ;

int id = rs.getInt(1) ;

String userid = rs.getString(2) ;

String name = rs.getString(3) ;

String password = rs.getString(4) ;

%>

<%

}

}

rs.close() ;

pstmt.close() ;

if(i==0)

{

%>

<%

}

%>

编号登陆名称姓名密码操作
<%=id%><%=userid%><%=name%><%=password%>更新删除
没有任何数据!!

<%

}

catch(Exception e)

{

%>

系统出错!!!

<%

}

finally

{

conn.close() ;

}

%>

<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%>

分页显示

人员列表



<%!

final String jspUrl = "list_person_false_05.jsp" ;

%>

<%

// 定义如下分页变量

// 1、定义没页要显示的记录数

int lineSize = 10 ;

// 2、定义一个当前是第几页

int currentPage = 1 ;

// 计算出总页数

int pageSize = 0 ;

// 总记录数 / 每页显示的记录数

int allRecorders = 30 ;

%>

<%

// 接收传过来的当前页

try

{

currentPage = Integer.parseInt(request.getParameter("cp")) ; }

catch(Exception e)

{}

%>

<%

final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

final String DBURL = "jdbc:mysql://localhost/mldn" ;

final String DBUSER = "root" ;

final String DBPASSWORD = "mysqladmin" ;

Connection conn = null ;

%>

<%

try

{

Class.forName(DBDRIVER) ;

conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; PreparedStatement pstmt = null ;

String sql = "SELECT COUNT(id) from person" ;

pstmt = conn.prepareStatement(sql) ;

ResultSet rs = pstmt.executeQuery() ;

if(rs.next())

{

allRecorders = rs.getInt(1) ;

}

rs.close() ;

pstmt.close() ;

// 计算总页数

pageSize = (allRecorders+lineSize-1)/lineSize ;

sql = "SELECT id,uid,name,password FROM person" ;

pstmt = conn.prepareStatement(sql) ;

rs = pstmt.executeQuery() ;

%>

<%=currentPage==1?"disabled":""%>>

onClick="openPage(<%=currentPage-1%>)"

<%=currentPage==1?"disabled":""%>>

onClick="openPage(<%=currentPage+1%>)"

<%=currentPage==pageSize?"disabled":""%>>

>

<%=currentPage%>

/

<%=pageSize%> 跳转到

<%

int i = 0 ;

for(int x=0;x<(currentPage-1)*lineSize;x++)

{

rs.next();

}

// 对于输出代码之前要求按显示的页数空出

for(int x=0;x

{

if(rs.next())

{

i++ ;

int id = rs.getInt(1) ;

String userid = rs.getString(2) ;

String name = rs.getString(3) ;

String password = rs.getString(4) ;

%>

<%

}

}

rs.close() ;

pstmt.close() ;

if(i==0)

{

%>

<%

}

%>

编号登陆名称姓名密码操作
<%=id%><%=userid%><%=name%><%=password%>更新删除
没有任何数据!!

<%

}

catch(Exception e)

{

%>

系统出错!!!

<%

}

finally

{

conn.close() ;

}

%>

<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.sql.*"%>

分页显示

人员列表



<%!

final String jspUrl = "list_person_false_05.jsp" ;

%>

<%

// 定义如下分页变量

// 1、定义没页要显示的记录数

int lineSize = 10 ;

// 2、定义一个当前是第几页

int currentPage = 1 ;

// 计算出总页数

int pageSize = 0 ;

// 总记录数 / 每页显示的记录数

int allRecorders = 30 ;

%>

<%

// 接收传过来的当前页

try

{

currentPage = Integer.parseInt(request.getParameter("cp")) ; }

catch(Exception e)

{}

%>

<%

final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

final String DBURL = "jdbc:mysql://localhost/mldn" ;

final String DBUSER = "root" ;

final String DBPASSWORD = "mysqladmin" ;

Connection conn = null ;

%>

<%

try

{

Class.forName(DBDRIVER) ;

conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; PreparedStatement pstmt = null ;

String sql = "SELECT COUNT(id) from person" ;

pstmt = conn.prepareStatement(sql) ;

ResultSet rs = pstmt.executeQuery() ;

if(rs.next())

{

allRecorders = rs.getInt(1) ;

}

rs.close() ;

pstmt.close() ;

// 计算总页数

pageSize = (allRecorders+lineSize-1)/lineSize ;

sql = "SELECT id,uid,name,password FROM person" ;

pstmt = conn.prepareStatement(sql) ;

rs = pstmt.executeQuery() ;

%>

<%=currentPage==1?"disabled":""%>>

onClick="openPage(<%=currentPage-1%>)"

<%=currentPage==1?"disabled":""%>>

onClick="openPage(<%=currentPage+1%>)"

<%=currentPage==pageSize?"disabled":""%>>

>

<%=currentPage%>

/

<%=pageSize%>

跳转到

<%

int i = 0 ;

for(int x=0;x<(currentPage-1)*lineSize;x++)

{

rs.next();

}

// 对于输出代码之前要求按显示的页数空出

for(int x=0;x

{

if(rs.next())

{

i++ ;

int id = rs.getInt(1) ;

String userid = rs.getString(2) ;

String name = rs.getString(3) ;

String password = rs.getString(4) ;

%>

<%

}

}

rs.close() ;

pstmt.close() ;

if(i==0)

{

%>

<%

}

%>

编号登陆名称姓名密码操作
<%=id%><%=userid%><%=name%><%=password%>更新删除
没有任何数据!!

<%

}

catch(Exception e)

{

%>

系统出错!!!

<%

}

finally

{

conn.close() ;

}

%>

分页的实现步骤

为什么需要分页? 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工具类代码:

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

分页的实现原理: 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);

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; }

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.知识点:

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/0b5901657.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)

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

目前比较广泛使用的分页方法是将查询结果缓存在HttpSession或有状态bean 中,翻页的时候从缓存中取出一页的数据进行显示。这种方法有两个主要的缺点:一是用户可能看到的是过期数据;二是如果数据量非常大时第一次查询遍历结果集会耗费很长时间,并且缓存的数据也会占用大量内存,效率明显下降[i]。其它常见的方法还有每次翻页都查询一次数据库,从ResultSet中只取出一页的数据(使用https://www.doczj.com/doc/0b5901657.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/0b5901657.html,st(); (5)int curRow = rs.getRow(); 指针指向的当前行 二、功能实现分解 1.计算结果的个数 https://www.doczj.com/doc/0b5901657.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/0b5901657.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) {

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/0b5901657.html,ng.Integer.parseInt(strPage); if(intPage<1) intPage = 1; } Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

jsp分页技术实现

title: JSP分页技术实现 summary:使用工具类实现通用分页处理 author: evan_zhao email 目前比较广泛使用的分页方式是将查询结果缓存在HttpSession或有状态bean中,翻页的时候从缓存中取出一页数据显示。这种方法有两个主要的缺点:一是用户可能看到的是过期数据;二是如果数据量非常大时第一次查询遍历结果集会耗费很长时间,并且缓存的数据也会占用大量内存,效率明显下降。 其它常见的方法还有每次翻页都查询一次数据库,从ResultSet中只取出一页数据(使用();()获得总计录条数,使用()定位到本页起始记录)。这种方式在某些数据库(如oracle)的JDBC实现中差不多也是需要遍历所有记录,实验证明在记录数很大时速度非常慢。 至于缓存结果集ResultSet的方法则完全是一种错误的做法。因为ResultSet在Statement或Connection关闭时也会被关闭,如果要使ResultSet有效势必长时间占用数据库连接。 因此比较好的分页做法应该是每次翻页的时候只从数据库里检索页面大小的块区的数据。这样虽然每次翻页都需要查询数据库,但查询出的记录数很少,网络传输数据量不大,如果使用连接池更可以略过最耗时的建立数据库连接过程。而在数据库端有各种成熟的优化技术用于提高查询速度,比在应用服务器层做缓存有效多了。 在oracle数据库中查询结果的行号使用伪列ROWNUM表示(从1开始)。例如select * from employee where rownum<10 返回前10条记录。但因为rownum是在查询之后排序之前赋值的,所以查询employee按birthday排序的第100到120条记录应该这么写: select * from (

基于jsp的简单论坛制作(含源代码)

目录 摘要 (1) 1、应用需求分析 (2) 1.1、用户登录和注册功能 (2) 1.2、注册功能 (3) 1.3、用户登录成功后就进入了论坛的主界面,用户可以新选择相应的功能 (4) 1.4、用户发表帖子 (4) 1.4.1、帖子的浏览 (5) 1.4.2、查看特定帖的详细信息 (6) 1.5、用户帖子的删除功能。 (6) 1.5.1、帖子的删除 (6) 1.6、管理员对帖子的查看/发表/删除功能 (7) 1.6.1、管理员查看或发表帖子 (7) 1.6.2、管理员删除帖子 (7) 2、系统总体设计 (7) 2.1、系统结构设计 (7) 2.1.1、各个页面的功能及示意图 (8) 2.1.2、各个页面之间的调用关系 (8) 2.2、数据库设计 (9) 2.2.1、用户信息表Student (9) 2.2.2、存储帖子所用的信息表DISCUSS (10) 2.2.3、存储回复帖子的信息表REPLY (10) 3、系统详细设计 (11) 3.1、建立数据库及数据库表 (11) 3.2、用户登录功能的实现 (12) 3.2.1、登陆界面的制作: (12) 3.2.2、登陆功能的实现 (13) 3.3、浏览主题帖子功能的实现 (14) 3.3.1、翻页功能的实现 (14) 3.4、主题帖子详细内容页面的制作 (17) 3.5、在帖子详细内容页面里实现回复功能 (18) 3.6、用户发表新帖子页面的制作 (21) 3.6.1、NewTitle.jsp页面发表新的主题文章 (21) 3.6.2、SaveNewTitle.jsp页面用于保存由NewTitle.jsp页面传来的数据信息 (22) 3.7、新用户注册功能的实现 (23) 3.8、用户取回密码功能的实现 (25) 3.9、用户和管理员删除帖子功能的实现 (27) 课程实习心得 (29) 参考文献: (29)

目前最好JSP分页技术

前言 在使用数据库的过程中,不可避免的需要使用到分页的功能,可是JDBC的规范对此却没有很好的解决。对于这个需求很多朋友都有自己的解决方案,比如使用Vector等集合类先保存取出的数据再分页。但这种方法的可用性很差,与JDBC本身的接口完全不同,对不同类型的字段的支持也不好。这里提供了一种与JDBC兼容性非常好的方案。 JDBC和分页 Sun的JDBC规范的制定,有时很让人哭笑不得,在JDBC1.0中,对于一个结果集(ResultSet)你甚至只能执行next()操作,而无法让其向后滚动,这就直接导致在只执行一次SQL查询的情况下无法获得结果集的大小。所以,如果你使用的是JDBC1.0的驱动,那么是几乎无法实现分页的。 好在Sun的JDBC2规范中很好的弥补了这一个不足,增加了结果集的前后滚动操作,虽然仍然不能直接支持分页,但我们已经可以在这个基础上写出自己的可支持分页的ResultSet 了。 和具体数据库相关的实现方法 有一些数据库,如Mysql, Oracle等有自己的分页方法,比如Mysql可以使用limit子句,Oracle可以使用ROWNUM来限制结果集的大小和起始位置。这里以Mysql为例,其典型代码如下: // 计算总的记录条数 String SQL = "SELECT Count(*) AS total " + this.QueryPart; rs = db.executeQuery(SQL); if (rs.next()) Total = rs.getInt(1); // 设置当前页数和总页数 TPages = (int)Math.ceil((double)this.Total/this.MaxLine); CPages = (int)Math.floor((double)Offset/this.MaxLine+1); // 根据条件判断,取出所需记录 if (Total > 0) { SQL = Query + " LIMIT " + Offset + " , " + MaxLine; rs = db.executeQuery(SQL); } return rs; } 毫无疑问,这段代码在数据库是Mysql时将会是漂亮的,但是作为一个通用的类(事实

网络12-1-42基于Web的分页技术的研究与实现网络121赵金良

基于Web的分页技术的研究与实现 赵金良 (计算机学院网络工程系12-1 42号) 摘要:对基于SQL Server的动态Web应用系统来说,数据的查询分页是其必备的功能之一。为了在实现功能的同时兼顾系统性能,本文结合HTML语言、Java语言,利用ASP技术、MySQL 、JDBC技术,针对Web的分页显示技术,设计并实现了Web的分页显示。 关键词:WEB;JAVA;MYSQL;JDBC

1 概述 1.1 背景 当今社会是一个信息社会,一个知识经济时代。互联网正在融入我们社会中的每一个主面,影响和改变着我们的生活。近年来,随着网络技术的迅猛发展,越来越多的部门、企事业单位都在通过Internet对外宣传自己,同时为那些有信息需求的人提供方便快捷的服务。 自从Web的产生到现在短短几年的发展,Web技术已从最初简单的文档的浏览发展到当今复杂电子商务的应用,其间共经历了静态文档、动态交互页面和实时可伸缩的事务处理三个阶段。 1.2 本文的主要内容及组织结构 本文研究的内容为如何建立一个查询并进行分页。 本文的组织结构: 全文共分5章。 第一章,主要是介绍背景及本文的组织结构; 第二章,介绍WEB的相关知识; 第三章,介绍基于ASP的分页显示技术; 第四章,介绍其他分页显示技术; 第五章,结论。

2 Web相关介绍 建立一个动态网页,需要许多相关的技术相结合:HTML、JAVA、数据库、XML等。 2.1 HTML语言 HTML(Hyper Text Markup Language 超文本标记语言)是一种用来制作超文本文档的简单标记语言。用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX,WINDOWS等)。自1990年以来HTML就一直被用作World Wide Web上的信息表示语言,用于描述Homepage的格式设计和它与WWW上其它Homepage的连结信息。HTML文档(即Homepage的源文件)是一个放置了标记的ASCII文本文件,通常它带有.html 或.htm的文件扩展名。 生成一个HTML文档主要有以下三种途径: 1、通过可见即可得的网页编写程序生; 2、手工在记事本中直接编写; 3、由服务器程序动态生成。 2.2 Java语言 Java命名来源于开发人员名字的组合:James Gosling、Arthur Van Hoff和Andy Bechtolsheim 首字母的缩写。它是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的,安全的,结构的,中立的,可移植的,性能很优异的,多线程的,动态的语言。 WEB服务器编程使用的主要是JSP(Java Server Pages)技术,是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP 开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。 2.3 数据库技术 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。 随着Internet的发展,出现了许多的网上数据库,为庞大的网站群提供信息来源。建立一个网站系统使用的数据库主要有:MSSQL、MYSQL、MDB等。 2.4 XML技术 XML 代表Extensible Markup Language的缩写,意为可扩展的标记语言。XML是用于网络上数据交换的语言,具有与描述Web页面的HTML语言相似的格式。它是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识;它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。 3.1 开发工具 如何满足用户对访问Web数据库页面的速度的要求,这就需要对大量数据进行分页显示,而在Web页面中实现数据库记录的分页显示是一项复杂而又实用的技术,这里将分别介绍针对查询分页功能的实现使用的几种开发工具:JSP技术、MySQL、JDBC技术。 3.1.1 ASP技术 ASP是Active Server Page的缩写,意为“动态服务器页面”。ASP是微软公司开发的代替CGI 脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。ASP的网页文件的格式是.asp,现在常用于各种动态网站中。 ASP是一种服务器端脚本编写环境,可以用来创建和运行动态网页或Web应用程序。ASP 网页可以包含HTML标记、普通文本、脚本命令以及COM组件等。利用ASP可以向网页中

相关主题
文本预览
相关文档 最新文档
工号 姓名 性别 工龄 工资