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)的更多相关文章

  1. 修改 MyEclipse 中的 jsp 和 servlet 模板

    找到  MyEclipse/Common/plugins/com.genuitec.eclipse.wizards_9.0.0.me201211011550.jar 这个文件(wizards后面的数字 ...

  2. jsp学习--如何定位错误和JSP和Servlet的比较

    一.如何查找JSP页面中的错误  JSP页面中的JSP语法格式有问题,导致其不能被翻译成Servlet源文件,JSP引擎将提示这类错误发生在JSP页面中的位置(行和列)以及相关信息.JSP页面中的JS ...

  3. Jsp与servlet之间页面跳转及参数传递实例(转)

    原网址:http://blog.csdn.net/ssy_shandong/article/details/9328985 11. jsp与servlet之间页面跳转及参数传递实例 分类: Java ...

  4. 图解JSP与Servlet的关系

      Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容.Servlet是平台独立的Java类,编写一个Servlet, ...

  5. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  6. 快速分页:jsp标签pager-taglib

    一:简介 Pager-taglib,支持多种风格的分页显示.实际上它是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组 合,会形成多种不一样的分页页面,风格各异.它既 ...

  7. JSP(Java Servlet Page)

    一.简介 HTML HTML擅长显示一个静态的网页,但是不能调用Java程序. Servlet Servlet擅长调用Java程序和后台进行交互,但是它不擅长显示一个完整的HTML页面. 我们希望创建 ...

  8. 【转】(超详细)jsp与servlet之间页面跳转及参数传递实例

    初步学习JavaEE,对其中jsp与Servlet之间的传值没弄清楚,查看网上资料,发现一篇超详细的文章,收获大大,特此记录下来.具体链接:http://blog.csdn.net/ssy_shand ...

  9. JSP和Servlet的中文乱码处理

    JSP和Servlet的中文乱码处理 前几天学习了JSP和Servlet中有关中文乱码的一些问题,写成了博客,今天进行更新一下.应该是可以解决日常的乱码问题了.现在作以下总结希望对需要的人有所帮助.我 ...

  10. 一、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)

    背景: 目前业界很流行的MVC(model-view-control)开发模式,理解为 模型是Bean, 视图是 Html/Jsp, 控制是Servlet, 关联数据库的Dao web的运行机制: 数 ...

随机推荐

  1. mybatis if test标签的使用

    2019独角兽企业重金招聘Python工程师标准>>> 在使用mybatis 有时候需要进行判断的. 而我们知道mybatis获取值有两种方式 #{}和${}的. 那么,在mybat ...

  2. codeforce 1311 D. Three Integers

    In one move, you can add +1 or −1 to any of these integers (i.e. increase or decrease any number by ...

  3. String-StringBuilder-StringBuffer 的区别

    String StringBuilder StringBuffer 的区别 String:不可改变的字符串,不能够被修改                    (https://baijiahao.b ...

  4. 题解 CF160B 【Unlucky Ticket】

    本文为UserUnknown原创 思路 这道题应该怎么做? 可以把输入的数字逐位拆分后存入数组,就像这样存进去: int a[N],b[N] tmp=n; k=1; while(--tmp){ a[k ...

  5. MYSQL数据库配置安装、重置密码以及工具连接

    一.下载mysql安装包 下载地址:https://dev.mysql.com/downloads/mysql/ 下载解压好之后,就是一个文件夹的形式. 二.配置环境变量 环境变量的配置,就是把MyS ...

  6. 怎么成为一名WEB前端开发工程师

       对于刚开始学的人来说,web 就是HTML+CSS+JavaScript其实我们是可以这样理解的.web工程师负责或参与Web产品的页面开发,包含PC端.移动APP内嵌移动端.微信小程序.web ...

  7. Linux(Ubuntu) MySQL数据库安装与卸载

    安装 修改远程访问 卸载 安装 首先检查系统中是否已经安装了MySQL sudo netstat -tap | grep mysql 没有显示已安装结果,则没有安装 如若已安装,可以选择删除.(删除方 ...

  8. Leetcode_236. 二叉树的最近公共祖先

    求二叉树的LCA code /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *le ...

  9. EEGLAB-批量处理.dat数据及保存脑电地形图

    步骤 1.先在图形界面操作一遍准备做的操作. 2.在命令行窗口输入 EEG.history 获取刚刚操作都用到哪些语句. 3.稍加修改即可以写一个批量化函数来读取生成数据. 4.在 EEGLAB\ee ...

  10. 关于redis,你需要了解的几点!

    一.关于 redis key: 1.是二进制安全的,也就是说,你可以使用任何形式的二进制序列来作为key,比如一个string,或者一个jpg图片的数据,需要说明的是,空字符串也是一个有效的key. ...