帮帮忙,我的程序为什么那么慢? 简单估算一下110,000*1k(我想你的一条记录恐怕不止占用1k的内存吧)=110m110,000*2k=220m .................这中间把数据有硬盘写入内存是要消耗时间的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 rainshow(要学习的那样多而时间却那么的少) 说的对:最好是每次取一定数量记录显示到页面,换页时接着往下取 下面是我后来改成在servlet中直接显示出信息的代码,请大家帮忙看看import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;import java.sql.*;import edu.lsm.bean.*;import java.text.SimpleDateFormat;import javax.sql.DataSource;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;public class HttpDown extends HttpServlet { static final private String CONTENT_TYPE = "text/html; charset=GBK"; ChangeCode changeCode=new ChangeCode(); static final private int TDWIDTH=30; //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String page=request.getParameter("page"); String sql; String sqlCount; String whereStr=null; if(page!=null&&page.length()>0) { sql=(String)session.getAttribute("sql"); sqlCount=(String)session.getAttribute("sqlCount"); } else { whereStr=" where protocol=\'HTTP_DOWN\'"; sql="select fileName,sensitiveWord,AlarmID,Name,time,DstIp,URL from DealView"; sqlCount="select count(AlarmID) as num from DealView"+whereStr; sql=sql+whereStr+" order by time desc"; session.setAttribute("sql",sql); session.setAttribute("sqlCount",sqlCount);} int intPageSize=20; int intRowCount; int intPageCount=1; int intCurPage=1; response.setContentType("text/html;charset=gb2312"); PrintWriter out = response.getWriter(); Connection conn=null; try { Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/cddd"); conn=ds.getConnection(); } catch(Exception e) { out.println("不能获取数据库连接。"); return;} Statement smt=null; ResultSet rs=null; try { smt=conn.createStatement(); rs=smt.executeQuery(sqlCount); rs.next(); intRowCount=rs.getInt(1); if(page!=null) intCurPage=Integer.parseInt(page); if(intCurPage<1) intCurPage=1; intPageCount = (intRowCount+intPageSize-1) / intPageSize; if(intCurPage>intPageCount) intCurPage=intPageCount; rs.close(); rs=smt.executeQuery(sql); for(int i=0;i<(intCurPage-1)*intPageSize;i++) { rs.next(); } int k=0; out.println("<html>"); out.print("<head><style>TD { FONT-SIZE: 9pt; FONT-FAMILY: 宋体 }</style></head>"); out.print("<body>"); out.println("<table border=1 align=center>"); out.println("<tr align=center><td>词</td><td>编号</td><td>名称</td><td>时间</td><td>IP</td><td>url</td></tr>"); while(rs.next()&&k<intPageSize) { String hlink; hlink=rs.getString("fileName"); hlink=(hlink==null)?"#":hlink.substring(3); String value=rs.getString("sensitiveWord"); value=(value==null)?" ":value; out.print("<tr align=center><td><a href="+hlink+">"+value+"</td>"); value=rs.getString("AlarmID"); value=(value==null)?" ":value; out.print("<td>"+value+"</td>"); value=rs.getString("Name"); value=(value==null)?" ":value; out.print("<td>"+value+"</td>"); String tmp=rs.getString("time"); if(tmp==null||tmp.length()<4) tmp=""; else tmp=tmp.substring(0,tmp.length()-4); out.print("<td>"+tmp+"</td>"); value=rs.getString("DstIP"); value=(value==null)?" ":value; out.print("<td>"+value+"</td>"); value=rs.getString("URL"); value=(value==null)?" ":value; String ST=""; if(value==null) ST=" "; else { while(value.length()>TDWIDTH) { ST=ST+value.substring(0,TDWIDTH)+"<br>"; value=value.substring(TDWIDTH); } if(value.length()>0) ST=ST+value; } out.print("<td align=left>"+ST+"</td></tr>"); k++; } out.println("<tr><td colspan=6 align=center>"); out.print("总记录数:"+intRowCount+"页次:"+intCurPage+"/"+intPageCount); if(intCurPage>1) out.print("<a href=HttpDown?page="+(intCurPage-1)+">上一页</a> "); if(intPageCount>intCurPage) out.print("<a href=HttpDown?page="+(intCurPage+1)+">下一页</a>"); out.print("</td></tr>"); out.println("<table>"); out.println("</body></html>"); } catch(SQLException e) { getServletContext().log("HttpDown.java数据库操作出错.",e); } finally { try{ rs.close(); smt.close(); conn.close(); } catch(SQLException e) { getServletContext().log("HttpDown.java数据库关闭出错."); } } }} 我也有这样的问题,我用tomcat4.1.19,jdbc连接sql server2000数据量也不大,结果开始要等好大一会,感觉还没asp快,是不是一定要用连接池? 求助各位大神 第一次发帖,有点小紧张 急 在线等 ,关于用smartupload 上传报错!! Tomcat 缓存如何配置 jsp如何导出并且在后台进行压缩 使用SERVLET如何在日志中纪录用户下载文件的总时间长度? 关于jsp调用javabean 一个奇怪的乱码问题? 求教:关于如何使下拉菜单默认为数据库中某值~~~ 如何取得Bean的class的绝对路径? 急,如何让IE直接打开一个word文档?????下载文件是不让出现对话框?????? JSP和MYSQL数据库的连接!!!!!!!!谢谢
最好是每次取一定数量记录显示到页面,换页时接着往下取
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import edu.lsm.bean.*;
import java.text.SimpleDateFormat;
import javax.sql.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;public class HttpDown extends HttpServlet {
static final private String CONTENT_TYPE = "text/html; charset=GBK";
ChangeCode changeCode=new ChangeCode();
static final private int TDWIDTH=30;
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
} public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String page=request.getParameter("page");
String sql;
String sqlCount;
String whereStr=null;
if(page!=null&&page.length()>0)
{
sql=(String)session.getAttribute("sql");
sqlCount=(String)session.getAttribute("sqlCount");
}
else
{
whereStr=" where protocol=\'HTTP_DOWN\'";
sql="select fileName,sensitiveWord,AlarmID,Name,time,DstIp,URL from DealView";
sqlCount="select count(AlarmID) as num from DealView"+whereStr;
sql=sql+whereStr+" order by time desc";
session.setAttribute("sql",sql);
session.setAttribute("sqlCount",sqlCount);
}
int intPageSize=20;
int intRowCount;
int intPageCount=1;
int intCurPage=1;
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
Connection conn=null;
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/cddd");
conn=ds.getConnection();
}
catch(Exception e) {
out.println("不能获取数据库连接。");
return;
}
Statement smt=null;
ResultSet rs=null;
try
{
smt=conn.createStatement();
rs=smt.executeQuery(sqlCount);
rs.next();
intRowCount=rs.getInt(1);
if(page!=null)
intCurPage=Integer.parseInt(page);
if(intCurPage<1)
intCurPage=1;
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
if(intCurPage>intPageCount)
intCurPage=intPageCount;
rs.close();
rs=smt.executeQuery(sql);
for(int i=0;i<(intCurPage-1)*intPageSize;i++)
{
rs.next();
}
int k=0;
out.println("<html>");
out.print("<head><style>TD { FONT-SIZE: 9pt; FONT-FAMILY: 宋体 }</style></head>");
out.print("<body>");
out.println("<table border=1 align=center>");
out.println("<tr align=center><td>词</td><td>编号</td><td>名称</td><td>时间</td><td>IP</td><td>url</td></tr>");
while(rs.next()&&k<intPageSize)
{
String hlink;
hlink=rs.getString("fileName");
hlink=(hlink==null)?"#":hlink.substring(3); String value=rs.getString("sensitiveWord");
value=(value==null)?" ":value;
out.print("<tr align=center><td><a href="+hlink+">"+value+"</td>"); value=rs.getString("AlarmID");
value=(value==null)?" ":value;
out.print("<td>"+value+"</td>"); value=rs.getString("Name");
value=(value==null)?" ":value;
out.print("<td>"+value+"</td>");
String tmp=rs.getString("time");
if(tmp==null||tmp.length()<4)
tmp="";
else
tmp=tmp.substring(0,tmp.length()-4);
out.print("<td>"+tmp+"</td>"); value=rs.getString("DstIP");
value=(value==null)?" ":value;
out.print("<td>"+value+"</td>"); value=rs.getString("URL");
value=(value==null)?" ":value;
String ST="";
if(value==null)
ST=" ";
else
{
while(value.length()>TDWIDTH)
{
ST=ST+value.substring(0,TDWIDTH)+"<br>";
value=value.substring(TDWIDTH);
}
if(value.length()>0)
ST=ST+value;
}
out.print("<td align=left>"+ST+"</td></tr>");
k++;
}
out.println("<tr><td colspan=6 align=center>");
out.print("总记录数:"+intRowCount+"页次:"+intCurPage+"/"+intPageCount);
if(intCurPage>1)
out.print("<a href=HttpDown?page="+(intCurPage-1)+">上一页</a> ");
if(intPageCount>intCurPage)
out.print("<a href=HttpDown?page="+(intCurPage+1)+">下一页</a>");
out.print("</td></tr>");
out.println("<table>");
out.println("</body></html>");
}
catch(SQLException e)
{
getServletContext().log("HttpDown.java数据库操作出错.",e);
}
finally
{
try{
rs.close();
smt.close();
conn.close();
}
catch(SQLException e)
{
getServletContext().log("HttpDown.java数据库关闭出错.");
}
}
}
}