通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>VB编程>>正文 新版上线![旧版]
注:打开慢时请稍等

JSP+MYSQL+Java类优化分页

http://www.iyit.net  日期:2006-7-27 16:03:35  来源:  点击:
参加讨论
  在JSP中经常要用到查询数据库中的数据,同常我们的做法是使用SQL语句“select * from tablename order by id desc”,这样的做法有一个缺点,当数据库很大的时候查询的速度会变的很慢,在ASP中有一种方法 "select top "&recpage&" * from tablename where id not in (select top "&(recpage*(currentpage-1))&" id from products order by id desc) order by id desc"其中recpage为每页显示个数, currentpage为当前页数.不过在MYSQL数据库中没有“select top * " 语句,而可以代替的语句是”select * from tablename limit position, counter “position 指示从哪里开始查询,如果是0则是从头开始,counter 表示查询的个数,通过JSP+JAVA查询数据库,查询获取的数据暂时存放在内存中在JSP中通过调取JAVA类,直接从内存中提取数据,速度有了很大提高。

  下面的例子是一个关于网友评论的部分程序,假如你有一个专门供网友浏览的网站,而现在又想和网友互动起来,加一个评论是不错的想法,那么你可以把下面的程序加上,建一个表其中加一个photo_id字段和你的表关联起来后,就可以让网友对你的图片点评了。

  Comment.java是一个评论的类

  //<--------Comment.java ------->
  package dbconnection;
  public class Comment
  {
  private String id;
  private String album_id;
  private String title;
  private String content;
  private String modi_time;
  private String user;
  public void setId(String ids)
  {
  this.id=ids;
  }
  public void setalbum_id(String album_ids)
  {
  this.album_id=album_ids;
  }
  public void setTitle(String titles)
  {
  this.title=titles;
  }
  public void setContent(String contents)
  {
  this.content=contents;
  }
  public void setModi_time(String modi_times)
  {
  this.modi_time=modi_times;
  }
  public void setUser(String users)
  {
  this.user=users;
  }
  public String getId()
  {
  return id;
  }
  public String getalbum_id()
  {
  return album_id;
  }
  public String getTitle()
  {
  return title;
  }
  public String getContent()
  {
  return content;
  }
  public String getModi_time()
  {
  return modi_time;
  }
  public String getUser()
  {
  return user;
  }
  }

   TestSql.java就是我们查询数据库要用到的类了,具体的调用请看下面的comment.jsp文件。

  /**
  * Title jsp+mysql优化分页的例子
  * @author: cyd
  * Copyright: Copyright (c) 2003
  * @version 1.0
  * 日期 2004-9-22
  */

  //<--------TestSql.java ------->

  package dbconnection;
  import java.sql.*;
  import java.util.*;
  public class TestSql
  {
  Statement stmt=null;
  ResultSet rs=null;
  conn c=null;
  Comment comments[]=null;
  Vector v=null;
  int total;
  int PageSize;
  int PageCount;
  public TestSql(Connection cn) throws SQLException
  {
  stmt=cn.createStatement();
  }
  //查询获取记录
  public Comment[] getComment(int pagesize,int page) throws SQLException
  {
  this.PageSize=pagesize;
  String sql="select * from comment order by id desc limit "+(page-1)*pagesize+","+pagesize;
  Comment comments[]=null;
  v=new Vector();
  try
  {
   rs=stmt.executeQuery(sql);
   while(rs.next())
   {
    Comment p=new Comment();
    p.setId(rs.getString("id"));
    p.setTitle(rs.getString("title"));
    p.setContent(rs.getString("content"));
    p.setModi_time(rs.getString("modi_time"));
    p.setUser(rs.getString("user"));
    v.add(p);
   }
  }
  catch(SQLException e)
  {
   System.err.println("err");
  }
  comments=new Comment[v.size()];
  v.copyInto(comments);
  return comments;
  }

  //获取总记录数
  public int getTotal()
  {
  return total;
  }
  //获取总页数
  public int getPageCount()
  {
  try
  {
   rs=stmt.executeQuery("select count(*) from comment ");
   rs.next();
   this.total=rs.getInt(1);
   this.PageCount=(rs.getInt(1)+PageSize-1)/PageSize;
  }
  catch(SQLException e)
  {
   System.err.println("err");
  }
  return PageCount;
  }
  //释放资源
  public void close() throws SQLException
  {
  if (stmt != null)
  {
   stmt.close();
   stmt = null;
  }
  if (rs!=null)
  {
   rs.close();
   rs=null;
  }
  }
  }

  <!--comment.jsp -------------------------------------------------------------------->

  <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %>
  <%@ page import="java.io.*" %>
  <%@ page import="dbconnection.DBConnectionManager" %>
  <%
  DBConnectionManager connMgr;//这是数据库连接池的类,具体源码你可以在网找到。
  connMgr = DBConnectionManager.getInstance();
  Connection con = connMgr.getConnection("idb");//从连接池中获的一个连接

  int CurrentPage=1;
  int intPageCount,intRowCount;
  if(request.getParameter("page")!=null)
  CurrentPage=Integer.parseInt(request.getParameter("page"));
  if(CurrentPage<1)
  CurrentPage=1;
  int intPageSize=5;//设置每页显示5条
  %>
  <html>
  <head>
  <title>Untitled Document</title>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <style type="text/css">
  <!--
  .style3 {color: #FF0000}
  body {
  margin-left: 0px;
  margin-top: 0px;
  margin-right: 0px;
  margin-bottom: 0px;
  background-color: #FFFDDF;
  }
  -->
  </style>
  <script language="javascript">
  function goto(frm)
  {
  var gourl ="comment.jsp?";
  gourl += "&page=" + (frm.page.value);
  var hid=parseInt(frm.hid.value);
  if(parseInt(frm.page.value)>hid||frm.page.value<=0){
  alert("错误!请确定你输入的数字在1-"+hid+"之间");
  return false;
  }
  window.location.href(gourl);
  }</script>
  </head>
  <body>
  <%
  Comment[] p=null;
  TestSql ts=null;
  try
  {
  ts=new TestSql(con);
  p=ts.getComment(intPageSize,CurrentPage);//ts=.getComments(PageSize(每页显示个数),Page(页数))
  intPageCount =ts.getPageCount(); //获的页数
  intRowCount=p.length;
  if(CurrentPage>intPageCount)
  CurrentPage = intPageCount;
  int total=ts.getTotal(); //获取记录总数
  %>
  <table width="748" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
  <td>
  <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
  <td height="17"><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#EBEADF">
  <tr>
  <td height="25" bgcolor="#A7E081"><div align="center" class="style3">网友评论</div></td>
  </tr>
  <!-- start loop by tr -------------------------->
  <%
  if(intRowCount>0)
  {
  for(int i=0;i<intRowCount;i++)
  {
  %>
  <tr>
  <td height="20">
  <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#EBEADF">
  <tr>
   <td height="20">  <img src="http://www.iyit.net/Files/BeyondPic/2006-7/27/0672716033538377.gif" width="9" height="9"> <%=p[i].getUser()%>于 < %=p[i].getModi_time()%> 留言 </td>
  </tr>
  <tr>
   <td bgcolor="#FBFBF9" style="padding:5px 5px 5px 5px;line-height:18px;"> <%=p[i].getContent()%></td>
  </tr>
  </table>
  </td>
  </tr>
  <%
  }
  }
  else
  {
  %>
  <tr>
  <td height="20" bgcolor="#EBEADF">
  <%
  out.print("   暂时没有评论");
  }
  %>
  </td>
  </tr>
  <!-- end loop by tr -------------------------->
  </table></td>
  </tr>
  <tr>
  <td height="17" bgcolor="#FBFBF9">
  <div align="center">
  <form style="margin:0 0 0 0 ">
  <div align="center">第<%=CurrentPage%>页  共<%=intPageCount%>页  
  <%if(CurrentPage>1){%>
  <a href="comment.jsp?page=<%=CurrentPage-1%>"></a>  
  <%}else{%>
    
  <%}%>
  <%if(CurrentPage>=intPageCount){%>
  
  <%}else{%>
  <a href="comment.jsp?page=<%=CurrentPage+1%>"></a>
  <%}%>
  跳至
  <input type="hidden" name="hid" value="<%=intPageCount%>">
  <input name="page" type="text" size="2" onChange="goto(this.form)">
  页
  <input type="button" name="Button2" value="Go->" style="font-size:12px ">
  </div>
  </form>
  </div></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  </body>
  </html>
  <%
  }
  catch(Exception e)
  {
  e.printStackTrace();
  }
  finally{
  connMgr.freeConnection("idb", con);
  connMgr.release();
  ts.close();
  p=null;
  }
  %>

  注:win2000+tomcat5.0调试通过;Redhat9+tomcat5.0调试通过
  • 2005年5月10日
  • 2005年3月30日
  • 2005年3月30日
  • 2005年3月30日
  • 2005年3月30日
  • 2005年3月30日
  • 2005年3月29日
  • 2005年3月29日
  • 2005年3月29日
  • 2005年3月29日
  • 2005年3月28日
  • 2005年3月28日



  • 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
    上一篇:利用JBuilder 2005 开发Spring
    下一篇:Struts+Hibernate数据表示
    转载请注明来源:www.iyit.net
    特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

     相关文章
    [JAVA]十四种Java开发工具点评 初学java常用开发工具介绍 Java编程中更新XML文档的常用方法
    用Java实现HTTP文件队列下载 Singleton在Java中的应用 Java学习从入门到精通 4方法篇
    Java学习从入门到精通 2书籍篇 Java学习从入门到精通 3过程篇 [基础知识]JAVA是什么
    Java学习从入门到精通 1工具篇 [基础知识]接触 Java概述 Java服务器端编程安全必读
    编写一个JAVA的队列类 Java多线程程序设计 Java数据对象JDO 2.0查询语言的特点
    JSP概述 JSP预定义变量的使用 JSP Actions的使用
    JSP中实现页面跳转 JSP之Taglib Directiv 用Java编写通过代理访问的应用程序
    Java性能优化技巧集锦 JSP不是简化的Java Java入门需掌握的30个基本概念
    最新更新 热点排行 推荐新闻
    [JAVA]十四种Java开发工具点评
    初学java常用开发工具介绍
    Java编程中更新XML文档的常用方法
    用Java实现HTTP文件队列下载
    Singleton在Java中的应用
    [JAVA]十四种Java开发工具点评
    初学java常用开发工具介绍
    Java编程中更新XML文档的常用方法
    用Java实现HTTP文件队列下载
    Singleton在Java中的应用
    Java学习从入门到精通 4方法篇
    Java学习从入门到精通 2书籍篇
    Java学习从入门到精通 3过程篇
    [基础知识]JAVA是什么
    Java学习从入门到精通 1工具篇
    [JAVA]十四种Java开发工具点评
    初学java常用开发工具介绍
    Java编程中更新XML文档的常用方法
    用Java实现HTTP文件队列下载
    Singleton在Java中的应用
    编程解决注册表问题所需的函数详解
    VB.NET注册表编程
    盛大龙与地下城1万人内测 双核用户先行
    Illustrator CS模板应用
    在VB中使用注册表
    微软7月将发布七款补丁 将涉及到Windo
    用VB函数轻松访问系统注册表
    在VB中调用API操作注册表
    韩国网站FLASH效果动画源码源文件
    利用WindowsAPI函数和注册表获取系统信
    直接编辑VB中网格控制项的两种方法
    在ASP.net中保存/取出图片入/从SQL数据
    一个.net 压缩位图至JPEG的代码
    制服流氓:27种恶意软件安装卸载实录
    不止上网 IE地址栏的妙用
    入侵中国某大型商业网站服务器全记录
    IRC波特病毒出变种 黑客可远程控制电脑
    传AMD与ATI合并已谈妥 对中国影响不大
    金山PK网易 网游核心开发人员相互跳槽
    英特尔公开与AMD翻脸 “口水战”升级
    共享软件的十大破解工具推荐
     友情链接
    设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
    Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
    网站合作、广告联系QQ:147007642、466949678
    易特网络技术 点击这里给我发消息