JSP 中页面分页操作 附源码实现 和数据库 可部署在TOMCAT中运行
部分代码 index.jsp
MessageBo.java
部分代码 index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK" %>
<%@page import="bo.MessageBO"%>
<%@page import="entity.Message"%>
<html>
<head>
<title>留言板实例</title>
<link rel="stylesheet" type="text/css" href="css/styles.css">
<style type="text/css">
#messDiv{
border:1px solid #227788;
margin-left:150px;
height:150px;
width:670px;
margin-bottom:5px;
display:block;
}
#replyDiv{
margin:10px;
border:1px solid #fffeee;
width:670px;
margin-left:150px;
display:block;
}
#nameDiv{
width:100%;
padding:10px;
background-color: #fffffe;
display:block;
}
#timeDiv{
width:100%;
padding:5px;
background-color: #ccFADD;
text-align: right;
display:block;
}
#pageDiv{
padding:5px;
background-color: #ffaaDD;
text-align: left;
margin-left:150px;
width:670px;
display:block;
}
#noteDiv{
width:100%;
padding:10px;
margin:2px;
word-break:break-all;
height:98px;
background-color:#cfffa3;
display:block;
}
</style>
<script language="javascript">
function checkMess(){
var objName = document.forms[0].name;
var objContent = document.forms[0].content;
if(objName.value==""){
alert("姓名不能为空!");
objName.focus();
return false;
}
if(objContent.value==""){
alert("内容不能为空!");
objContent.focus();
return false;
}
return true;
}
function showorhide(notediv){
var objDiv = document.getElementById(notediv);
if(objDiv.style.display=='block'){
objDiv.style.display='none';
}else{
objDiv.style.display='block';
}
}
</script>
</head>
<body>
<%
MessageBO bo = new MessageBO(); //业务逻辑对象
int totalMessageCounts = bo.getTotalMessageCounts(); //得到总消息条数
int pageno = 1; //假定当前页
//表示的是第一次请求 参数page并不存在
if(request.getParameter("page")!=null){
//不是第一次请求 就一定有 page 参数 即使是自己提交给自己的页面
pageno = Integer.parseInt(request.getParameter("page")); //获得请求的参数 page 的值
}
int nextPage = pageno+1 ; //假定下一页
int beforePage = pageno-1 ;//假定上一页
int last=totalMessageCounts/10+1; //总页数
//如果已经到达最小值
if(beforePage<=0){
beforePage =1;
}
//如果已经到达最大值
if(nextPage>last){
nextPage = last;
}
//得到当前page 参数要求查询出来的页面消息 pageno
ArrayList<Message> list = bo.getMessagesByPage(pageno);
%>
<div id="mainDiv">
<h3 align="center">留言板</h3>
<hr>
<div id="pageDiv">
共有 <%=totalMessageCounts%> 条留言
<a href="index.jsp?page=1">One</a>
<a href="index.jsp?page=<%=beforePage %>">Back</a> -
<%
for(int i=0;i<(totalMessageCounts/10)+1;i++){
%>
<a href="index.jsp?page=<%=i+1%>"><%=i+1%></a>.
<%
}
%>
-<a href="index.jsp?page=<%=nextPage %>">Next</a>
<a href="index.jsp?page=<%=last%>">Last</a>
<a name="top"></a>
<a href="#write">BOTTOM</a>
</div>
<%
//循环输入消息
for(int i=0;i<list.size();i++){
Message message = list.get(i);
%>
<div id="messDiv">
<div id="nameDiv">
<a name="<%= message.getAuthor()%>"></a>
第 <%= (pageno-1)*10+i+1%> 楼 -- <%=message.getAuthor() %>
<a href="javascript:showorhide('noteDiv<%=message.getId()%>')">o(∩_∩)o</a>
<a href="#write" >Write</a>
</div>
<div id="noteDiv<%=message.getId()%>">
<div id="noteDiv">
<%=message.getMessage() %>
</div>
<div id="timeDiv">
发表于-(<%=message.getPostTime() %>) ID: <%=message.getId()%>
</div>
</div>
</div>
<%
}
%>
<div id="pageDiv">
<a href="index.jsp?page=1">One</a>
<a href="index.jsp?page=<%=beforePage %>">Back</a> -
<%
for(int i=0;i<(totalMessageCounts/10)+1;i++){
%>
<a href="index.jsp?page=<%=i+1%>"><%=i+1%></a>.
<%
}
%>
-<a href="index.jsp?page=<%=nextPage %>">Next</a>
<a href="index.jsp?page=<%=last%>">Last</a>
</div>
<div id="replyDiv">
<a name="write" ></a> <a href="#top">GO TO TOP</a>
<form action="dopage.jsp?page=<%=last%>" method="post" onsubmit="return checkMess()">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" class="normalTxt" name="name" ></td>
</tr>
<tr>
<td>内容</td>
<td>
<textarea rows="5" cols="83" name="content" ></textarea>
</td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="submit" value="提 交" class="normalBtn">
<input type="reset" value="重 置" class="normalBtn">
</td>
</tr>
</table>
</form>
</div>
</div>
</body>
</html>
MessageBo.java
package bo;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import dao.MessageDao;
import entity.Message;
/**
* 消息业务逻辑处理对象
* @author Simon Lv
*
*/
public class MessageBO {
//消息数据访问对象
MessageDao dao = new MessageDao();
/**
* 得到含有所有消息实体类集合
* @page 页码
* @return 实体类集合对象
*/
public ArrayList<Message> getMessagesByPage(int page){
//如果页码为负或0
if(page<=0){
page = 0;
}else{//页码乘以条数
page = (page-1)*10;
}
//SQL 查询子语句
String sql ="select top 10 * from tbl_message where id not in (select top "+page+" id from tbl_message)";
return dao.getAllMessages(sql, null);
}
/**
* 得到消息的条数
* @return 消息的总条数
*/
public int getTotalMessageCounts(){
return dao.getAllMessages("select * from tbl_message ", null).size();
}
/**
* 添加一条记录
* @param name 用户姓名
* @param content 文本内容
* @return 是否成功 0 不成功 大于0 成功
*/
public int insertMessage(String name,String content){
String sql = "insert into tbl_message values(?,?,?)";
String param[] =new String[]{content,name,new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())};
return dao.executeSql(sql, param);
}
}