最近遇到了分页的问题,以前说真的没仔细研究过了,这几天仔细高了一下,基本原理高清楚了,首先是我的页面代码如下:
<%@ page language="java" import="java.util.*,java.sql.*"
pageEncoding="gb2312"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
</head>
<body>
<form action="#">
<c:forEach items="${news1}" var="news2" varStatus="status">
<tr><td>${news2.newsTitle}</td>
</tr>
</c:forEach>
<c:if test="${showpage>1}">
<a href="pageservlet?topage=<%=1%>">首页</a>
<a href="pageservlet?topage=${showpage-1}">上一页</a>
</c:if>
<c:if test="${showpage<pagecount}">
<a href="pageservlet?topage=${showpage+1}">下一页</a>
<a href="pageservlet?topage=${pagecount}">最后一页</a>
</c:if>
第${showpage}页
一共${pagecount}页
</form> <br>
</body>
</html>
servlet代码如下:
package org.servlet;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.util.ContactBean;
import org.util.PageBean;
public class PageServlet extends javax.servlet.http.HttpServlet {
public void doGet(HttpServletRequest
request, HttpServletResponse response)
throws javax.servlet.ServletException, java.io.IOException {
response.setContentType("text/html");
try {
PageBean pagebean = new PageBean();
ContactBean contact = new ContactBean();
int pagecount = pagebean.countPage();//获取总共的页数
String topage = request.getParameter("topage");//获取当前的页码
if (Integer.parseInt(topage) > pagecount) { //判断当前的页码是否越界,如果是的话就进行处理
topage =String.valueOf(pagecount);
} else if (Integer.parseInt(topage) <= 0) {
topage = "1";
}
ArrayList news = contact.getData(topage, pagecount);
request.getSession().setAttribute("pagecount", pagecount);
request.getSession().setAttribute("showpage", topage);//将当前的页码返回给页面,这样进行计算
request.getSession().setAttribute("news1", news);
response.sendRedirect("test1.jsp");
} catch (Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws javax.servlet.ServletException, java.io.IOException {
doGet(request, response);
}
}
javabean代码如下
package org.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Vector;
import org.bean.NewsBean;
public class ContactBean {
private Connection conn;
public Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager
.getConnection(
"jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=gbk",
"root", "123456");
} catch (SQLException ex) {
System.out.println(ex.getMessage() + "路径错误");
} catch (ClassNotFoundException ex) {
System.out.println(ex.getMessage() + "驱动错误");
}
return conn;
}
/** *返回要查询的记录数 */
public int getAvailableCount() throws Exception {
int ret = 0;
String strSql = "select count(*) from news";
Connection conn = this.getConnection();
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery(strSql);
while (rset.next()) {
ret = rset.getInt(1);
}
return ret;
}
/*获取查寻的记录数*/
public ArrayList getData(String topage, int pagecount)
throws NumberFormatException, SQLException {
String sql = "select * from news";
Statement state = null;
ResultSet rs = null;
int pagesize = 3;
int showpage = 1;
ArrayList list = new ArrayList();
int j = 0;
try {
Connection conn = this.getConnection();
state = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = state.executeQuery(sql);
} catch (Exception e) {
System.out.println("exception");
}
if (!rs.next()) {
System.out.println("no records!");
} else {
rs.last();
if (topage != null) {
showpage = Integer.parseInt(topage);
if (showpage > pagecount) {
showpage = pagecount;
} else if (showpage <= 0) {
showpage = 1;
}
}
rs.absolute((showpage - 1) * pagesize + 1);
for (int i = 1; i <= pagesize; i++) {
NewsBean news = new NewsBean();
news.setNewsContent(rs.getString(2));
news.setNewsTitle(rs.getString(3));
list.add(j, news);
++j;
if (!rs.next())
break;
}
}
return list;
}
}
package org.util;
public class PageBean {
public int maxPage; // 一共有多少页
public int maxRowCount; // 一共有多少行
public int pagesize = 3; // 每页多少行
public PageBean() {
}
public int countPage() throws Exception {
int maxRowCount=this.MaxCount();
if (maxRowCount % this.pagesize == 0) {
maxPage = maxRowCount / this.pagesize;
} else {
maxPage =maxRowCount/ this.pagesize + 1;
}
return maxPage;
}
public int MaxCount() throws Exception {
ContactBean contact=new ContactBean();
this.maxRowCount = contact.getAvailableCount(); // 得到总行数
return maxRowCount;
}
}
分享到:
相关推荐
jsp+javabean+servlet+ajax,数据分页显示,使用SERVLET完成增删改查操作, 文件、图片上传,使用smartUpload组件完成上传操作。 MVC模式 非常适合初学者;
实现一个简单的MVC例子,适合新手学习
2.新闻搜索:(可以选择分类)以新闻标题模糊搜索,有分页功能 3.热点新闻:按新闻点击率高低显示前10条左右的新闻(显示点击率) 4.最新新闻:显示最新添加的新闻(显示日期) 5.公告栏:显示公告信息 6.登录:...
jsp+javabean+servlet使用简单的MVC模式实现登录注册、留言板、分页的功能。model(javabean)层实现读写数据库,数据库名为webapp,没有密码;view(JSP)实现展示信息;controller(servlet)层联系model和view,...
基于Jsp+JavaBean+Servlet实现MVC模式的分页模板 分页没有css,但分页功能齐全 对初学者应该有帮助 分三层编写dao层 service层 web层 数据库可以用ms server2005 或者 mysql5.0 脚本为ms2005.sql 、mysql.sql 切换...
完整的留言板系统,含初始化数据库脚本,完整分页,注册,登录,权限,DAO封装等实现,十分适合正在学习者参考
完整的 JSP+SERVLET+MYSQL实现的增删改查javaweb小例子
Jave EE 基础入门注释版--JSP+JavaBean+Servlet(MVC)模式 适合初学者,实现基本的增添改查(包括分页)注释明确 内含数据库脚本
基于servlet+jdbc的分页显示技术,对初学jsp或servlet者很有用。代码条理清晰,结构分层清晰。
1、该项目采用jsp+servlet+javabean的mvc模式 2、这个项目是比较简单的javaweb小项目,包含登录、注册和注销功能,以及增删查改,不过在里面增加了分页的优化以及模糊查询,这两部分是这个项目的难点。
前台页面有些粗糙,没有分页功能。主要体验mvc设计模式及流程。
一个关于 jsp+servlet+javaBean ,采用mvc model2的模式开发 并且带分页。
所以这个修改一下交一般的Web jsp的设计没问题的,里面唯一不足的就是显示分页那一板块,有一个DAO文件,里面弄得差不多了,差一个Servlet调用就行了,其他的都很简单,但是MVC弄得很好的。 因为是便于交作业的参考...
mvc版留言本,采用jsp+javabean+servlet编写,即model2版 eclipse项目,可以直接导入,数据库类型mysql,支持分页,ajax验证码.代码内有详细注解,一看就明白,本人一直坚持简单易懂原则,帮助更多的初学者更快的掌握j2ee技术...
这是我的一个练习,可以说逻辑处理跟显示已实现分离,虽然还有不少缺陷,对于初学者来说,这些代码还是有不少可学习的地方,关于分页的问题,暂时没做了,以后再补上吧
jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等 ssh 开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 Spring...
这是用JSP做的实验室申报系统,使用JSP+Servlet+JavaBean实现MVC,包括分页功能,还有很多功能就不细举例子了! 这个文件需要在JBuilder2006中运行!
纯JSP版的简单入门留言本,不涉及自己编写的JAVA类....是JSP初学者的入门好程序,本人近期内还将推出model1(jsp+javabean)版以及mvc(jsp+javabean+servlet)版,多谢支持!本人QQ:503108946,欢迎探讨技术问题!
设计模式:MVC(jsp+servlet+javabean) 项目架构:B/S架构 主要技术:mvc 、java、jsp、bootstrap、html5、css、js、jquery等技术 运行环境:win7/win10/jdk1.8 运行工具:eclipse/Myeclipse,eclipse最兼容 数 据...