模板:分页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的运行机制: 数 ...
随机推荐
- 使用@vue/cli搭建vue项目开发环境
当前系统版本 mac OS 10.14.2 1.安装node.js开发环境 前端开发框架和环境都是需要 Node.js vue的运行是要依赖于node的npm的管理工具来实现 <mac OS ...
- CF思维联系– CodeForces - 991C Candies(二分)
ACM思维题训练集合 After passing a test, Vasya got himself a box of n candies. He decided to eat an equal am ...
- CF思维联系– Codeforces-989C C. A Mist of Florescence
ACM思维题训练集合 C. A Mist of Florescence time limit per test 1 second memory limit per test 256 megabytes ...
- session与cookie的浅谈
cookie的用途: 当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接.这是因为你浏览某个网页的时候,WEB 服务 ...
- 蓝色展开收缩悬浮QQ客服代码
放在我的博客首页上的的预览图: 在文章区的预览图如下: 代码如下: <div class="scrollsidebar" id="scrollsidebar&quo ...
- Android 10 获取已连接上的蓝牙设备的当前电量
前言 最近的项目中有获取连接蓝牙设备电量的需求,查找了一些资料,发现谷歌在Android8.0推出了一个getBatteryLevel的api,用来获取蓝牙设备电量百分比的方法,但在我的项目中andr ...
- mysql5.7 修改密码,修改权限
1.修改数据库对指定用户和ip权限 a. IP为192.168.0.1的用户jack拥有对数据库datebase的表table的 增删改查权限, ,连接密码为password grant select ...
- 【HBase】协处理器是什么?又能干什么?怎么用?
目录 简单了解 官方帮助文档 协处理器出现的原因 协处理器的分类 Observer Endpoint Phoenix 协处理器的使用 加载方式 静态加载 动态加载 协处理器的卸载 协处理器Observ ...
- Day_12【集合】扩展案例2_键盘录入一个字符串,对其进行去重,并将去重后的字符串组成新数组
需求分析:键盘读取一行输入,去掉其中重复字符, 打印出不同的那些字符 思路: 1.键盘录入字符串 2.遍历字符串,将每个字符存储到集合中 3.将集合中重复的字符去掉 4.创建新集合,遍历老集合,获取老 ...
- [hdu4622 Reincarnation]后缀数组
题意:给一个长度为2000的字符串,10000次询问区间[L,R]内的不同子串的个数 思路:对原串的每个前缀求一边后缀数组,询问[L,R]就变成了询问[L,n]了,即求一个后缀里面出现了多少个不同子串 ...