A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩秀山 中级黑马   /  2013-5-15 18:08  /  1161 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

使用jdbc连接数据库。我在做一个小小的项目,能在jsp页面中对mysql查出来的商品进行分页操作。在网上查了好多方法。都看不懂,希望谁能提供一个。并带有注释的????

3 个回复

倒序浏览
嘿嘿  哥们学的太深了    这种问题是就业班以后才会学的   暂时把基础学好了,以后才会事半功倍。不要事倍功半
回复 使用道具 举报
楼上说的正确,java基础很重要,基础好了,后面的就学的很快,基础不好,后面就学的很吃力,以后还得再补,得不偿失;这也是为什么很多人去黑马的原因,也是黑马比其它班薪水高某些档次的原因之一。我有分页相关的一个代码,如确实有需要,可以给你。如果楼主感觉基础不好,建议无论如何先掌握基础。哈哈。。。
回复 使用道具 举报
本帖最后由 段旭东 于 2013-5-16 10:15 编辑

jsp也面的分页显示  我只知道有两种:一种是sql分页 sql语句可以限制 每次查询时显示的数量,一种是 后台处理 不过这两种 都需要用到 jstl标签 <C:foreach> 才能循环显示
这是一个例子:前两个是 servlet 算是专门测试 分页的 小例子 你要是觉得 看不懂 我也可以把原项目 发给你!暂时 jdbc阶段 你只需要连接数据库 操纵增删改查 就足够了!慢慢来哦
  1. import java.io.IOException;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.Iterator;
  5. import java.util.List;

  6. import javax.el.ELContext;
  7. import javax.servlet.jsp.JspContext;
  8. import javax.servlet.jsp.JspException;
  9. import javax.servlet.jsp.tagext.SimpleTagSupport;

  10. import com.sun.faces.spi.ManagedBeanFactory.Scope;


  11. public class PartPageTag extends SimpleTagSupport {

  12.         private List source;// 被分页的集合接口
  13.         private String result;// 分页后的子集合
  14.         private String size;// 每页显示的数据数量
  15.         private String currentPage;// 当前页码
  16.        
  17.         private int pageQuantity; // 总的分页数
  18.        
  19.         public PartPageTag(){
  20.                 System.out.println("实例化标签实现类对象");
  21.                
  22.         }
  23.        
  24.         @Override
  25.         public void doTag() throws JspException, IOException {
  26.                 // TODO Auto-generated method stub
  27.                 super.doTag();
  28.                
  29.                 JspContext jspContext=this.getJspContext();// 获得JspContext对象
  30.                
  31.                 int sum=source.size();// 获得集合大小
  32.                 System.out.println("一共有数据:"+sum);
  33.                 /*
  34.                  * 判断每页显示的数据数量是否大于源集合中的数据数量
  35.                  * */
  36.                 List list=new ArrayList();//封装最后分页数据的集合
  37.                
  38.                 if(size==null || size.equals("")){// 如果此属性缺省或者是空值则不对集合进行分割
  39.        
  40.                         System.out.println("缺省数量");
  41.                         list=source;
  42.                        
  43.                 }else{// 如果size属性填入值,则进行比较
  44.                        
  45.                         //判断每页显示的数量是否大于等于源集合大小
  46.                         int num=Integer.parseInt(size);
  47.                         if(num>=source.size()){// 如果大于或等于原集合大小则不分页
  48.                                 list=source;
  49.                                
  50.                         }else{
  51.                                 pageQuantity=evalPagination(num);// 调用计算总页码数的方法
  52.                                 validatePage();// 调用验证页码是否在合法的范围方法
  53.                                 list=partitionSourceList(num);//调用分割集合的方法
  54.                         }
  55.                 }       
  56.                 jspContext.setAttribute("currentPage",currentPage, 2);// 把当前页码放入result作用域中
  57.                 jspContext.setAttribute("pageQuantity",pageQuantity, 2);// 把当前页码总数放入result作用域中
  58.                
  59.                 jspContext.setAttribute(result, list, 2);// 把分页后数据封装到list中并以result标签属性作为引用存放在请求域中       
  60.         }
  61.        
  62.         /*计算总页码数的方法*/
  63.        
  64.         private int evalPagination(int num){
  65.                 System.out.println("计算总的页码数");
  66.                 int sum;
  67.                 sum=source.size()/num;// 总页数变量(集合大小除以每页显示的数据数)
  68.                 //判断是否能够整除
  69.                 if(source.size()%num !=0){// 如果不能够除尽则在总页数上加1,多显示一页
  70.                         sum=sum+1;
  71.                 }
  72.                 return sum;
  73.         }
  74.        
  75.         /*验证页码是否在合法的范围方法*/
  76.        
  77.         private void validatePage(){
  78.                 System.out.println("检验页码是否正确");
  79.                 // 如果页码属性currentPage 为null,为 空字符串,为字符串 0
  80.                 if(currentPage==null||currentPage.equals("")||currentPage.equals("0"))
  81.                                         currentPage="1";// 设为第一页
  82.                 //如果页码属性currentPage大于等于总的页码数
  83.                 else if(Integer.parseInt(currentPage)>=pageQuantity){
  84.                         currentPage=String.valueOf(pageQuantity);// 设为最后一页
  85.                        
  86.                 }
  87.         }
  88.        
  89.         /*分割集合的方法
  90.          * */
  91.         private List partitionSourceList(int num){
  92.                
  93.                 System.out.println("分割集合");
  94.                 List res=new ArrayList();
  95.        
  96.                 if(Integer.parseInt(currentPage)>=pageQuantity){
  97.                        
  98.                         if(source.size()%num ==0){
  99.                                 res=source.subList(Integer.parseInt(currentPage)
  100.                                                 *Integer.parseInt(size)-Integer.parseInt(size),
  101.                                                 Integer.parseInt(currentPage)
  102.                                                 *Integer.parseInt(size)-Integer.parseInt(size)+Integer.parseInt(size));
  103.                                
  104.                         }else{
  105.                                 res=source.subList(Integer.parseInt(currentPage)
  106.                                                 *Integer.parseInt(size)-Integer.parseInt(size),
  107.                                                 pageQuantity
  108.                                                 *Integer.parseInt(size)-Integer.parseInt(size)+source.size()%num);
  109.                                
  110.                         }
  111.                        
  112.                 }
  113.                 else{
  114.                                 res=source.subList(Integer.parseInt(currentPage)
  115.                                 *Integer.parseInt(size)-Integer.parseInt(size),
  116.                                 Integer.parseInt(currentPage)
  117.                                 *Integer.parseInt(size)-Integer.parseInt(size)+Integer.parseInt(size));
  118.                 }
  119.                 return res;
  120.         }

  121.         /*
  122.          * getter and setter methods ...
  123.          * */
  124.         public List getSource() {
  125.                 return source;
  126.         }
  127.         public void setSource(List source) {
  128.                 this.source = source;
  129.         }
  130.        
  131.         public String getResult() {
  132.                 return result;
  133.         }
  134.         public void setResult(String result) {
  135.                 this.result = result;
  136.         }
  137.        
  138.         public String getSize() {
  139.                 return size;
  140.         }
  141.         public void setSize(String size) {
  142.                 this.size = size;
  143.         }
  144.        
  145.         public String getCurrentPage() {
  146.                 return currentPage;
  147.         }
  148.         public void setCurrentPage(String currentPage) {
  149.                 this.currentPage = currentPage;
  150.         }
  151.        
  152. }
