JSP_网上搜集的分页及example搜索相关代码.doc_第1页
JSP_网上搜集的分页及example搜索相关代码.doc_第2页
JSP_网上搜集的分页及example搜索相关代码.doc_第3页
JSP_网上搜集的分页及example搜索相关代码.doc_第4页
JSP_网上搜集的分页及example搜索相关代码.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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();finallyconn = 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 myBookPaginQuery(int page)List bookList = new ArrayList();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 = 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 页面代码: 图书信息 !- % 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 (pageNumcountPage) pageNum = 1; bookPaginQuery.setCurrentlyPage(pageNum); /设置当前页 int currentlyPage = bookPaginQuery.getCurrentlyPage(); /获得当前页 List bookList = bookPaginQuery.myBookPaginQuery(pageNum); /分页查询 if(bookList!=null & bookList.size()0) % 图书名称 图书编号 作者 价格 图书简介 出版日期 % for (int i=0; i 共页     当前第页     首页     上一页     a href=index.jsp?pageNum=下一页     a href=index.jsp?pageNum=尾页     共页     当前第页     首页     a href=index.jsp?pageNum=上一页     下一页     尾页     共页     当前第页     首页     a href=index.jsp?pageNum=上一页     a href=index.jsp?pageNum=下一页     a href=index.jsp?pageNum=尾页     对不起,没有相应的信息 最后效果如下图:点击首页:点击下一页:点击尾页:查询表单中要像这样的有个下拉框(select)里面全部为查询条件如(根据学生名,根据学生id)后面还有个(text) 可以输入关键字如(张三,李四);那位大哥能帮下忙解决下,举个例子说明.select * from table where name like %张三%把下拉框的值设置为数据库中的字段名。比如:学生名 后台根据得到的下拉框值,SQL语句如下:SQL code:SELECT * from table WHERE type LIKE %textvalue%;上面的就可以满足你的需求了我一般是拼接字符串SQL用like语法就可以实现。2L可以LZ,2L的就很好。在servlet或者action中得到下拉列表(type)和文本框的值 (value)。jsif(学生名) like(%学生名%) else if(id) like(%id%);%/变量声明java.sql.ConnectionsqlCon/数据库连接对象java.sql.StatementsqlStmt/SQL语句对象java.sql.ResultSetsqlRst/结果集对象java.lang.StringstrCon/数据库连接字符串java.lang.StringstrSQL/SQL语句intintPageSize/一页显示的记录数intintRowCount/记录总数intintPageCount/总页数intintPage/待显示页码java.lang.StringstrPageinti/设置一页显示的记录数intPageSize=2/取得待显示页码strPage=request.getParameter("page")if(strPage=null)/表明在QueryString中没有page这一个参数,此时显示第一页数据intPage=1else/将字符串转换成整型intPage=java.lang.Integer.parseInt(strPage)if(intPage;intPageCount)intPage=intPageCount%;JSP数据库操作例程-数据分页显示-JDBC2.0-Oracle;姓名;年龄;0)/将记录指针定位到待显示页的第一条记录上sqlRst.absolute(intPage-1)*intPageSize+1)/显示数据i=0while(i;第;页共;页%if(intPage;ahref="jdbc20-oracle.jsp?page=;"下一页;1)%;ahref="jdbc20-oracle.jsp?page=;"上一页;%ArrayList list= (ArrayList)session.getAttribute(listArrayList); for(int i = (pageNow - 1) * pageSize ; i allItem ? allItem : (pageNow * pageSize) ; i+) for(int j=0;j 类型:关键字:资源描述:作者:|出版日期:|出版社:|a href=$pageContext.request.contextPath/download filename=点击这里下载地址: 首页a href=show.jsp?page=%=pageNow - 1 上一页a href=show.jsp?page= pageCount ? pageCount : pageNow + 1%下一页a href=show.jsp?page=尾页当前第页,总共页下面是我输出后的显示界面截图:仔细看一下 第一条和第五条、第二条和第六条是一样的。是不是我的for循环写的有问题啊?我没有用数据库,用的是xml资源描述语言,搜索信息已经在servlet保存到session里了。以下是servlet里的保存到session里的代码:for ( i = 0; i hits.scoreDocs.length; i+) ScoreDoc sdoc = hits.scoreDocsi; Document doc = indexSearch.doc(sdoc.doc); t=doc.get(title); a=doc.get(author); k=doc.get(keywords);kd=doc.get(kind);u=doc.get(url);dt=doc.get(date);db=doc.get(describe); p=doc.get(publisher) list.add(t);list.add(a); list.add(k); list.add(kd); list.add(u); list.add(dt); list.add(db); list.add(p); session.setAttribute(listArrayList,list);各位高手看看 哪里错了啊?怎么循环显示啊?还有显示界面的这句代码:;a href=$pageContext.request.contextPath/download filename=点击这里下载/点击文本可以实现下载,执行的代码我放到servlet里了servlet名叫download。我没用EL语言啊能不能改一下啊?加上这句报错/ArrayList list= (ArrayList)session.getAttribute(listArrayList); for(int i = (pageNow - 1) * pageSize ; i allItem ? allItem : (pageNow * pageSize) ; i+) for(int j=0;j简单看了下你的程序,发现你第一个for循环应该是错了,改了再试试吧for(int i = (pageNow - 1) * pageSize ; i allItem ? allItem : (pageNow * pageSize) ; i+)这里最后的i+应该改成i=i+pageSize;因为看你的程序,你是想跟据页号不同来显示,可是第一页时i=0,第二页时i应该从10开始循环,可是你i+后,i就从1开始了循

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论