分页查询

传智播客——DBUtile高级分页、表单重复提交问题 (2010-01-09 14:36:35)

思路:

       a.由于操作问题引发的表单重复提交问题。在页面上设置重复提交时οnsubmit="return false;"。或者如果是submit按钮的话可设置:οnclick="checkSubmit(); return false;" 。再活着点击提交之后直接用javaScript将按钮禁止: function checkSubmit(){
         document.forms[0].submit();
         document.forms[0].ok.disabled=true;
     }

       b.在后台采用uuid方法进行设置

       c.高级分页查询。核心思想:为节省资源和时间根据条件查询数据而不是直接查询全部!!!需要获取数据库中的总条数。然后根据要进计算分页处理。根据处理方法在查询数据库,取出需要的数据。当然,上下翻页也需要进行详细处理。

 

 

表单重复提交解决方案:
  * 采用UUID
     *  当jsp页面运行时,生成一个唯一的UUID数,放置在session中一份,同时也放置到页面的一个隐藏域中
          隐藏域:
             <input type="hidden" name="uuid.html"  value="<%=TokenUUID.getTokenUUID().getUUIDAsString(request)%>"  > 
         session:
             public String getUUIDAsString(HttpServletRequest request){
    //如session存在使用存在,如sessioon不存在,创建一个新的
    HttpSession session=request.getSession();
    //生成uuid唯一标识
    String uuid=UUID.randomUUID().toString();
    
    if(uuid!=null){
     //放置uuid到session中
     session.setAttribute("uuid.action", uuid);
    }
    return uuid;
            }

 

 

mysql的分页查询
格式:
   select clolumn1,column2... from table_name order by id limit  beginindex,length
    limit  beginindex,length
        * limit        分页查询标志
        * beginindex   开始查询的索引
        * length       从该索引(beginindex)开始,查询的数量
 
select id,cname,jobid,sourceid,locationid,pcode,address from company order by id limit 3,3

 

总结分页:
    * 点击  <a href="/itcast1130webDBUtil/company/searchConditionServlet"
                target="mainFrame"  title="客户信息高级分页查询">员工信息高级分页查询</a><br>
        * 查询第一页
        * cname 和address的值 为null
        * String flag="search";
        * 执行         
   //点击搜索按钮执行
   if("search".equals(flag)){
    cname = request.getParameter("cname");
    address = request.getParameter("address");
   }
    但此时cname=null address=null
    * // 封装查询条件
    SearchCompany searchCompany = new SearchCompany();
    searchCompany.setAddress(address);//null
    searchCompany.setCname(cname);    //null
    在dao层组织sql语句时候,没有查询条件
  
  
   
   
    * 点击  搜索 按钮 执行javaScript的search方法
       *  <td><input type="button"  value="搜索" οnclick="search();"></td>
          //点击搜索按钮
         function search(){
         <!--
           执行查询条件的标志
           该值为search时,servlet获取的是cname 和address文本框的值
           该值为page时,  servlet获取的是old_cname 和olod_address文本框的值 
         -->
            //<input type="hidden"  id="searchFlag" name="searchFlag"  value="search">
             var searchFlag=document.getElementById("searchFlag");
             //更改标志
             searchFlag.value="search";
             //表单提交
             document.forms[0].submit();
         }
       *执行Servlet中
           //点击搜索按钮执行
   if("search".equals(flag)){
    cname = request.getParameter("cname");
    address = request.getParameter("address");
   }
       
       
   
  
  
   点击  <a href="javaScript:toPage(${pageBean.prePage},${pageBean.maxSize})">上页</a>
      * 调用
             //点击上页 下页 首页 尾页 超链接
       function toPage(curPage,maxSize){
         //获取读取cname和old_cname的标志
         var searchFlag=document.getElementById("searchFlag");
         //更改标志位page servlet读取的是old_xxxx的值
         searchFlag.value="page";
         //先获取form 表单中的action   在action后面加上?curPage="+curPage+"&maxSize="+maxSize;
         //传递当前页和每页显示的最大记录数
         document.forms[0].action=document.forms[0].action+"?curPage="+curPage+"&maxSize="+maxSize;
         //提交表单
         document.forms[0].submit();
        }
   * 此时在Servlet中执行的是
      //点击上页 下页 首页 尾页 超链接
   if("page".equals(flag)){
    cname = request.getParameter("old_cname");
    address = request.getParameter("old_address");
   }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值