JSTL分页显示数据代码
JSP分页显示代码

ShowRecordByPage.javapackage database.operation;import java.sql.*;import com.sun.rowset.*;public class ShowRecordByPage{ int pageSize=10; //每页显示的记录数int pageAllCount=0; //分页后的总页数int showPage=1 ; //当前显示页StringBuffer presentPageResult; //显示当前页内容CachedRowSetImpl rowSet; //用于存储ResultSet对象String databaseName="user"; //数据库名称String tableName="user_tab"; //表的名字String user="sa" ; //用户String password="123" ; //密码String 字段[]=new String[100] ;int 字段个数=0;public ShowRecordByPage(){ presentPageResult=new StringBuffer();try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newIns tance();}catch(Exception e){}}public void setPageSize(int size){ pageSize=size;字段个数=0;Stringuri="jdbc:sqlserver://127.0.0.1:1433;DatabaseName="+databaseName;try{ Connectioncon=DriverManager.getConnection(uri,user,password);DatabaseMetaData metadata=con.getMetaData();ResultSet rs1=metadata.getColumns(null,null,tableName,null);int k=0;while(rs1.next()){ 字段个数++;字段[k]=rs1.getString(4); //获取字段的名字k++;}Statementsql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);ResultSet rs=sql.executeQuery("SELECT * FROM"+tableName);rowSet=new CachedRowSetImpl(); //创建行集对象rowSet.populate(rs);con.close(); //关闭连接st();int m=rowSet.getRow(); //总行数int n=pageSize;pageAllCount=((m%n)==0)?(m/n):(m/n+1);}catch(Exception exp){}}public int getPageSize(){ return pageSize;}public int getPageAllCount(){ return pageAllCount;}public void setShowPage(int n){ showPage=n;}public int getShowPage(){ return showPage;}public StringBuffer getPresentPageResult(){ if(showPage>pageAllCount)showPage=1;if(showPage<=0)showPage=pageAllCount;presentPageResult=show(showPage);return presentPageResult;}public StringBuffer show(int page){ StringBuffer str=new StringBuffer();str.append("<table border=1>");str.append("<tr>");for(int i=0;i<字段个数;i++){ str.append("<th>"+字段[i]+"</th>");}str.append("</tr>");try{ rowSet.absolute((page-1)*pageSize+1);for(int i=1;i<=pageSize;i++){ str.append("<tr>");for(int k=1;k<=字段个数;k++){ str.append("<td>"+rowSet.getString(k)+"</td>");}str.append("</tr>");rowSet.next();}}catch(SQLException exp){}str.append("</table>");return str;}public void setDatabaseName(String s){ databaseName=s.trim();}public String getDatabaseName(){ return databaseName;}public void setTableName(String s){ tableName=s.trim();}public String getTableName(){ return tableName;}public void setPassword(String s){ password=s.trim();;}public void setUser(String s){ user=s.trim();}public String getUser(){ return user;}}showByPage.jsp<%@ page contentType="text/html;charset=GB2312" %><%@ page import="java.sql.*" %><%@ page import="database.operation.*" %><jsp:useBean id="look" class="database.operation.ShowRecordByPage" scope="session" /><jsp:setProperty name="look" property="databaseName" value="factory" /><jsp:setProperty name="look" property="tableName" value="employee" /> <jsp:setProperty name="look" property="user" value="sa" /><jsp:setProperty name="look" property="password" value="sa" /><jsp:setProperty name="look" property="pageSize" value="2" /><HTML><BODY>数据库<jsp:getProperty name= "look" property="databaseName"/>中<jsp:getProperty name= "look" property="tableName"/>表的记录将被分页显示。
jsp分页,分页形式(1,2,3······)

jsp分页,分页形式(1,2,3······)jsp中实现如下形式的分页(<1,2,3>)所需参数: 1.数据库或接⼝返回的数据的总条数(total)。
2.每页显⽰的条数。
(我将每页显⽰的条数定为了15条)⽤数据的总条数除以每页显⽰的条数,就是所要展⽰页数。
代码摘要如下: 后台:Integer total = (Integer) returnMap.get("total") ;/**//获取接⼝或数据库返回的数据总条数。
*/Integer totalpages = total%15==0?(total/15):(total/15)+1;//求总页数,这⼉我⽤的是三⽬运算,即:如果总数除以每页条数,没有余数,就返回得到的商,若有余数,则再给商加⼀。
这样就得到了⽐较全的页数。
request.setAttribute("totalpages", totalpages);//返回到前台 前端:(我是⽤jsp实现的)1.先获取返回值,再将返回值转化成int类型,便于做循环操作<%String path = request.getContextPath();String pageCount = request.getAttribute("totalpages").toString();int pagetotal = Integer.parseInt(pageCount);%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>2.进⾏循环展⽰<% for (int i = 1; i <= pagetotal; i++) {%><a href="#" onclick="testPage();" value="<%=i%>" id="pages" class="number"><%=i%></a><%} %>在js中定义testPage();函数,将获取到的页数传到后台从⽽实现导航效果。
JSP 分页查询关键代码

JSP 分页查询关键代码1.连接数据库的基类:package mons;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class GetConnection {protected Connection conn = null;//连接字符串protected PreparedStatement ps = null;//预编译并存储 SQL 指令protected ResultSet rs = null;//查询结果集private static final String DRIVER ="com.microsoft.sqlserver.jdbc.SQLServerDriver";//加载数据库驱动的字符串private static final String URL ="jdbc:sqlserver://localhost:1433;databaseName=BOOKDB";//连接数据库的字符串private static final String USERNAME = "sa";//数据库用户名private static final String PASSWORD = "accp";//数据库用户密码/***获得数据库连接*@return*/public Connection getConn() {Connection conn = null;try {Class.forName(DRIVER);//加载数据库驱动conn =DriverManager.getConnection(URL,USERNAME,PASSWORD);//连接数据库} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return conn;}/** 释放资源*/public void closeAll(){try {if(rs != null){rs.close();}if(ps != null){ps.close();}if(conn != null){conn.close();}} catch (SQLException e) {e.printStackTrace();}finally{conn = null;ps = null;rs = null;}}}2.实体类代码:package com.book.entity;public class Book {private int book_id;private String book_name;private String book_num;private String book_author;private double book_price;private String book_synopsis;private String book_publishTime;public String getBook_author() {return book_author;}public void setBook_author(String book_author) { this.book_author = book_author;}public int getBook_id() {return book_id;}public void setBook_id(int book_id) {this.book_id = book_id;}public String getBook_name() {return book_name;}public void setBook_name(String book_name) { this.book_name = book_name;}public String getBook_num() {return book_num;}public void setBook_num(String book_num) { this.book_num = book_num;}public double getBook_price() {return book_price;}public void setBook_price(double book_price) { this.book_price = book_price;}public String getBook_publishTime() {return book_publishTime;}public void setBook_publishTime(String book_publishTime) { this.book_publishTime = book_publishTime;}public String getBook_synopsis() {return book_synopsis;}public void setBook_synopsis(String book_synopsis) { this.book_synopsis = book_synopsis;}}3.分页查询代码:package com.book.pagin;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import mons.GetConnection;import com.book.entity.Book;public class BookPaginQuery extends GetConnection { private final int PAGEROW = 8;//每页显示的行数private int countRow;//总行数private int countPage;//总页数private int currentlyPage;//当前第几页/***得到总页数*@return*/public int getCountPage() {return countPage;}/***设置总页数*@param countPage*/public void setCountPage() {//通过总行数设置总页数if (this.countRow % this.PAGEROW == 0) {//如果总行数除以每页显示的行数余数为零时,总页数等于它们的商this.countPage = this.countRow / this.PAGEROW;} else {//否则,总页数等于它们的商加1this.countPage = this.countRow / this.PAGEROW + 1;}}/***得到总行数*@return*/public int getCountRow() {return countRow;}/***设置总行数*@param countRow*/public void setCountRow() {//通过聚合函数查询 TBL_BOOK 表中一共有多少条数据,并把值存储到 countRow 中String sql = "SELECT COUNT(*) FROM TBL_BOOK";try {PreparedStatement ps =super.getConn().prepareStatement(sql);ResultSet rs = ps.executeQuery();if (rs.next()) {this.countRow = rs.getInt(1);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/***得到当前页数*@return*/public int getCurrentlyPage() {return currentlyPage;}/***设置当前页数*@param currentlyPage*/public void setCurrentlyPage(int currentlyPage) {this.currentlyPage = currentlyPage;}/***分页查询*@param page当前页数*@return*/public List<Book> myBookPaginQuery(int page){List<Book> bookList = new ArrayList<Book>();int num = (page-1) * this.PAGEROW; //要被排除的行数String sql = "SELECT top("+this.PAGEROW+") * FROM TBL_BOOK WHERE book_id NOT IN (SELECT TOP("+num+") book_id FROM TBL_BOOK)";try {PreparedStatement ps =super.getConn().prepareStatement(sql);//预编译 SQL 指令并把预编译好的 SQL 存储在 PreparedStatement 对象中ResultSet rs = ps.executeQuery(); //执行预编译好的 SQL 指令,并把获得的查询结果集存储在 ResultSet 对象中while(rs.next()) {//通过 while 循环迭代出结果集中的所有数据,并把它们存储在 List<Book> 集合中Book book = new Book();book.setBook_id(rs.getInt("book_id"));book.setBook_name(rs.getString("book_name"));book.setBook_num(rs.getString("book_num"));book.setBook_author(rs.getString("book_author"));book.setBook_price(rs.getDouble("book_price"));book.setBook_synopsis(rs.getString("book_synopsis"));book.setBook_publishTime(rs.getString("book_publishTime"));bookList.add(book);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return bookList;}}4.JSP 页面代码:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <jsp:directive.page import="com.book.pagin.BookPaginQuery"/><jsp:directive.page import="com.book.entity.Book"/><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>图书信息</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><%request.setCharacterEncoding("UTF-8"); //设置编码集String strPageNum = request.getParameter("pageNum"); //获得当前页数的字符串int pageNum = 1;//把当前页数的字符串转化为数字,如果转化失败,则设置当前页数为 1 ,即首页try{pageNum = Integer.parseInt(strPageNum);} catch (Exception e){pageNum = 1;}BookPaginQuery bookPaginQuery = new BookPaginQuery();//实例化BookPaginQuery 类,得到 bookPaginQuery 对象bookPaginQuery.setCountRow(); //设置总行数bookPaginQuery.setCountPage(); //设置总页数int countPage = bookPaginQuery.getCountPage(); //获得总页数//如果当前页数小于 0 或大于总页数,则把当前页重新设为 1 ,即首页if (pageNum<=0 || pageNum>countPage){pageNum = 1;}bookPaginQuery.setCurrentlyPage(pageNum); //设置当前页int currentlyPage = bookPaginQuery.getCurrentlyPage(); //获得当前页List<Book> bookList = bookPaginQuery.myBookPaginQuery(pageNum); //分页查询if(bookList!=null && bookList.size()>0) {%><table border="1" align="center"><tr><th align="center">图书名称</th><th align="center">图书编号</th><th align="center">作者</th><th align="center">价格</th><th align="center">图书简介</th><th align="center">出版日期</th></tr><%for (int i=0; i<bookList.size(); i++) {Book book = bookList.get(i);%><tr><td width="200"><%=book.getBook_name() %></td><td width="100"><%=book.getBook_num() %></td><td width="50"><%=book.getBook_author() %></td><td width="50"><%=book.getBook_price() %></td><td width="300"><%=book.getBook_synopsis() %></td><tdwidth="100"><%=book.getBook_publishTime().substring(0,10) %></td> </tr>}%><tr><td colspan="6" align="center"><%if(currentlyPage==1){%>共<%=countPage %>页 当前第<%=currentlyPage %>页 首页 上一页 <a href="index.jsp?pageNum=<%=currentlyPage+1 %>">下一页</a> <a href="index.jsp?pageNum=<%=countPage %>">尾页</a> <%}else if(currentlyPage==countPage){%>共<%=countPage %>页 当前第<%=currentlyPage %>页 <a href="index.jsp?pageNum=1">首页</a> <a href="index.jsp?pageNum=<%=currentlyPage-1 %>">上一页</a> 下一页 尾页 <%}else{%>共<%=countPage %>页 当前第<%=currentlyPage %>页 <a href="index.jsp?pageNum=1">首页</a> <a href="index.jsp?pageNum=<%=currentlyPage-1 %>">上一页</a> <a href="index.jsp?pageNum=<%=currentlyPage+1 %>">下一页</a> <a href="index.jsp?pageNum=<%=countPage %>">尾页</a> <%}%></td></tr></table>}else{%><h2 align="center">对不起,没有相应的信息……</h2> <%}%></body></html>最后效果如下图:点击首页:点击下一页:点击尾页:。
jsp分页显示的实现代码

jsp分页显⽰的实现代码最近这⼏天在做JSP留⾔板设计的过程中,遇到了⼀个问题。
先看⼀张截图:这是随便在⼀个新闻的留⾔页⾯截的图,假如留⾔条数太多,那整个页⾯得排好长好长,这就直接给⽤户造成了⿇烦、不舒服的感受,所以,解决这个问题,通常采⽤分页显⽰的⽅法。
要把页⾯显⽰⽅式设计成这样的⽅式,通常需要⽤到这⼏个基本变量:pageSize(每个页⾯所显⽰的记录数)、pageCount(⼀共有多少个页⾯)、showPage(⽬前显⽰第⼏页)、recordCount(总的记录数),为了⽅便理解,画了⼀张图:如果想要把页⾯显⽰做成这样的效果,在这张图中pageSize=4,pageCount=3,showPage=1,recordCount=12。
思路是,如果要显⽰那个页⾯,就要先算出来每个页⾯第⼀条记录是所有记录中的第⼏条记录,假设每页的第⼀条记录是总记录中的第position条记录,那么position=(ShowPage - 1)×PageSize+1。
⽐如上图这个例⼦,如果要显⽰第⼀页,就要计算出第⼀页中的第⼀条记录是总的记录中的第⼀条记录;如果要显⽰第⼆页,就要计算出第⼆页中的第⼀条记录是总的记录中的第四条记录;如果要显⽰第三页,就要计算出第⼀页中的第⼀条记录是总的记录中的第九条记录。
在JSP中的核⼼代码为如下(⽤的数据库为MySQL):复制代码代码如下:<%! int pageSize=4;int pageCount;int showPage;%><!-- 连接数据库并从数据库中调取记录--><%Connection con;Statement sql;ResultSet rs;try{Class.forName("com.mysql.jdbc.Driver");}catch(ClassNotFoundException e){}try{con=DriverManager.getConnection("jdbc:mysql://localhost:3306/message board","root","123456"); sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); //返回可滚动的结果集rs=sql.executeQuery("select * from messageinfo");//将游标移到最后⼀⾏st();//获取最后⼀⾏的⾏号int recordCount=rs.getRow();//计算分页后的总数pageCount=(recordCount%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);//获取⽤户想要显⽰的页数:String integer=request.getParameter("showPage");if(integer==null){integer="1";}try{showPage=Integer.parseInt(integer);}catch(NumberFormatException e){showPage=1;}if(showPage<=1){showPage=1;}if(showPage>=pageCount){showPage=pageCount;}//如果要显⽰第showPage页,那么游标应该移动到的position的值是:int position=(showPage-1)*pageSize+1;//设置游标的位置rs.absolute(position);//⽤for循环显⽰本页中应显⽰的的记录for(int i=1;i<=pageSize;i++){%><table><tr><th><%=rs.getString("UserName") %></th><td>发表于:<%=rs.getString("datetime") %></td></tr><tr ><th colspan="3"><textarea><%=rs.getString("content") %></textarea></th></tr></table><%rs.next();}rs.close();con.close();}catch(Exception e){e.printStackTrace();}%><br>第<%=showPage %>页(共<%=pageCount %>页)<br><a href="ShowMessages.jsp?showPage=1">⾸页</a><a href="ShowMessages.jsp?showPage=<%=showPage-1%>">上⼀页</a><% //根据pageCount的值显⽰每⼀页的数字并附加上相应的超链接for(int i=1;i<=pageCount;i++){%><a href="ShowMessages.jsp?showPage=<%=i%>"><%=i%></a><% }%><a href="ShowMessages.jsp?showPage=<%=showPage+1%>">下⼀页</a><a href="ShowMessages.jsp?showPage=<%=pageCount%>">末页</a><!-- 通过表单提交⽤户想要显⽰的页数 --><form action="" method="get">跳转到第<input type="text" name="showPage" size="4">页<input type="submit" name="submit" value="跳转"></form>运⾏结果如下(为了简化代码,已经⽹页布局相关代码去掉,此处仅指功能):可以跳转到⾸页、上⼀页、下⼀页、末页,可以⼿动在数字上指定页数,也可以在输⼊框中输⼊要显⽰的页数。
彻底解决Struts 数据库查询结果 分页显示

}
public void setPrice(String price){
this.price=price;
boolean hasPreviousPage=false; //是否有前一页
ArrayList arrayList;
Iterator it;
public PageBean(){}
}
public static ArrayList getAllBook(Connection connection){
String sql="select * from book";
* @作者 李敏强
* Struts分页显示数据Bean,对应数据库中Book表
*/
public class Book {
private String bookname; //书名
private String author; //作者
ArrayList arrayList = new ArrayList();
try{
Statement statement =
connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
彻底解决Struts 数据库查询结果 分页显示
一 开发环境
Elicpse+Struts Studio+SqlServer2000+Tomcat。
二 开发思路
既然讲的是Struts,那自然离不了MVC,分页显示也是如此。
}
纯JSP分页代码

纯JSP分页代码//连接字符串Stringurl="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&pa ssword="+userPasswd;Class.forName(driverName).newInstance();Connection connection=DriverManager.getConnection(url);Statement statement = connection.createStatement();//每页显示记录数int PageSize = 8;int StartRow = 0; //开始显示记录的编号int PageNo=0;//需要显示的页数int CounterStart=0;//每页页码的初始值int CounterEnd=0;//显示页码的最大值int RecordCount=0;//总记录数;int MaxPage=0;//总页数int PrevStart=0;//前一页int NextPage=0;//下一页int LastRec=0;int LastStartRecord=0;//最后一页开始显示记录的编号//获取需要显示的页数,由用户提交if(request.getParameter("PageNo")==null){ //如果为空,则表示第1页if(StartRow == 0){PageNo = StartRow + 1; //设定为1}}else{PageNo = Integer.parseInt(request.getParameter("PageNo")); //获得用户提交的页数StartRow = (PageNo - 1) * PageSize; //获得开始显示的记录编号}//因为显示页码的数量是动态变化的,假如总共有一百页,则不可能同时显示100个链接。
jspEL表达式结合JSTL标准标签实现分页

jspEL表达式结合JSTL标准标签实现分页<%@ page contentType="text/html; charset=GBK" %> <%@ taglib prefix="c" uri="" %><%@ taglib prefix="sql" uri="" %><%@taglib uri="" prefix="fmt"%><html><head><title>使用SQL标签</title></head><body bgcolor="white"><c:set var="noOfRows" value="10" /><sql:setDataSource driver ="sun.jdbc.odbc.JdbcOdbcDriver" url ="jdbc:odbc:accp" user="sa" password="" var="conn"/> <c:if test="${custList == null}"><sql:query var="custList" scope="session"sql="SELECT * FROM employee ORDER BY LName" dataSource="${conn}"/></c:if><c:choose><c:when test="${custList.rowCount == 0}">此处不再有其他客户...</c:when><c:otherwise><b>以下是客户列表:</b><p><table border="1"><th>姓氏</th><th>名字</th><th>年龄</th><c:forEach items="${custList.rows}" var="row" begin="${param.start}" end="${param.start + noOfRows - 1}"><tr><td><c:out value="${row.LName}" /></td> <td><c:out value="${row.FName}" /></td> <td><c:out value="${row.job_id}" /></td></tr></c:forEach></table></c:otherwise></c:choose><p><c:choose><c:when test="${param.start > 0}"><a href="foreachexample.jsp?start=<c:out value="${param.start - noOfRows}" />">上一页</a></c:when><c:otherwise>上一页</c:otherwise></c:choose><c:choose><c:when test="${param.start + noOfRows < custList.rowCount}"><a href="foreachexample.jsp?start=<c:out value="${param.start + noOfRows}" />">下一页</a></c:when><c:otherwise>下一页</c:otherwise></c:choose>共${custList.rowCount}条记录 共<fmt:formatNumber type="number" value="${custList.rowCount%noOfRows==0?custList.rowCount/ noOfRows:(custList.rowCount%noOfRows>4?(custList.rowCount /noOfRows):(custList.rowCount/noOfRows+1))}" maxFractionDigits="0"/> 页 第<fmt:formatNumber type="number" value="${(param.start%noOfRows==0?param.start/noOfRows:( param.start%noOfRows>4?(param.start/noOfRows):(param.start /noOfRows+1)))+1}" maxFractionDigits="0"/> 页</body></html>说明:这里使用到了标准标签库中SQL标签去查询数据记录。
如何实现在基于J2EE Struts框架的Web应用中实现数据分页显示功能

1.1如何实现在基于J2EE Struts框架的Web应用中实现数据分页显示功能1、Web分页原理分页问题是一个非常普遍的问题,开发者几乎都会遇到。
因为Http的无状态性,每一次提交都是当作一个新的请求来处理,即使是换页,上一次的结果对下一次是没有影响的。
一般有三种实现分页的方式。
(1)每次取查询结果的所有数据,然后根据页码显示指定的纪录。
(2)根据页面只取一页数据,然后显示这一页,这里要构造sql语句。
(3)取一定页数的数据,就是前面两种的折中。
2、编程实现中的程序的实现方式——可以采用下面的几中形式(1)JSP+JavaBean(2)JSP+JavaBean+Tag标签库(3)利用Struts方式(JSP+Action +JavaBean)3、关于采用“JSP+JavaBean+Tag标签库”方式的实现示例(1)JSP页面1)引用标签库的*.tld<%@ taglib uri="/usertaglib/PageDataGuideBarWithAttrTag.tld"prefix="showGuideBar" %> 2)创建除为导航条提供初始参数的JavaBean的对象<jsp:useBean id="getShowGuideBarParamBeanID" scope="page"class="netbookbean.ViewHelper_GetShowGuideBarParam"/> 3)对ViewHelper_GetShowGuideBarParam.java的初始化方法的调用<%getShowGuideBarParamBeanID.guideBar_Init(pageContext);recordSet=getShowGuideBarParamBeanID.getRecordSet();%>(2)为标签库提供初始化参数<showGuideBar:PageDataGuideBarWithAttrTag currentShowPage="<%=newInteger(getShowGuideBarParamBeanID.getCurrentShowPage()).toString()%>"totalPageCount="<%=newInteger(getShowGuideBarParamBeanID.getTotalPageCount()).toString()%>"recordTotalCount="<%=newInteger(getShowGuideBarParamBeanID.getRecordTotalCount()).toString()%>"recordCounterPerPage="<%=newInteger(recordCounterPerPage).toString()%>" />(3)显示分页的数据(4)编程实现为导航条提供初始参数的JavaBean组件---ViewHelper_GetShowGuideBarParam.java(5)编程实现导航条功能的标签库----PageDataGuideBarWithAttrTag.java4、关于利用Struts方式(JSP+Action +JavaBean)方式的实现示例既然采用Struts,那自然离不了MVC,分页显示也是如此。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (7782,'杨军','分析员','2005-01-12',2500) ;
CREATE DATABASE employee ;
/*=======================使用数据库=======================*/
USE employee ;
/*=======================删除数据表=======================*/
</html>
数据库和表的创建语句:
/*=======================删除数据库=======================*/
DROP DATABASE IF EXISTS employee ;
/*=======================创建数据库=======================*/
</sql:query>
<!—在表格中显示数据-->
<tableborder="1"width="50%">
<tr>
<td>雇员编号</td>
<td>雇员姓名</td>
<td>雇员工作</td>
<td>雇员工资</td>
<td>雇佣日期</td>
</tr>
<c:forEachitems="${result.rows}"var="row">
<title>分页显示数据库数据</title>
</head>
<body>
<fmt:requestEncodingvalue="GBK"/>
<c:setvar="perpage"value="2"/>
<c:catchvar="error_message"/>
<sql:setDataSourcedataSource="jdbc/employee"/>
</c:if>
<c:iftest="${(param.page+0) < (pageCount-2)}">
<ahref="?page=${param.page+1}">></a>
</c:if>
<ahref="?page=<%=i - 1%>">>></a>
<br/>
JSTL
代码:
<%@pagecontentType="text/html"pageEncoding="GBK"%>
<%@tagliburi="WEB-INF/c.34;%>
<%@tagliburi="WEB-INF/sql.tld"prefix="sql"%>
<html>
<head>
DROP TABLE IF EXISTS emp ;
/*=======================创建员工表emp =======================*/
CREATE TABLE emp(
empnoINT(4)PRIMARY KEY,
enameVARCHAR(10),
jobVARCHAR(9),
<c:otherwise>
<c:setvar="pageCount"value="${RecorderCount / perpage +1}"scope="page"/>
</c:otherwise>
</c:choose>
<%
inti = ((Double) pageContext.getAttribute("pageCount")).intValue();
%>
本表共有${RecorderCount}条记录,共有<%=i%>页,每页${perpage}条.<br/>
<br/>
<ahref="?page=0"><<</a>
<c:iftest="${param.page > 0}">
<ahref="?page=${param.page-1}"><</a>
<tr>
<td>${row.empno}</td>
<td>${row.ename}</td>
<td>${row.job}</td>
<td>${row.sal}</td>
<td>${row.hiredate}</td>
</tr>
</c:forEach>
</table>
${error_message}
</body>
hiredateDATE,
salFLOAT(7,2)
) ;
/*=======================插入测试数据=======================*/
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (6060,'王大有','经理','2001-09-16',2000.30) ;
<br/>
第${param.page+1}页<br/>
<br/>
<!--查询数据-->
<sql:queryvar="result"maxRows="${perpage}"startRow="${param.page*perpage}">
SELECTempno,ename,job,hiredate,salFROMemp;
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (7762,'刘明','销售','2005-03-09',1000) ;
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (7839,'王月','经理','2006-09-01',2500) ;
</c:forEach>
<!--计算分页-->
<c:choose>
<c:whentest="${0 == RecorderCount % perpage}">
<c:setvar="pageCount"value="${RecorderCount / perpage}"scope="page"/>
</c:when>
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (7369,'张小红','销售','2003-10-09',1500.90) ;
INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES (8964,'李祺','分析员','2003-10-01',3000) ;
<!--查询记录总数-->
<sql:queryvar="recorder">
select count(*) fromemp
</sql:query>
<c:forEachitems="${recorder.rowsByIndex}"var="count">
<c:setvar="RecorderCount"value="${count[0]}"/>