java程序片
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<%
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>
</head>
<body>
<form action="list.jsp" method="post"> <!-- post方式來進行跳轉 避免亂碼-->
<center>
姓名的查詢:
<input type="text" name="searchName" />
<input type="submit" value="查詢" />
</center>
<table align="center" border="1">
<tr>
<td>
id
</td>
<td>
name
</td>
<td>
sex
</td>
<td>
age
</td>
<td>
birthday
</td>
<td>
操作
</td>
</tr>
<%
//top
//limit
//對於分頁:
//1.基於SQL語句 通過點擊控件完成參數的改變
//2.通過控件去修改當前頁的編號
//3.獲得跳轉後修改的頁面編號
//1.對於搜索 select * from stu where name like '%他他他%' limit 0,3; 第一條記錄的索引值爲0;
//2.模糊查詢name,查詢帶分頁
//用戶第一次進來 依然顯示所有的數據
//3.保證翻頁後查詢的條件依然存在
//4.在查詢之後 將值保存在session中
//查詢後翻頁每次的條件從session中取得
request.setCharacterEncoding("UTF-8");
String searchName = request.getParameter("searchName");
//判斷第一次進入
System.out.println("searchName:"+searchName);
if (session.getAttribute("searchName") == null&& searchName == null) {
searchName = "";
}
//查詢後找尋的值從session中取得 當點擊下一頁或者上一頁的時候,查詢的語句不能改變的
if (session.getAttribute("searchName") != null
&& searchName == null) {
searchName = session.getAttribute("searchName").toString();
}
int pageNo = 1; //當前頁編號
int pageSize = 3;//每頁顯示的數據
int totalPage = 0;//最大頁數
String str_pageNo = request.getParameter("pageNo");//獲取上一次頁面傳過來的值
//System.out.println("4444444444");
if (str_pageNo == null) { //如果是第一次登錄時,pageNo就沒傳過來,就爲null值
str_pageNo = "1"; //這時顯示就爲第一頁
}
//將修改後的值賦給pageNo
pageNo = Integer.parseInt(str_pageNo);
//1.加載驅動
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/wepull", "root", "aaa");
//獲得預編譯SQL對象 根據當前頁數 和每頁顯示的條數定義分頁起始位置
String sql = "select * from stu limit " + (pageNo - 1) * pageSize
+ "," + pageSize + "";
String countSQL = "select count(*) from stu";
//當用戶有提交查詢內容時 值存入session 並改變SQL語句
if (searchName != null) { //當輸入了查詢的內容時
session.setAttribute("searchName", searchName);//!將放入內容查詢的session中,當session中沒值的時候,用get取的時候爲null值
sql = "select * from stu where name like '%" + searchName
+ "%' limit " + (pageNo - 1) * pageSize + ","
+ pageSize + "";
countSQL = "select count(*) from stu where name like '%"
+ searchName + "%'";//‘’號裏面引用雙引號
}
System.out.println(sql);
System.out.println(countSQL);
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
%>
<tr>
<td><%=rs.getInt("id")%></td>
<td><%=rs.getString("name")%></td>
<td><%=rs.getString("sex")%></td>
<td><%=rs.getString("age")%></td>
<td><%=rs.getString("birthday")%></td>
<td>
<a href="toEdit.jsp?id=<%=rs.getInt("id")%>">編輯</a>
<a href="delete.jsp?id=<%=rs.getInt("id")%>">刪除</a>
</td>
</tr>
<%
}
//獲得最大的條數
ps = conn.prepareStatement(countSQL);
rs = ps.executeQuery();
if (rs.next()) {
int totalCount = rs.getInt(1); //得到總的條數
//判斷整除和非整除
if (totalCount % pageSize == 0) {
totalPage = totalCount / pageSize; //整除的時候
System.out.println(totalPage);
} else {
totalPage = totalCount / pageSize + 1; //當不能整除時,將頁面數+1
}
}
conn.close(); //關閉連接
%>
<tr>
<td colspan="7">
<input type="button" value="添加"
οnclick="window.location.href='toAdd.jsp'" />
<a href="list.jsp">首頁</a>
<%--當是第一頁時,不能點擊上一頁,默認的爲第1頁 --%>
<a href="list.jsp?pageNo=<%=pageNo - 1%>" <%if(pageNo<=1){%>
disabled οnclick="return false;" <%}%>>上一頁</a>
<a href="list.jsp?pageNo=<%=pageNo + 1%>"
<%if(pageNo>=totalPage){%> disabled οnclick="return false;"
<%} %>>下一頁</a>
<a href="list.jsp?pageNo=<%=totalPage%>">尾頁</a>
<!--
1.觸發onchange事件
2.在每次修改時 將option的value值傳到pageNo作爲當前頁的數據
-->
<select
οnchange="window.location.href='list.jsp?pageNo='+this.value">
<!--
噹噹前頁和 i值相等時 給予selected屬性
-->
<%
for (int i = 1; i < totalPage + 1; i++) {
%>
<option <%if(pageNo==i){ %> selected <% }%> value="<%=i%>"><%=i%></option>
<%
}
%>
</select>
</td>
</tr>
</table>
</form>
<%-- d--%>
</body>
</html>