JSP的學習總結到本篇已經八篇了,內容比較多,但都是實戰,本篇最後為大家介紹一個小效果:百度分頁。就是當我們遍歷的資料物件較多時,這時我們就會看到了這個效果了,那他是如何實現的呢?下面我們就一起學習一下。

 1、分頁資料獲取方法:

  獲得資料總數:

public int getSize() {
int num = 0;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
conn = DBO.getConnection();
String sql = "select count(*) from students";
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
rs.next();
num=rs.getInt(1);
} catch (SQLException e) {
e.printStackTrace();
}
return num;
}

  計算一共分幾頁:

public int getPageCnt(int pageRec) {
int page = 0;
int size = this.getSize();
if(size>0){
page = (size-1)/pageRec+1;
}
return page;
}

  獲得在該頁需要顯示的資料:

public List<Student> getSome(int pageNo, int pageRec) {
List<Student> list = new ArrayList<Student>();
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn=DBO.getConnection();
String sql="select * from students limit ";
int num = this.getSize()-pageNo*pageRec;
int a = this.getSize()-(pageNo-1)*pageRec;
if(num<0){
num=0;
}
sql+=(num)+","+ a;
st=conn.createStatement();
rs=st.executeQuery(sql);
while(rs.next()){
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setName(rs.getString("username"));
stu.setSex(rs.getInt("sex"));
stu.setYear(rs.getInt("age"));
stu.setFrom(rs.getString("form"));
stu.setSchool(rs.getString("school"));
list.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBO.close(rs, st, conn);
}
return list;
}

 2、實現頁面效果程式碼:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="error.html"%>
<%@page import="com.mysql.jsp.student.Student"%>
<%@page import="com.mysql.jsp.sever.StudentMaImp"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <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"> </head> <body>
<%
int pageNo=1;
if(request.getParameter("p") !=null){
pageNo=Integer.parseInt(request.getParameter("p"));
}
int pageRec=5;//每頁顯示的資料條數
StudentMaImp smi = new StudentMaImp();
List<Student> list = smi.getSome(pageNo, pageRec);
int recCnt=smi.getSize();//得到總記錄數
int pageCnt=smi.getPageCnt(pageRec);//得到總頁數
%>
<center>
<h1>百度分頁效果</h1>
<hr/>
<table border="1" width="80%">
<TR>
<td>編號</td><TD>ID</TD><td>姓名</td><td>性別</td><td>年齡</td><td>家鄉</td><td>學校</td>
</TR>
<%
if(list.size()!=0 && pageNo>1 ){
for(int i=list.size()-1,j=1; i>=0; i--,j++){
Student student = list.get(i);
%>
<tr><td><%=j %></td><TD><%=student.getId() %></TD><td><%=student.getName() %></td><td><%if(student.getSex()==1){ %>男<%}else{ %>女<%} %></td><td><%=student.getYear() %></td><td><%=student.getFrom() %></td><td><%=student.getSchool() %></td></tr>
<%
}
}else{
for(int i=list.size()-1,j=1; i>=0&&list.size()!=0; i--,j++){
Student student = list.get(i);
%>
<tr><td><%=j %></td><TD><%=student.getId() %></TD><td><%=student.getName() %></td><td><%if(student.getSex()==1){ %>男<%}else{ %>女<%} %></td><td><%=student.getYear() %></td><td><%=student.getFrom() %></td><td><%=student.getSchool() %></td></tr>
<%
}
}
%>
<tr>
<td colspan="7" align="center">
<% if(pageNo!=1){ %>
<a href="All_BaiDu.jsp?p=1"><span>首頁</span></a>
<%} %>
<% if(pageNo>1){ %>
<a href="All_BaiDu.jsp?p=<%=pageNo-1 %>"><span>上一頁</span></a>
<%} %>
<%
for(int i=1;i<=pageCnt;i++){
if(i!=pageNo){
%>
<a href="All_BaiDu.jsp?p=<%=i %>"><span><%=i%></span></a>
<%}else{ %>
<span><%=i%></span></a>
<%}}%>
<% if(pageNo!=pageCnt){ %>
<a href="All_BaiDu.jsp?p=<%=pageNo+1 %>"><span>下一頁</span></a>
<%} %>
<% if(pageNo!=pageCnt){ %>
<a href="All_BaiDu.jsp?p=<%=pageCnt %>"><span>尾頁</span></a>
<%} %>
</td>
</tr>
</table>
</center>
</body>
</html>

  效果圖:

  

  好了,到這裡我們最簡單的百度分頁效果就實現了,具體的美化工作,就需要我們的css+div+javascript知識了,大家可以學習一下,對做網頁幫助很大。


  關於JSP的基礎知識總結,到今天就為大家總結完畢,共計8篇部落格,由於文字描述的侷限,所以大家有什麼疑問可以留言,我會一一為大家解答。

  總結了這麼多,最後給大家聊幾句,學習JSP之前大家儘量先學習一下JAVASE的基礎知識,對你理解JSP中的程式碼幫助很大,當然如果你對網站開發很感興趣,可以學一下HTML之後再來學習JSP,這樣對你瞭解裡面的JSP語句幫助很大。不過有必要說一點的是,JSP開發現在遠沒有PHP開發那麼受關注,PHP開發無須太多的基礎,而JSP開發需要有一定的JAVA基礎。大家如果沒有JAVA基礎,建議大家學習PHP,同樣可以達到動態網站的開發的目的,而且PHP開發對於微信端開發很方便,所以大家如果對於JSP的學習感覺壓力較大,建議大家學習PHP,不過任何一門技術剛剛接觸時,都會存在很多的不懂,重要的是堅持,各種技術之間都是相通,當大家真正掌握一門技術後,再去接觸別的技術,就會達到事半功倍的效果。

  最後祝各位在程式猿這條路上能找到屬於自己的藍天。