复制代码
  1. import java.io.IOException;

  2. import javax.servlet.jsp.JspContext;
  3. import javax.servlet.jsp.JspException;
  4. import javax.servlet.jsp.JspWriter;
  5. import javax.servlet.jsp.tagext.SimpleTagSupport;

  6. public class PagingLink extends SimpleTagSupport {

  7.         @Override
  8.         public void doTag() throws JspException, IOException {
  9.                 // TODO Auto-generated method stub
  10.                 super.doTag();
  11.                 JspContext context=this.getJspContext();// 获得JspContext对象
  12.                 JspWriter out=context.getOut();// 获得JspWriter对象
  13.                
  14.                 int current=Integer.parseInt(String.valueOf(context.getAttribute("currentPage", 2)));
  15.                 int pagesum=Integer.parseInt(String.valueOf(context.getAttribute("pageQuantity", 2)));
  16.                
  17.                 out.print("<a href='?page=1'>首页</a> ");
  18.                 out.print("<a href='?page="+(current-1)+"'>上一页</a>");
  19.                 out.print(" 一共 "+pagesum+" 页");
  20.                 out.print(" 当前页码是第  "+(current)+" 页 ");
  21.                 out.println("<a href='?page="+(current+1)+"'>下一页</a>");
  22.                 out.print(" <a href='?page="+pagesum+"'>尾页</a>");
  23.         }

  24.        
  25. }
