`

JSP 中分页DEMO 例附数据库

阅读更多
JSP 中页面分页操作 附源码实现 和数据库 可部署在TOMCAT中运行


部分代码 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%> 条留言&nbsp;&nbsp;	&nbsp;&nbsp;&nbsp;&nbsp;
   		<a href="index.jsp?page=1">One</a>&nbsp;&nbsp;&nbsp;
				<a href="index.jsp?page=<%=beforePage %>">Back</a> -
				<%
					for(int i=0;i<(totalMessageCounts/10)+1;i++){
							
					%>
							&nbsp;<a href="index.jsp?page=<%=i+1%>"><%=i+1%></a>.
				<%		
							
					}
				 %>
				-<a href="index.jsp?page=<%=nextPage %>">Next</a>
				&nbsp;&nbsp;&nbsp;<a href="index.jsp?page=<%=last%>">Last</a>	
					<a name="top"></a>
					&nbsp;&nbsp;&nbsp;	&nbsp;&nbsp;&nbsp;<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() %>  
   			&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
   				<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>&nbsp;&nbsp;&nbsp;
				<a href="index.jsp?page=<%=beforePage %>">Back</a> -
				<%
					for(int i=0;i<(totalMessageCounts/10)+1;i++){
				%>
					&nbsp;<a href="index.jsp?page=<%=i+1%>"><%=i+1%></a>.
				<%
					}
				 %>
				-<a href="index.jsp?page=<%=nextPage %>">Next</a>
				&nbsp;&nbsp;&nbsp;<a href="index.jsp?page=<%=last%>">Last</a>	
   		</div>
   		<div id="replyDiv">
   		<a name="write" ></a>&nbsp;&nbsp;&nbsp;	&nbsp;&nbsp;&nbsp;<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">&nbsp;
   								<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);
	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics