模板:分页JSP(结合Servlet)
DAO类(后续无需改变)
package dao; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import bean.Category;
import util.DBUtil; public class CategoryDAO {
public int getTotal(){
String sql="select count(*) from category";
int total=0;
try(Connection c=DBUtil.getConnection();
Statement s=c.createStatement();) {
ResultSet rs=s.executeQuery(sql);
while(rs.next()){
total=rs.getInt(1);
}
} catch (Exception e) {
// TODO: handle exception
}
return total;
} public List<Category> list(int start,int count){
List<Category> categories=new ArrayList<Category>();
String sql="select * from category order by id limit ?,?";
try (Connection c=DBUtil.getConnection();
PreparedStatement ps=c.prepareStatement(sql);){
ps.setInt(1, start);
ps.setInt(2, count);
ResultSet rs=ps.executeQuery();
while(rs.next()){
Category category=new Category();
category.setId(rs.getInt(1));
category.setName(rs.getString(2));
categories.add(category);
}
} catch (Exception e) {
// TODO: handle exception
}
return categories;
}
}
效果一:列表全显示

Servlet类
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import bean.Category;
import dao.CategoryDAO; public class CategoryListServlet extends HttpServlet{
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException{
List<Category>categories=new CategoryDAO().list(0,Short.MAX_VALUE【可变】);
request.setAttribute("categories【可变】", categories);
request.getRequestDispatcher("/admin/category/categoryList.jsp【可变】").forward(request, response);
}
}
JSP代码
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>【下面td内容可变】
<tr class="success">
<td>ID</td>
<td>图片</td>
<td>分类名称</td>
<td>编辑</td>
<td>删除</td>
</tr>
</thead>
<tbody>
<c:forEach items="${categories【可变,取决前面servlet】}" var="categorie【可变】">
<tr>
<td>${categorie.id【可变】}</td>
<td><img height="40px" src="img/category/${categorie.id【可变】}.jpg"></td>
<td>${categorie.name【可变】}</td>
<td><a href="categoryEdit?id=${categorie.id【可变】}"><span class="glyphicon glyphicon-edit"></span></a></td>
<td><a href="categoryDelete?id=${categorie.id【可变】}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr>
</c:forEach>
</tbody>
</table>
效果二:只显示前5条数据

Servlet类
public class CategoryListServlet extends HttpServlet{
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException{
int start=0;//【可变】
int count=5;//【可变】
List<Category>categories=new CategoryDAO().list(start,count);
request.setAttribute("categories【可变】", categories);
request.getRequestDispatcher("/admin/category/categoryList.jsp").forward(request, response);
}
}
JSP代码
//和上一个效果图的JSP代码一样
效果三:可显示首页和末页

Servlet类
public class CategoryListServlet extends HttpServlet{
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException{
int start=0;//起始页的start值
int count=5;//【可变】
try {//如果请求中不带参数start,必须要进行try块的错误处理
start=Integer.parseInt(request.getParameter("start"));
} catch (NumberFormatException e) {
// TODO: handle exception
}
int total=new CategoryDAO().getTotal();//总数
int last=0;//末页的start值
if(0==total%count)
last=total - count;
else
last=total - total % count;
List<Category>categories=new CategoryDAO().list(start,count);//【可变】
request.setAttribute("last", last);//把last传递给jsp
request.setAttribute("categories【可变】", categories);//把categories传递给jsp
request.getRequestDispatcher("/admin/category/categoryList.jsp【可变】").forward(request, response);
}
}
JSP代码
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>【可变】
<tr class="success">
<td>ID</td>
<td>图片</td>
<td>分类名称</td>
<td>编辑</td>
<td>删除</td>
</tr>
</thead>
<tbody>
<c:forEach items="${categories【可变】}" var="categorie【可变】">
<tr>
<td>${categorie.id【可变】}</td>
<td><img height="40px" src="img/category/${categorie.id【可变】}.jpg"></td>
<td>${categorie.name【可变】}</td>
<td><a href="【可变】categoryEdit?id=${categorie.id【可变】}"><span class="glyphicon glyphicon-edit"></span></a></td>
<td><a href="【可变】categoryDelete?id=${categorie.id【可变】}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr>
</c:forEach>
</tbody>
<tfoot>
<tr>
<td colspan="6" align="center">
<!-- 点击超链接时,相当于提交了一个带有参数start的请求 -->
<a href="categoryList【可变】?start=0">[首页]</a>
<a href="categoryList【可变】?start=${last}">[末页]</a>
</td>
</tr>
</tfoot>
</table>
效果四:可显示首页和末页、下一页和上一页

Servlet类
public class CategoryListServlet extends HttpServlet{
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException{
int start=0;//起始页的start值
int count=5;//【可变】
try {//如果请求中不带参数start,必须要进行try块的错误处理
start=Integer.parseInt(request.getParameter("start"));
} catch (NumberFormatException e) {
// TODO: handle exception
}
int total=new CategoryDAO().getTotal();//总数
int last=0;//末页的start值
if(0==total%count)
last=total - count;
else
last=total - total % count;
int pre=start-count;//上一页的start值
pre=pre>0?pre:0;//边界处理
int next=start+count;//下一页的start值
next=next<last?next:last;//边界处理
List<Category>categories=new CategoryDAO().list(start,count);//【可变】
request.setAttribute("pre", pre);//把last传递给jsp
request.setAttribute("next", next);//把last传递给jsp
request.setAttribute("last", last);//把last传递给jsp
request.setAttribute("categories【可变】", categories);//把categories传递给jsp
request.getRequestDispatcher("/admin/category/categoryList.jsp【可变】").forward(request, response);
}
}
JSP代码
<table class="table table-striped table-bordered table-hover table-condensed【可变】">
<thead>
<tr class="success【可变】">
<td>ID</td>
<td>图片</td>
<td>分类名称</td>
<td>编辑</td>
<td>删除</td>
</tr>
</thead>
<tbody>
<c:forEach items="${categories【可变】}" var="categorie【可变】">
<tr>
<td>${categorie.id【可变】}</td>
<td><img height="40px" src=【可变】"img/category/${categorie.id}.jpg"></td>
<td>${categorie.name【可变】}</td>
<td><a href=【可变】"categoryEdit?id=${categorie.id}"><span class="glyphicon glyphicon-edit"【可变】></span></a></td>
<td><a href=【可变】"categoryDelete?id=${categorie.id}"><span class="glyphicon glyphicon-remove"【可变】></span></a></td>
</tr>
</c:forEach>
</tbody>
<tfoot>
<tr>
<td colspan="6" align="center">
<!-- 点击超链接时,相当于提交了一个带有参数start的请求 -->
<a href="categoryList?start=0">[首页]</a>
<a href="categoryList?start=${pre}">[上一页]</a>
<a href="categoryList?start=${next}">[下一页]</a>
<a href="categoryList?start=${last}">[末页]</a>
</td>
</tr>
</tfoot>
</table>
效果五:可显示有序页

