分页查询信息eclipse+jdbc+mysql.docx
《分页查询信息eclipse+jdbc+mysql.docx》由会员分享,可在线阅读,更多相关《分页查询信息eclipse+jdbc+mysql.docx(13页珍藏版)》请在冰点文库上搜索。
分页查询信息eclipse+jdbc+mysql
分页查询信息eclipse+jdbc+mysql
分页查询信息
使用jdbc连接mysql数据库实现分页查询任务
通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上。
本项目时一个简单的运用eclipse+jdbc+mysql的小程序。
连接的数据库名称为db_database11,属性如下:
1.创建名为com.pmf.bean的包,包中是名为Product的类,用于封装商品信息。
全部代码如下:
packagecom.pmf.bean;
/**
*商品
*
*/
publicclassProduct{
publicstaticfinalintPAGE_SIZE=2;
//编号
privateintid;
//名称
privateStringname;
//价格
privatedoubleprice;
//数量
privateintnum;
//单位
privateStringunit;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
*/
publicConnectiongetConnection(){
//数据库连接
Connectionconn=null;
try{
//加载数据库驱动,注册到驱动管理器
Class.forName("com.mysql.jdbc.Driver");
//数据库连接字符串
Stringurl="jdbc:
mysql:
//localhost:
3306/db_database11";
//数据库用户名
Stringusername="root";
//数据库密码
Stringpassword="123123";
//创建Connection连接
conn=DriverManager.getConnection(url,username,password);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}
//返回数据库连接
returnconn;
}
/**
*分页查询所有商品信息
*@parampage页数
*@returnList
*/
publicListfind(intpage){
//创建List
Listlist=newArrayList();
//获取数据库连接
Connectionconn=getConnection();
//分页查询的SQL语句
Stringsql="select*fromtb_productorderbyiddesclimit?
?
";
try{
//获取PreparedStatement
PreparedStatementps=conn.prepareStatement(sql);
//对SQL语句中的第1个参数赋值
ps.setInt(1,(page-1)*Product.PAGE_SIZE);
//对SQL语句中的第2个参数赋值
ps.setInt(2,Product.PAGE_SIZE);
//执行查询操作
ResultSetrs=ps.executeQuery();
//光标向后移动,并判断是否有效
while(rs.next()){
//实例化Product
Productp=newProduct();
//对id属性赋值
p.setId(rs.getInt("id"));
//对name属性赋值
p.setName(rs.getString("name"));
//对num属性赋值
p.setNum(rs.getInt("num"));
//对price属性赋值
p.setPrice(rs.getDouble("price"));
//对unit属性赋值
p.setUnit(rs.getString("unit"));
//将Product添加到List集合中
list.add(p);
}
//关闭ResultSet
rs.close();
//关闭PreparedStatement
ps.close();
//关闭Connection
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
returnlist;
}
/**
*查询总记录数
*@return总记录数
*/
publicintfindCount(){
//总记录数
intcount=0;
//获取数据库连接
Connectionconn=getConnection();
//查询总记录数SQL语句
Stringsql="selectcount(*)fromtb_product";
try{
//创建Statement
Statementstmt=conn.createStatement();
//查询并获取ResultSet
ResultSetrs=stmt.executeQuery(sql);
//光标向后移动,并判断是否有效
if(rs.next()){
//对总记录数赋值
count=rs.getInt
(1);
}
//关闭ResultSet
rs.close();
//关闭Connection
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
//返回总记录数
returncount;
}
}
2.创建一个名为“FindServlet”的类位于com.pmf.servlet中。
此类是分页查询商品信息的Servlet对象。
在该类中写doGet()方法处理分页请求。
代码如下:
packagecom.pmf.servlet;
importjava.io.IOException;
importjava.util.List;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.pmf.bean.Product;
importcom.pmf.bean.BookDao;
/**
*ServletimplementationclassFindServlet
*/
publicclassFindServletextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//当前页码
intcurrPage=1;
//判断传递页码是否有效
if(request.getParameter("page")!
=null){
//对当前页码赋值
currPage=Integer.parseInt(request.getParameter("page"));
}
//实例化ProductDao
BookDaodao=newBookDao();
//查询所有商品信息
Listlist=dao.find(currPage);
//将list放置到request之中
request.setAttribute("list",list);
//总页数
intpages;
//查询总记录数
intcount=dao.findCount();
//计算总页数
if(count%Product.PAGE_SIZE==0){
//对总页数赋值
pages=count/Product.PAGE_SIZE;
}else{
//对总页数赋值
pages=count/Product.PAGE_SIZE+1;
}
//实例化StringBuffer
StringBuffersb=newStringBuffer();
//通过循环构建分页条
for(inti=1;i<=pages;i++){
//判断是否为当前页
if(i==currPage){
//构建分页条
sb.append("『"+i+"』");
}else{
//构建分页条
sb.append("page="+i+"'>"+i+"");
}
//构建分页条
sb.append(" ");
}
//将分页条的字符串放置到request之中
request.setAttribute("bar",sb.toString());
//转发到product_list.jsp页面
request.getRequestDispatcher("product_list.jsp").forward(request,response);
}
}
3.创建product_list.jsp页面,此页面通过获取查询结果List与分页条来分页显示商品的数据。
代码如下:
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
<%@pageimport="java.util.List"%>
<%@pageimport="com.pmf.bean.Product"%>
所有商品信息
td{font-size:
12px;}
h2{margin:
0px}
所有商品信息
ID | 商品名称 | 价格 | 数量 | 单位 | <%
Listlist=(List)request.getAttribute("list");
for(Productp:
list){
%>
<%=p.getId()%> | <%=p.getName()%> | <%=p.getPrice()%> | <%=p.getNum()%> | <%=p.getUnit()%> | <%
}
%>
<%=request.getAttribute("bar")%>
|
4.编写程序中的主页index.jsp,在其中编写分页查询商品信息的超链接指向FindServlet.
代码如下:
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
Inserttitlehere查看所有商品信息