• 模板:分页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;
        }
    }
    View Code

    效果一:列表全显示

     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);
        }
    }
    View Code

    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>
    View Code

    效果二:只显示前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);
        }
    }
    View Code

    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);
        }
    }
    View Code

     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>
    View Code

    效果四:可显示首页和末页、下一页和上一页

     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);
        }
    }
    View Code

    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>
    View Code

     效果五:可显示有序页

     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);
        }
    }
    View Code

    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>
    View Code

      效果五:可显示首页、上一页、中间页、下一页、末页

    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);
        }
    }
    View Code

    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>
    View Code
  • 相关阅读:
    2015-05-28
    QQ项目随笔-15-05-19
    QQ聊天窗口布局笔记-15-05-17
    QQ聊天cell-15-05-16
    关于自定义cell——15-05-13
    关于MVC中德一些注意事项-15-05-11
    关于UITableView的若干方法-15-05-07
    UIAlertView(弹窗)的若干方法15-05-07
    •UIButton快捷获取属性值
    ES6(简)
  • 原文地址:https://www.cnblogs.com/Strugglinggirl/p/12927697.html
Copyright © 2020-2023  润新知