Servlet类
public class CategoryListServlet extends HttpServlet{
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException{
int start=0;//起始页的start值
int count=5;//【可变】
try {//如果请求中不带参数start,必须要进行try块的错误处理
start=Integer.parseInt(request.getParameter("start"));
} catch (NumberFormatException e) {
// TODO: handle exception
}
int total=new CategoryDAO().getTotal();//总数
int last=0;//末页的start值
if(0==total%count)
last=total - count;
else
last=total - total % count;
int page=0;
if(0==total%count)
page=total % count;
else
page=total % count+1;
List<Category>categories=new CategoryDAO().list(start,count);//【可变】
request.setAttribute("last", last);//把count传递给jsp
request.setAttribute("page", page);//把page传递给jsp
request.setAttribute("count", count);//把count传递给jsp
request.setAttribute("categories【可变】", categories);//把categories传递给jsp
request.getRequestDispatcher("/admin/category/categoryList.jsp【可变】").forward(request, response);
}
}
JSP代码
<table class=【可变】"table table-striped table-bordered table-hover table-condensed">
<thead>【可变】
<tr class=【可变】"success">
<td>ID</td>
<td>图片</td>
<td>分类名称</td>
<td>编辑</td>
<td>删除</td>
</tr>
</thead>
<tbody>
<c:forEach items="${categories【可变】}" var="categorie【可变】">
<tr>
<td>${categorie.id【可变】}</td>
<td><img height="40px" src=【可变】"img/category/${categorie.id}.jpg"></td>
<td>${categorie.name【可变】}</td>
<td><a href=【可变】"categoryEdit?id=${categorie.id}"><span class="glyphicon glyphicon-edit"></span></a></td>
<td><a href=【可变】"categoryDelete?id=${categorie.id}"><span class="glyphicon glyphicon-remove"></span></a></td>
</tr>
</c:forEach>
</tbody>
<tfoot>
<tr>
<td colspan="6" align="center">
<!-- 点击超链接时,相当于提交了一个带有参数start的请求 -->
<a href=【可变】"categoryList?start=0">[1]</a>
<c:forEach var="i" begin="2" end="${page-2}">
<a href=【可变】"categoryList?start=${(i-1)*count}">[${i}]</a>
</c:forEach>
<a href=【可变】"categoryList?start=${last}">[${page-1}]</a>
</td>
</tr>
</tfoot>
</table>
效果五:可显示首页、上一页、中间页、下一页、末页