复制代码
这个是 jsp页面的代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
  2. <%@ taglib uri="http://java.sun.com/jstl/core_rt"  prefix="c" %>
  3. <%@ taglib uri="/WEB-INF/tag" prefix="p" %>
  4. <%
  5. String path = request.getContextPath();
  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  7. %>

  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  9. <html>
  10.   <head>
  11.     <base href="<%=basePath%>">
  12.    
  13.     <title>My JSP 'index.jsp' starting page</title>
  14.         <meta http-equiv="pragma" content="no-cache">
  15.         <meta http-equiv="cache-control" content="no-cache">
  16.         <meta http-equiv="expires" content="0">   
  17.         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  18.         <meta http-equiv="description" content="This is my page">
  19.         <!--
  20.         <link rel="stylesheet" type="text/css" href="styles.css">
  21.         -->
  22.   </head>
  23.   
  24.   <body>
  25.     This is my JSP page.

  26.     <%
  27.            
  28.             pageContext.setAttribute("user",new Object());
  29.             Collection conn=new ArrayList();
  30.            
  31.             conn.add(new String("KING"));
  32.             conn.add(new String("CAO"));
  33.             conn.add(new String("TOMCAT"));
  34.             conn.add(new String("LUCY"));
  35.             conn.add(new String("TOMCAT"));
  36.             conn.add(new String("LUCY"));
  37.             conn.add(new String("TOMCAT"));
  38.             conn.add(new String("LUCY"));
  39.             conn.add(new String("TOMCAT"));
  40.             conn.add(new String("LUCY"));
  41.             conn.add(new String("TOMCAT"));
  42.             conn.add(new String("反对法"));
  43.             conn.add(new String("反对福建卡"));
  44.             conn.add(new String("oorereoo"));
  45.             conn.add(new String("45rere6"));
  46.             conn.add(new String("12rere3"));
  47.             conn.add(new String("TOMCreAT"));
  48.             conn.add(new String("反对rrere法"));
  49.             conn.add(new String("反对福rerere建卡"));
  50.             conn.add(new String("ooorerereo"));
  51.             conn.add(new String("4rerere56"));
  52.             conn.add(new String("fdfddf"));
  53.            
  54.             request.setAttribute("data",conn);
  55.     %>
  56.         <p:partition source="${requestScope.data}" result="a" currentPage="${param.page}" size="7"/>
  57.        

  58.        
  59.        

  60.         <center >
  61.         <table border="1" cellpadding="5" cellspacing="1">
  62.         <c:forEach items="${a}" var="obj">
  63.         <tr><td>${obj}</td></tr>
  64.         </c:forEach>
  65.         <tr style="font-size: 13"><td><p:pagingLink/></td></tr>
  66.     </table>
  67.     </center>
  68.            

  69.            
  70.   </body>
  71. </html>
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马