<%@ page contentType="text/html;charset=gbk" pageEncoding="gbk"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>北京魔乐科技</title>
</head>
<body>
<center>
<%!
int pageCounts= 0;//当前的页数
int pageRows = 4;//每页显示的行数
int curRow = 0;//当前指针所指的行数
int maxRows = 0;//数据库中总的行数
int maxCount = 0;//总的页数
String keyWord=new String();
%>
<form action = "test_demo.jsp" method = "get">
<input type = "text" name = "sear" >
<input type = "submit" value = "查询">
<input type = "reset" value = "重置">
</form>
<%//*****数据库连接
Connection con=null;
PreparedStatement stm=null;
ResultSet rs=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracle","scott","tiger");
stm=con.prepareStatement("select deptno,ename,job,mgr,sal from empo where deptno like ? or ename like ? or job like ? order by deptno,ename",ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
keyWord=request.getParameter("sear");//接受表单参数用来进行模糊查询
if(!(keyWord==null|| "".equals(keyWord))){
stm.setString(1,"%"+keyWord+"%");
stm.setString(2,"%"+keyWord+"%");
stm.setString(3,"%"+keyWord+"%");
}else{
stm.setString(1,"%%");
stm.setString(2,"%%");
stm.setString(3,"%%");
}
rs=stm.executeQuery();
rs.last();//定位到最后一行
maxRows=rs.getRow();//得到查询回来的行数
System.out.println(maxRows);
maxCount=(maxRows%pageRows==0)?(maxRows/pageRows):(maxRows/pageRows+1);//计算最大页数
String page0 = (String)request.getParameter("pageCounts");//返回当前的页数
if(!(page0==null||"".equals(page0))){
pageCounts = Integer.parseInt(page0);
if(pageCounts>maxCount){
pageCounts=1;
}else{
if(pageCounts<1){
pageCounts=maxCount;
}
}
}
else{
pageCounts = 1;
}
%>
<a href = "test_demo.jsp?pageCounts=1&sear=<%=keyWord%>">首页</a>
<a href = "test_demo.jsp?pageCounts=<%=pageCounts-1%>&sear=<%=keyWord%>">上一页</a>
<a href = "test_demo.jsp?pageCounts=<%=pageCounts+1%>&sear=<%=keyWord%>">下一页</a>
<a href = "test_demo.jsp?pageCounts=<%=maxCount%>&sear=<%=keyWord%>">尾页</a>
<%
curRow = (pageCounts-1)*pageRows+1; //计算指针在当前页的第一行
rs.absolute(curRow);//定位第一行
%>
<table border = "1">
<tr>
<td>员工编号</td>
<td>员工姓名</td>
<td>员工职务</td>
<td>员工经理</td>
<td>员工薪水</td>
</tr>
<%
try{
for(int i = 0;i<pageRows;i++){
if(!rs.isAfterLast()){
%> <!-- 如下输出-->
<tr>
<td><%=rs.getInt(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><%=rs.getInt(4)%></td>
<td><%=rs.getFloat(5)%></td>
</tr>
<%
rs.next();}else{
}}}catch(Exception e){
System.out.println(e);
}
%>
<%
rs.close();
stm.close();
con.close();
%>
当前页数<%=pageCounts%>
</center>
</table>
</body>
</html>
当只进入页面时如果直接点击下一页,就会报错,经检查if(!(keyWord==null|| "".equals(keyWord)))条件为真,但是进一步检查,keyWord输出为null 但是又 不等于null即:
System.out.println(keyWord);输出:null
System.out.println(keyWord==null);输出为:falseJSP分页数据库String
<%@ page import="java.sql.*"%>
<html>
<head>
<title>北京魔乐科技</title>
</head>
<body>
<center>
<%!
int pageCounts= 0;//当前的页数
int pageRows = 4;//每页显示的行数
int curRow = 0;//当前指针所指的行数
int maxRows = 0;//数据库中总的行数
int maxCount = 0;//总的页数
String keyWord=new String();
%>
<form action = "test_demo.jsp" method = "get">
<input type = "text" name = "sear" >
<input type = "submit" value = "查询">
<input type = "reset" value = "重置">
</form>
<%//*****数据库连接
Connection con=null;
PreparedStatement stm=null;
ResultSet rs=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracle","scott","tiger");
stm=con.prepareStatement("select deptno,ename,job,mgr,sal from empo where deptno like ? or ename like ? or job like ? order by deptno,ename",ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
keyWord=request.getParameter("sear");//接受表单参数用来进行模糊查询
if(!(keyWord==null|| "".equals(keyWord))){
stm.setString(1,"%"+keyWord+"%");
stm.setString(2,"%"+keyWord+"%");
stm.setString(3,"%"+keyWord+"%");
}else{
stm.setString(1,"%%");
stm.setString(2,"%%");
stm.setString(3,"%%");
}
rs=stm.executeQuery();
rs.last();//定位到最后一行
maxRows=rs.getRow();//得到查询回来的行数
System.out.println(maxRows);
maxCount=(maxRows%pageRows==0)?(maxRows/pageRows):(maxRows/pageRows+1);//计算最大页数
String page0 = (String)request.getParameter("pageCounts");//返回当前的页数
if(!(page0==null||"".equals(page0))){
pageCounts = Integer.parseInt(page0);
if(pageCounts>maxCount){
pageCounts=1;
}else{
if(pageCounts<1){
pageCounts=maxCount;
}
}
}
else{
pageCounts = 1;
}
%>
<a href = "test_demo.jsp?pageCounts=1&sear=<%=keyWord%>">首页</a>
<a href = "test_demo.jsp?pageCounts=<%=pageCounts-1%>&sear=<%=keyWord%>">上一页</a>
<a href = "test_demo.jsp?pageCounts=<%=pageCounts+1%>&sear=<%=keyWord%>">下一页</a>
<a href = "test_demo.jsp?pageCounts=<%=maxCount%>&sear=<%=keyWord%>">尾页</a>
<%
curRow = (pageCounts-1)*pageRows+1; //计算指针在当前页的第一行
rs.absolute(curRow);//定位第一行
%>
<table border = "1">
<tr>
<td>员工编号</td>
<td>员工姓名</td>
<td>员工职务</td>
<td>员工经理</td>
<td>员工薪水</td>
</tr>
<%
try{
for(int i = 0;i<pageRows;i++){
if(!rs.isAfterLast()){
%> <!-- 如下输出-->
<tr>
<td><%=rs.getInt(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><%=rs.getInt(4)%></td>
<td><%=rs.getFloat(5)%></td>
</tr>
<%
rs.next();}else{
}}}catch(Exception e){
System.out.println(e);
}
%>
<%
rs.close();
stm.close();
con.close();
%>
当前页数<%=pageCounts%>
</center>
</table>
</body>
</html>
当只进入页面时如果直接点击下一页,就会报错,经检查if(!(keyWord==null|| "".equals(keyWord)))条件为真,但是进一步检查,keyWord输出为null 但是又 不等于null即:
System.out.println(keyWord);输出:null
System.out.println(keyWord==null);输出为:falseJSP分页数据库String
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货