Servlet类
public class CategoryListServlet extends HttpServlet{
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException{
int start=0;//起始页开始值
int count=5;//【可变】
try {//如果请求中不带参数start,必须要进行try块的错误处理
start=Integer.parseInt(request.getParameter("start"));
} catch (NumberFormatException e) {
// TODO: handle exception
}
int total=new CategoryDAO().getTotal();//总数
int last=0;//末页开始值
if(0==total%count)
last=total - count;
else
last=total - total % count;
int pre=start-count;//上一页开始值
pre=pre>0?pre:0;//边界处理
int next=start+count;//下一页开始值
next=next<last?next:last;//边界处理
int page=0;//总页数
if(0==total%count)
page=total % count;
else
page=total % count+1;
List<Category>categories=new CategoryDAO().list(start,count);//【可变】
request.setAttribute("pre", pre);//把pre传递给jsp
request.setAttribute("next", next);//把next传递给jsp
request.setAttribute("last", last);//把last传递给jsp
request.setAttribute("page", page);//把page传递给jsp
request.setAttribute("count", count);//把count传递给jsp
request.setAttribute("categories【可变】", categories【可变】);//把categories传递给jsp
request.getRequestDispatcher("/admin/category/categoryList.jsp"【可变】).forward(request, response);
}
}
JSP代码
<tfoot>
<tr>
<td colspan="6" align="center">
<!-- 点击超链接时,相当于提交了一个带有参数start的请求 -->
<a href=【可变】"categoryList?start=0">[首页]</a>
<a href="categoryList?start=${pre}">[上一页]</a>
<!-- 中间页 -->
<a href=【可变】"categoryList?start=0">[1]</a>
<c:forEach var="i" begin="2" end="${page-2}">
<a href=【可变】"categoryList?start=${(i-1)*count}">[${i}]</a>
</c:forEach>
<a href=【可变】"categoryList?start=${last}">[${page-1}]</a>
<!-- 中间页 -->
<a href=【可变】"categoryList?start=${next}">[下一页]</a>
<a href=【可变】"categoryList?start=${last}">[末页]</a>
</td>
</tr>
</tfoot>
模板:分页JSP(结合Servlet)的更多相关文章
- 修改 MyEclipse 中的 jsp 和 servlet 模板
找到 MyEclipse/Common/plugins/com.genuitec.eclipse.wizards_9.0.0.me201211011550.jar 这个文件(wizards后面的数字 ...
- jsp学习--如何定位错误和JSP和Servlet的比较
一.如何查找JSP页面中的错误 JSP页面中的JSP语法格式有问题,导致其不能被翻译成Servlet源文件,JSP引擎将提示这类错误发生在JSP页面中的位置(行和列)以及相关信息.JSP页面中的JS ...
- Jsp与servlet之间页面跳转及参数传递实例(转)
原网址:http://blog.csdn.net/ssy_shandong/article/details/9328985 11. jsp与servlet之间页面跳转及参数传递实例 分类: Java ...
- 图解JSP与Servlet的关系
Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容.Servlet是平台独立的Java类,编写一个Servlet, ...
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...
- 快速分页:jsp标签pager-taglib
一:简介 Pager-taglib,支持多种风格的分页显示.实际上它是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组 合,会形成多种不一样的分页页面,风格各异.它既 ...
- JSP(Java Servlet Page)
一.简介 HTML HTML擅长显示一个静态的网页,但是不能调用Java程序. Servlet Servlet擅长调用Java程序和后台进行交互,但是它不擅长显示一个完整的HTML页面. 我们希望创建 ...
- 【转】(超详细)jsp与servlet之间页面跳转及参数传递实例
初步学习JavaEE,对其中jsp与Servlet之间的传值没弄清楚,查看网上资料,发现一篇超详细的文章,收获大大,特此记录下来.具体链接:http://blog.csdn.net/ssy_shand ...
- JSP和Servlet的中文乱码处理
JSP和Servlet的中文乱码处理 前几天学习了JSP和Servlet中有关中文乱码的一些问题,写成了博客,今天进行更新一下.应该是可以解决日常的乱码问题了.现在作以下总结希望对需要的人有所帮助.我 ...
- 一、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)
背景: 目前业界很流行的MVC(model-view-control)开发模式,理解为 模型是Bean, 视图是 Html/Jsp, 控制是Servlet, 关联数据库的Dao web的运行机制: 数 ...
随机推荐
- memcached 原子性操作 CAS模式
2019独角兽企业重金招聘Python工程师标准>>> 应用场景分析: 如原来MEMCACHED中的KES的内容为A,客户端C1和客户端C2都把A取了出来,C1往准备往其中加B,C2 ...
- Vue.js中scoped引发的CSS作用域探讨
前言 在Vue.js的组件化开发中,常常会对某个组件的style标签加上scoped属性,如<style lang='less' scoped>,这样做的目的在于使这个组件的样式不能轻易在 ...
- Lucene的FuzzyQuery中用到的Levenshtein Distance(LD)算法
2019独角兽企业重金招聘Python工程师标准>>> Lucene的FuzzyQuery中用到的Levenshtein Distance(LD)算法 博客分类: java 搜索引擎 ...
- ISA Introduction
介绍一下X86.MIPS.ARM三种指令集: 1. X86指令集 X86指令集是典型的CISC(Complex Instruction Set Computer)指令集. X86指令集外部看起来是CI ...
- 疯子的算法总结14--ST算法(区间最值)
借助倍增和动态规划可以实现O(1)的时间复杂度的查询 预处理: ①区间DP 转移方程 f[i][j] = min(MAX同理)(f[i][j - 1],f[i + ][j - 1]) f[i] ...
- python(open 文件)
一.open 文件 1.open('file','mode')打开一个文件 file 要打开的文件名,需加路径(除非是在当前目录) mode 文件打开的模式 需要手动关闭 close 2.with o ...
- FileStream提示文件正在由另一进程使用的解决方法
文件正在由另一进程使用…… FileStream fs = new FileStream(strFilePath, FileMode.Open,FileAccess.Read,FileShare.Re ...
- Naigos install pnp4nagios 绘图插件
原文地址:http://www.cnblogs.com/caoguo/p/5022230.html vim /etc/httpd/conf/httpd.conf <Directory " ...
- Spring MVC的Controller接受请求方式以及编写请求处理方法
Controller接受请求参数的常见方法: 1.通过Bean接受请求参数: 创建POJO实体类 创建pojo包,并在该包中创建实体类UserForm,代码: package pojo; public ...
- P1191 矩形
------------恢复内容开始------------ 题意 给出一个\(n*n\)的矩阵,矩阵中,有些格子被染成白色,有些格子被染成黑色,现要求矩阵中白色矩形的数量 分割线 Ⅰ.暴力出奇迹!! ...