?? 第8章(2).txt
字號(hào):
瀏覽書目頁(yè)面所用的beans
PageNumber.java:
public class PageNumber
{ int rowCount=1, //總的記錄數(shù)。
pageSize=1, //每頁(yè)顯示的記錄數(shù)。
showPage=1, //設(shè)置欲顯示的頁(yè)碼數(shù)。
pageCount=1; //分頁(yè)之后的總頁(yè)數(shù)。
public void setRowCount(int n)
{ rowCount=n;
}
public int getRowCount()
{ return rowCount;
}
public void setPageCount(int r,int p)
{ rowCount=r;
pageSize=p;
int n=(rowCount%pageSize)==0?(rowCount/pageSize):(rowCount/pageSize+1) ;
pageCount=n;
}
public int getPageCount()
{return pageCount;
}
public void setShowPage(int n)
{showPage=n;
}
public int getShowPage()
{ return showPage;
}
public void setPageSize(int n)
{ pageSize=n;
}
public int getPageSize()
{ return pageSize;
}
}
瀏覽書目頁(yè)面(效果如圖8.13所示)
showBookList.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="Login" %>
<%@ page import="PageNumber" %>
<%@ page import="java.io.*" %>
<jsp:useBean id="handlePage" class="PageNumber" scope="session" >
</jsp:useBean>
<jsp:useBean id="login" class="Login" scope="session" >
</jsp:useBean>
<% //如果客戶直接進(jìn)入該頁(yè)面將被轉(zhuǎn)向登錄頁(yè)面。
if(session.isNew())
{response.sendRedirect("userLogin.jsp");
}
//如果沒有成功登錄將被轉(zhuǎn)向登錄頁(yè)面
String success=login.getSuccess();
if(success==null)
{success="";
}
if(!(success.equals("ok")))
{response.sendRedirect("userLogin.jsp");
}
%>
<HTML>
<BODY ><Font size=1>
<%@ include file="head.txt" %>
<P> 圖書目錄:
<%! //聲明一個(gè)共享的連接對(duì)象:
Connection con=null;
//顯示數(shù)據(jù)庫(kù)記錄的方法:
public void showList(ResultSet rs,javax.servlet.jsp.JspWriter out,int n,String buybook)
{try
{
out.print("<Table Border>");
out.print("<TR>");
out.print("<TH width=50>"+"<Font size=1>"+"id"+"</FONT>");
out.print("<TH width=50>"+"<Font size=1>"+"訂購(gòu)號(hào)"+"</FONT>");
out.print("<TH width=70>"+"<Font size=1>"+"書名"+"</FONT>");
out.print("<TH width=60>"+"<Font size=1>"+"作者"+"</FONT>");
out.print("<TH width=60>"+"<Font size=1>"+"出版社"+"</FONT>");
out.print("<TH width=50>"+"<Font size=1>"+"出版時(shí)間"+"</FONT>");
out.print("<TH width=20>"+"<Font size=1>"+"價(jià)錢"+"</FONT>");
out.print("<TH width=50>"+"<Font size=1>"+"分類"+"</FONT>");
out.print("<TH width=50>"+"<Font size=1>"+"添加到訂單"+"</FONT>");
out.print("</TR>");
for(int i=1;i<=n;i++)
{ out.print("<TR>");
String id=rs.getString(1);//圖書id號(hào)。
out.print("<TD >"+id+"</TD>");
out.print("<TD >"+rs.getString(2)+"</TD>");
out.print("<TD >"+rs.getString(3)+"</TD>");
out.print("<TD >"+rs.getString(4)+"</TD>");
out.print("<TD >"+rs.getString(5)+"</TD>");
out.print("<TD >"+rs.getDate(6)+"</TD>");
out.print("<TD >"+rs.getString(7)+"</TD>");
out.print("<TD >"+rs.getString(8)+"</TD>");
//在本書的的后面顯示一個(gè)表單,該表單將內(nèi)容提交到buybook.jsp,
//將id號(hào)提交給buybook.jsp,以便訂購(gòu)該書:
String s1="<Form action="+buybook+" method=get>";
String s2="<input type=hidden name=id value="+id+">";
String s3="<input type=submit value=訂購(gòu)></FORM> ";
String s=s1+s2+s3;
out.print("<TD >"+s+"</TD>");
out.print("</TR>") ;
rs.next();
}
out.print("</Table>");
}
catch(Exception e1) {}
}
%>
<% Statement sql=null;
ResultSet rs=null;
int rowCount=0; //總的記錄數(shù)。
//第一個(gè)客戶負(fù)責(zé)建立連接對(duì)象:
if(con==null)
{ try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{out.print(e);
}
try
{con=DriverManager.getConnection("jdbc:odbc:shop","","");
sql=
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=sql.executeQuery("SELECT * FROM book");//返回可滾動(dòng)的結(jié)果集。
rs.last();//將游標(biāo)移動(dòng)到最后一行。
int number=rs.getRow();//獲取最后一行的行號(hào)。
rowCount=number; //獲取記錄數(shù)。
handlePage.setPageSize(3); //設(shè)置每頁(yè)顯示的記錄數(shù)。
handlePage.setPageCount(rowCount,handlePage.getPageSize());//計(jì)算總頁(yè)數(shù)。
out.print("共有"+handlePage.getPageCount()+"頁(yè),");
out.print("每頁(yè)顯示"+ handlePage.getPageSize()+"條記錄");
}
catch(SQLException e)
{out.print(e);
}
}
//其它客戶通過同步塊使用這個(gè)連接:
else
{ synchronized(con)
{ try { sql=
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=sql.executeQuery("SELECT * FROM book"); //返回可滾動(dòng)的結(jié)果集。
rs.last(); //將游標(biāo)移動(dòng)到最后一行。
int number=rs.getRow();//獲取最后一行的行號(hào)。
rowCount=number; //獲取記錄數(shù)。
handlePage.setPageSize(3); //設(shè)置每頁(yè)顯示的記錄數(shù)。
handlePage.setPageCount(rowCount,handlePage.getPageSize());//計(jì)算總頁(yè)數(shù)。
out.print("共有"+handlePage.getPageCount()+"頁(yè),");
out.print("每頁(yè)顯示"+ handlePage.getPageSize()+"條記錄");
}
catch(SQLException e)
{out.print(e);
}
}
}
%>
<%--選擇顯示某頁(yè)的表單 --%>
<%String str=response.encodeURL("showBookList.jsp");
String buybook=response.encodeURL("buybook.jsp");
%>
<Form action="<%=str%>" method="post" >
顯示下一頁(yè):<Input Type="hidden" name="a" value="next">
<Input type=submit value="next">
</FORM>
<Form action="<%=str%>" method="post" >
顯示上一頁(yè):<Input Type="hidden" name="a" value="previous">
<Input type="submit" value="previous">
</FORM>
<Form action="<%=str%>" method="post" >
輸入欲要顯示的頁(yè)<Input type="text" name="a" value="1">
<Input type="submit" value="submit">
</FORM>
<% //獲取表單提交的信息:
String s=request.getParameter("a");
if(s==null)
{s="1";
}
if(s.equals("next"))
{ int n=handlePage.getShowPage(); //獲取目前的頁(yè)數(shù)。
n=(n+1); //將頁(yè)數(shù)增1。
if(n>handlePage.getPageCount())
{ n=1;
}
handlePage.setShowPage(n); //顯示該頁(yè)。
out.print("目前顯示第"+handlePage.getShowPage()+"頁(yè)");
//將游標(biāo)移到:
rs.absolute((n-1)*handlePage.getPageSize()+1);
showList(rs,out,handlePage.getPageSize(),buybook); //顯示第該頁(yè)的內(nèi)容。
}
else if(s.equals("previous"))
{ int n=handlePage.getShowPage(); //獲取目前的頁(yè)數(shù)。
n=(n-1); //將頁(yè)數(shù)減1。
if(n<=0)
{ n=handlePage.getPageCount();
}
handlePage.setShowPage(n); //顯示該頁(yè)。
out.print("目前顯示第"+handlePage.getShowPage()+"頁(yè)");
rs.absolute((n-1)*handlePage.getPageSize()+1); //移動(dòng)游標(biāo)。
showList(rs,out,handlePage.getPageSize(),buybook); //顯示第該頁(yè)的內(nèi)容。
}
else
{ int m=Integer.parseInt(s);
handlePage.setShowPage(m);
out.print("目前顯示第"+handlePage.getShowPage()+"頁(yè)");
int n=handlePage.getShowPage();
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -