JSP_网上搜集的分页及example搜索相关代码
更新时间:2023-06-03 19:57:01 阅读量: 实用文档 文档下载
- 基于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) {
}
}
return conn;
// TODO Auto-generated catch block e.printStackTrace();
// TODO Auto-generated catch block e.printStackTrace();
} catch (SQLException e) {
}
/*
* 释放资源 */
public void closeAll(){ }
try { }
if(rs != null){ }
if(ps != null){ }
if(conn != null){ }
e.printStackTrace(); conn = null; ps = null; rs = null;
conn.close(); ps.close(); rs.close();
} catch (SQLException e) { }finally{
2. 实体类代码:
package com.book.entity;
public class Book {
private String book_publishTime; private String book_synopsis; private double book_price; private String book_author; private String book_num; private String book_name; private int book_id;
public String getBook_publishTime() { }
return book_publishTime;
public void setBook_price(double book_price) { }
this.book_price = book_price; public double getBook_price() { }
return book_price;
public void setBook_num(String book_num) { }
this.book_num = book_num; public String getBook_num() { }
return book_num;
public void setBook_name(String book_name) { }
this.book_name = book_name; public String getBook_name() { }
return book_name;
public void setBook_id(int book_id) { }
this.book_id = book_id; public int getBook_id() { }
return book_id;
public void setBook_author(String book_author) { }
this.book_author = book_author; public String getBook_author() { }
return book_author;
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;
} /**
* 得到总行数 * @return */
public int getCountRow() { } /**
* 设置总行数
* @param countRow */
public void setCountRow() {
//通过聚合函数查询 TBL_BOOK 表中一共有多少条数据,并把值存储到 countRow String sql = "SELECT COUNT(*) FROM TBL_BOOK"; try { }
PreparedStatement ps =
ResultSet rs = ps.executeQuery(); if (rs.next()) { }
// TODO Auto-generated catch block e.printStackTrace();
this.countRow = rs.getInt(1);
return countRow;
} else {//否则,总页数等于它们的商加1 this.countPage = this.countRow / this.PAGEROW + 1; }
中
}
super.getConn().prepareStatement(sql);
} catch (SQLException e) {
* 得到当前页数 * @return */
public int getCurrentlyPage() { } /**
* 设置当前页数
* @param currentlyPage */
public void setCurrentlyPage(int 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 try {
PreparedStatement ps =
this.currentlyPage = currentlyPage; return currentlyPage;
book_id NOT IN (SELECT TOP("+num+") book_id FROM TBL_BOOK)";
super.getConn().prepareStatement(sql);//预编译 SQL 指令并把预编译好的 SQL 存储在 PreparedStatement 对象中
ResultSet rs = ps.executeQuery(); //执行预编译好的 SQL 指令,并while (rs.next()) {//通过 while 循环迭代出结果集中的所有数据,并把
把获得的查询结果集存储在 ResultSet 对象中 它们存储在 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"));
}
}
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block e.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"> <body> <%
request.setCharacterEncoding("UTF-8"); //设置编码集
String strPageNum = request.getParameter("pageNum"); //获得当前<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>
页数的字符串
int pageNum = 1;
//把当前页数的字符串转化为数字,如果转化失败,则设置当前页数为 1 ,即首页
try{ }
pageNum = Integer.parseInt(strPageNum); pageNum = 1; } catch (Exception e){
前页
BookPaginQuery bookPaginQuery = new BookPaginQuery();//实例化 bookPaginQuery.setCountRow(); //设置总行数
bookPaginQuery.setCountPage(); //设置总页数
int countPage = bookPaginQuery.getCountPage(); //获得总页数
//如果当前页数小于 0 或大于总页数,则把当前页重新设为 1 ,即首页 if (pageNum<=0 || pageNum>countPage){ }
bookPaginQuery.setCurrentlyPage(pageNum); //设置当前页
int currentlyPage = bookPaginQuery.getCurrentlyPage(); //获得当
List<Book> bookList = bookPaginQuery.myBookPaginQuery(pageNum);
pageNum = 1;
BookPaginQuery 类,得到 bookPaginQuery 对象
//分页查询 %> <% %>
<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> <td
for (int i=0; i<bookList.size(); i++) {
Book book = bookList.get(i);
<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>
if(bookList!=null && bookList.size()>0) {
width="100"><%=book.getBook_publishTime().substring(0,10) %></td>
</tr>
%> %>
共<%=countPage %>页
当前第<%=currentlyPage %>页 首页 上一页 <tr>
<td colspan="6" align="center"> if(currentlyPage==1){
}
<%
<a href="index.jsp?pageNum=<%=currentlyPage+1 %>">下一页</a>
<a href="index.jsp?pageNum=<%=countPage %>">尾页</a> <% %>
共<%=countPage %>页
当前第<%=currentlyPage %>页
<a href="index.jsp?pageNum=1">首页</a> }else if(currentlyPage==countPage){
<a href="index.jsp?pageNum=<%=currentlyPage-1 %>">上一页</a>
下一页
尾页 <% %>
共<%=countPage %>页
当前第<%=currentlyPage %>页
<a href="index.jsp?pageNum=1">首页</a> }else{
<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> }
%>
<h2 align="center">对不起,没有相应的信息……</h2> <% %> </body> </html>
} }else{
最后效果如下图: 点击首页:
点击下一页:
点击尾页:
查询表单中要像这样的有个下拉框(select)里面全部为查询条件如(根据学生名,根据学生id) 后面还有个(text) 可以输入关键字如(张三,李四); 那位大哥能帮下忙解决下,举个例子说明.
select * from table where name like '%张三%'
把下拉框的值设置为数据库中的字段名。比如: <select name="type">
<option value="name">学生名 </option> </select>
后台根据得到的下拉框值,SQL语句如下: SQL code:
SELECT * from table WHERE type LIKE '%textvalue%';
上面的就可以满足你的需求了
我一般是拼接字符串
SQL用like语法就可以实现。
2L可以
LZ,2L的就很好。在servlet或者action中得到下拉列表(type)和文本框的值 (value)。
js
if(学生名){ like('%学生名%') } else if(id){ like('%id%') }
<%@ page contentType="text/html;charset=8859_1" %>; <% //变量声明
java.sql.Connection sqlCon; //数据库连接对象 java.sql.Statement sqlStmt; //SQL语句对象 java.sql.ResultSet sqlRst; //结果集对象 ng.String strCon; //数据库连接字符串 ng.String strSQL; //SQL语句 int intPageSize; //一页显示的记录数
int intRowCount; //记录总数 int intPageCount; //总页数 int intPage; //待显示页码 ng.String strPage; int i;
//设置一页显示的记录数 intPageSize = 2; //取得待显示页码
strPage = request.getParameter("page");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据 intPage = 1; }
else{//将字符串转换成整型
intPage = ng.Integer.parseInt(strPage); if(intPage<1) intPage = 1; }
//装载JDBC驱动程序
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); //设置数据库连接字符串
strCon = "jdbc:oracle:thin:@linux:1521:ora4cweb"; //连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"hzq","hzq"); //创建一个可以滚动的只读的SQL语句对象
sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); //准备SQL语句
strSQL = "select name,age from test"; //执行SQL语句并获取结果集
sqlRst = sqlStmt.executeQuery(strSQL); //获取记录总数 st();
intRowCount = sqlRst.getRow(); //记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize; //调整待显示的页码
if(intPage>;intPageCount) intPage = intPageCount; %>; <html>; <head>;
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">; <title>;JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle</title>; </head>; <body>;
<table border="1" cellspacing="0" cellpadding="0">;
<tr>;
<th>;姓名</th>; <th>;年龄</th>; </tr>; <%
if(intPageCount>;0){
//将记录指针定位到待显示页的第一条记录上 sqlRst.absolute((intPage-1) * intPageSize + 1); //显示数据 i = 0;
while(i<intPageSize && !sqlRst.isAfterLast()){ %>; <tr>;
<td>;<%=sqlRst.getString(1)%>;</td>; <td>;<%=sqlRst.getString(2)%>;</td>; </tr>; <%
sqlRst.next(); i++; } } %>; </table>; 第页
<%=intPage%>;
页
共
<%=intPageCount%>;
下
一
页
<%if(intPage<intPageCount){%>;<a href="jdbc20-oracle.jsp?page=<%=intPage+1%>;">;
</a>;<%}%>; <%if(intPage>;1){%>;<a href="jdbc20-oracle.jsp?page=<%=intPage-1%>;">;上一页</a>;<%}%>; </body>; </html>; <%
//关闭结果集 sqlRst.close(); //关闭SQL语句对象 sqlStmt.close(); //关闭数据库 sqlCon.close(); %>;
<%
int pageSize=10; //每页显示的条数 int pageNow=1; //默认显示第一页 int
allItem=Integer.parseInt(request.getSession().getAttribute("tiao").toString());//所有的条数
int pageCount=0; //页数 if(allItem%pageSize==0)
pageCount=allItem/pageSize; else
pageCount=allItem/pageSize+1; %> <%
ArrayList list= (ArrayList)session.getAttribute("listArrayList");
for(int i = (pageNow - 1) * pageSize ; i < ((pageNow * pageSize) > allItem ? allItem : (pageNow * pageSize)) ; i++) {
for(int j=0;j<list.size();j=j+8) {
String title=(String)list.get(j);
String author=(String)list.get(j+1); String keywords=(String)list.get(j+2); String kind=(String)list.get(j+3); String url=(String)list.get(j+4); String date=(String)list.get(j+5);
String describer=(String)list.get(j+6); String publisher=(String)list.get(j+7); %>
<table class=result id=k width="600" border="0" > <tbody> <tr>
<td> <div align="left">类型: <%=kind %> <a href="yulan.jsp"><%=title %></a> <br/>
关键字: <%=keywords %><br/> 资源描述: <%=describer %><br/>
作者: <%=author %> || 出版日期: <%=date %> || 出版社: <%=publisher %> || <a
href="${pageContext.request.contextPath}/download filename=<%=url %>">点击这里下载</a><br/>
地址: <%=url %> </div> </td></tr></tbody></table><br/> <%}} %>
<a href="show.jsp?page=1">首页</a>
<a href="show.jsp?page=<%=pageNow - 1 < 1 ? 1 : pageNow - 1%>">上一页</a>
<a href="show.jsp?page=<%=pageNow + 1 > pageCount ? pageCount : pageNow + 1%>">下一页</a>
<a href="show.jsp?page=<%=allItem %>">尾页</a> 当前第<%=pageNow %>页,总共<%=pageCount %>页 下面是我输出后的显示界面截图:
仔细看一下 第一条和第五条、第二条和第六条是一样的。是不是我的for循环写的有问题啊?我没有用数据库,用的是xml资源描述语言,搜索信息已经在servlet保存到session里了。
以下是servlet里的保存到session里的代码: for ( i = 0; i < hits.scoreDocs.length; i++) {
ScoreDoc sdoc = hits.scoreDocs[i];
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=<%=url %>">点击这里下载</a>//点击文本可以实现下载,执行的代码我放到servlet里了servlet名叫download。
我没用EL语言啊能不能改一下啊?加上这句报错<%@ taglib uri="/jsp/jstl/core" prefix="c" %>/
ArrayList list= (ArrayList)session.getAttribute("listArrayList");
for(int i = (pageNow - 1) * pageSize ; i < ((pageNow * pageSize) > allItem ? allItem : (pageNow * pageSize)) ; i++) {
for(int j=0;j<list.size();j=j+8) {
String title=(String)list.get(j); String author=(String)list.get(j+1); String keywords=(String)list.get(j+2); String kind=(String)list.get(j+3); String url=(String)list.get(j+4); String date=(String)list.get(j+5); String describer=(String)list.get(j+6); String publisher=(String)list.get(j+7); %>
简单看了下你的程序,发现你第一个for循环应该是错了,改了再试试吧
for(int i = (pageNow - 1) * pageSize ; i < ((pageNow * pageSize) > allItem ? allItem : (pageNow * pageSize)) ; i++) 这里最后的i++应该改成i=i+pageSize;
因为看你的程序,你是想跟据页号不同来显示,可是第一页时i=0,第二页时i应该从10开始循环,可是你i++后,i就从1开始了循环 看看这样改对不对
PS:再说说你的程序为什么会出现第6项开始出现重复
你的list中应该有5组记录吧,也就是40项,因为你第一个for循环错误,所以当pageNow=1时,i < ((pageNow * pageSize) > allItem ? allItem :
(pageNow * pageSize))相当于i<5==true,所以执行第2个for循环,输出了前40项,即前5条记录;然后i++,i=1,又把前40项输出了一遍,直到输出5遍位置(tiao里存的应该是几组记录吧),不知道你的页面显示是重复了几遍,如果是5遍的话,应该是这种情况
查询示例
org.hibernate.criterion.Example
类允许你通过一个给定实例构建一个条件查询。 此实例的属性值将做成查询条件。 Java代码
Cat cat = new Cat(); cat.setSex('F');
cat.setColor(Color.BLACK);
List results = session.createCriteria(Cat.class) .add( Example.create(cat)) .list();
Example.create(cat) 表示根据cat这个对象来构造一个查询条件。
上面这条语句将查询sex 为 F 而且Color为BLACK的所有Cat记录。 版本属性、标识符和关联被忽略。默认情况下值为null的属性将被排除。 可以自行调整Example使之更实用。 Java代码
Example example = Example.create(cat) .excludeZeroes() //排除值为0的属性 .excludeProperty("color") //排除 color属性
.ignoreCase() //忽略大小写 .enableLike(); //启用模糊查询
List results = session.createCriteria(Cat.class) .add(example) .list();
甚至可以使用examples在关联对象上放置条件。 Java代码
List results = session.createCriteria(Cat.class) .add( Example.create(cat) ) .createCriteria("mate")
.add( Example.create( cat.getMate() ) ) .list();
正在阅读:
JSP_网上搜集的分页及example搜索相关代码06-03
疾病真正形成的原因03-15
出口代理协议02-10
101条伟大的计算机名言07-06
08年 六年级 清华北大十一分班考试班 第三讲 数论 教师版10-05
情境预防理论在中国的实践与研究07-02
上海市三年级语文阅读理解 1-19练习11-09
土建资料员实习日志01-07
一句关心的话语滋润了我的心田作文800字07-14
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 搜集
- example
- 代码
- 相关
- 搜索
- 网上
- JSP
- 会计差错及帐项调整作业一
- 基于演化博弈的创意产业集群知识共享策略研究
- 2012年天津高考政治题分析13届教学建议
- 抗癌中草药:三尖杉.docx
- 选修3第一章第二节 原子结构与元素的性质3
- 《中国少年先锋队队歌》教学设计
- 新标准大学英语综合教程3答案(全版)
- 维修改造工程.施工组织设计
- 服装材料学考试重点
- 中央电大开放本科会计学专业财务案例研究试题_0607
- 中考诗词鉴赏 - 练习
- 搜集的各种养生常识
- 07.021209.3_The Making of a Nation
- 试论信贷市场中的信息不对称(原创论文)
- 从高考题看化学实验 福建
- 华师大版七年级上期末复习第二章有理数2.1-2.8
- 国内会展营销现状及营销策略分析
- 火灾自动报警系统施工及验收规范
- 第四章合同法律制度1
- 艺术学概论复习题2012-12-02-09-17-03