2007-8-14 18:03:23 org.apache.jasper.runtime.PageContextImpl release
警告: Internal error flushing the buffer in release()参照别人的代码拼凑的个JSP网页,控制台出现上述错误。
代码如下:麻烦大家帮找找问题,顺便看下有哪些不合理的地方?鞠躬谢谢~
----------------------------------------------------------------------
<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import="java.sql.*"%> 
<%@ page import="java.util.*"%>
<%@ page import="java.util.Date"%>
<%@ page import="java.text.*"%>
<%@ include file="inc/conn.jsp"%>
<%
//request.setCharacterEncoding("GB2312") ;
%>
<html>
<head>
<title></title>
</head>
<body><%
String name=null;
name = (String)session.getAttribute("name");
if(name==""||name==null)
{
out.print("你必须登录才行噢");
%>
<center>
<a href="register.jsp">注册</A>
<a href="login.jsp">登录</a>
</center>
<%
}
else
{
out.print("Hi,  "+ name + " 欢迎您回来!");%><a href="logout.jsp">注销</a>
<hr />
<br>
<br>
    <table width="760" border=1 cellspacing=0 bordercolordark=#CCCCCC bordercolor=#ffffff align="center">
      <tr>
        <center>
          <td width="6%">ID</td>
          <td width="10%">姓名</td>
          <td width="9%">妮称</td>
          <td width="7%">密码</td>
          <td width="15%">Email</td>
          <td width="5%">性别</td>
          <td width="32%">登陆时间 </td>
          <td width="16%">IP</td>
        </center>
      </tr>
<%
try
{
String sql="select * from staff order by id DESC"; 
ResultSet rs=stmt.executeQuery(sql); int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
String strPage;
int i;//设置一页显示的记录数
intPageSize = 10;//取得待显示页码
strPage = request.getParameter("pages");
if(strPage==null){
//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else
{
//将字符串转换成整型
intPage = Integer.parseInt(strPage);
if(intPage<1){ intPage = 1;}
}
//获取记录总数 
rs.last(); 
intRowCount = rs.getRow(); 
//计算总页数
intPageCount =(intRowCount+intPageSize-1) / intPageSize;//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
if(intPageCount>0){
//将记录指针定位到待显示页的第一条记录上 
rs.absolute((intPage-1) * intPageSize+1); 
//显示数据 
i = 0; //if (rs.next()){
while(i< intPageSize && !rs.isAfterLast()){ 
int id=rs.getInt("id");
String uuser=rs.getString("name");
String nicheng=rs.getString("nickname");
String pass=rs.getString("password");
String email=rs.getString("email");
String sex=rs.getString("sex");
String time=rs.getString("lasttime");
String ip=rs.getString("ip");%>       <tr><center>
        <td><%=id%></td>
        <td><%=uuser%></td>
        <td><%=nicheng%></td>
        <td><%=pass%></td>
        <td><%=email%></td>
        <td><%=sex%></td>
        <td><%=time%></td>
        <td><%=ip%></td>
</center>
      </tr>
<%
}
rs.next(); 
i++; 
}
rs.close(); 
stmt.close(); 
conn.close(); 
%>
</table>
<table width="760" border="0" cellspacing="0" cellpadding="0" align="center">
                <tr> 
                  <td align="left" width="126">&nbsp; 
                    <%out.print("共<font color=red>"+intRowCount+"</font>个主题 <font color=red>"+intPageSize+"</font>/页 共<font color=red>"+intPageCount+"</font>页");%>
                  当前第<font color=red><%=intPage%></font>页 </td>
                  <td width="634" height="23" align="right">&nbsp;
    <%if(intPage<=1){%>
    首页
    <%}else{%>
                    <a href="main.jsp?pages=1">首页</a>
<%}%>
                    <%if(intPage>1){%>
                    <a href="main.jsp?pages=<%=intPage-1%>">上一页</a> 
                    <%}else{%>
                    上一页 
                    <%
                }%>
                    <%if(intPage<intPageCount){%>
                    <a href="main.jsp?pages=<%=intPage+1%>">下一页</a> 
                    <%}else{%>
                    下一页 
                    <%
                }%>
    <%if(intPageCount<=1||intPage==intPageCount){%>
    尾页
    <%}else{%>
                    &nbsp;<a href="main.jsp?pages=<%=intPageCount%>">尾页</a>&nbsp;
<%}%>
                  </td>
                </tr>
 </table>
<%
}
catch(Exception e)
{
throw(e);
}
}
%>
</body>
</html>

解决方案 »

  1.   

    代码的风格不好,开始的时候,一定要养成好的编程风格!要把视图和控制,还有模型分开,不要把jsp写入很多java代码,我帮你看了一下,修改如下:
    <%@ page contentType="text/html; charset=gb2312"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.util.Date"%>
    <%@ page import="java.text.*"%>
    <%@ include file="inc/conn.jsp"%>
    <%
    //request.setCharacterEncoding("GB2312") ;
    %>
    <html>
    <head>
    <title></title>
    </head>
    <body><%
    String name=null;
    name = (String)session.getAttribute("name");
    if(name==""||name==null)
    {
    out.print("你必须登录才行噢");
    %>
    <center>
    <a href="register.jsp">注册</A>
    <a href="login.jsp">登录</a>
    </center>
    <%
    }
    else
    {
    out.print("Hi, "+ name + " 欢迎您回来!");%><a href="logout.jsp">注销</a>
    <hr />
    <br/>
    <br/>
    <table width="760" border=1 cellspacing=0 bordercolordark=#CCCCCC bordercolor=#ffffff align="center">
    <tr align="center"><td width="6%">ID</td>
    <td width="10%">姓名</td>
    <td width="9%">妮称</td>
    <td width="7%">密码</td>
    <td width="15%">Email</td>
    <td width="5%">性别</td>
    <td width="32%">登陆时间 </td>
    <td width="16%">IP</td></tr>
    <%
    try
    {
    Connection con = DriverManager.getConnection("DatabaseURL");
    Statement stmt = con.createStatement();
    String sql="select * from staff order by id DESC";
    ResultSet rs=stmt.executeQuery(sql);int intPageSize; //一页显示的记录数
    int intRowCount; //记录总数
    int intPageCount; //总页数
    int intPage; //待显示页码
    String strPage;
    int i;//设置一页显示的记录数
    intPageSize = 10;//取得待显示页码
    strPage = request.getParameter("pages");
    if(strPage==null){
    //表明在QueryString中没有page这一个参数,此时显示第一页数据
    intPage = 1;
    }
    else
    {
    //将字符串转换成整型
    intPage = Integer.parseInt(strPage);
    if(intPage<1){ intPage = 1;}
    }
    //获取记录总数
    rs.last();
    intRowCount = rs.getRow();
    //计算总页数
    intPageCount =(intRowCount+intPageSize-1) / intPageSize;//调整待显示的页码
    if(intPage>intPageCount) intPage = intPageCount;
    if(intPageCount>0){
    //将记录指针定位到待显示页的第一条记录上
    rs.absolute((intPage-1) * intPageSize+1);
    //显示数据
    i = 0;//if (rs.next()){
    while(i< intPageSize && !rs.isAfterLast()){
    int id=rs.getInt("id");
    String uuser=rs.getString("name");
    String nicheng=rs.getString("nickname");
    String pass=rs.getString("password");
    String email=rs.getString("email");
    String sex=rs.getString("sex");
    String time=rs.getString("lasttime");
    String ip=rs.getString("ip");%><tr align="center">
    <td><%=id%></td>
    <td><%=uuser%></td>
    <td><%=nicheng%></td>
    <td><%=pass%></td>
    <td><%=email%></td>
    <td><%=sex%></td>
    <td><%=time%></td>
    <td><%=ip%></td></tr>
    <%
    }
    rs.next();
    i++;
    }
    rs.close();
    stmt.close();
    con.close();
    %>
    </table>
    <table width="760" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr>
    <td align="left" width="126">&nbsp;
    <%out.print("共<font color=red>"+intRowCount+"</font>个主题 <font color=red>"+intPageSize+"</font>/页 共<font color=red>"+intPageCount+"</font>页");%>
    当前第<font color=red><%=intPage%></font>页 </td>
    <td width="634" height="23" align="right">&nbsp;
    <%if(intPage<=1){%>
    首页
    <%}else{%>
    <a href="main.jsp?pages=1">首页</a>
    <%}%>
    <%if(intPage>1){%>
    <a href="main.jsp?pages=<%=intPage-1%>">上一页</a>
    <%}else{%>
    上一页
    <%
    }%>
    <%if(intPage<intPageCount){%>
    <a href="main.jsp?pages=<%=intPage+1%>">下一页</a>
    <%}else{%>
    下一页
    <%
    }%>
    <%if(intPageCount<=1||intPage==intPageCount){%>
    尾页
    <%}else{%>
    &nbsp;<a href="main.jsp?pages=<%=intPageCount%>">尾页</a>&nbsp;
    <%}%>
    </td>
    </tr>
    </table>
    <%
    }
    catch(Exception e)
    {
    throw(e);
    }
    }
    %>
    </body>
    </html>
      

  2.   

    to chjiangsh() ( ) 信誉:100 
    先谢谢了,为什么要在这里定义
    Connection con = DriverManager.getConnection("DatabaseURL");
    Statement stmt = con.createStatement();我的conn.jsp数据库连接里面已经有了呀?
      

  3.   

    不同的页用自己的连接对象,而且需要时再去创建,不用是关闭.
    不要公共的使用一个conn.jsp里创建的conn对象.
    不要把PHP的那种包含页的思想拿到JSP中.
      

  4.   

    to mx1029() ( ) 信誉:96 如果这样的话会不会增加代码量呀?
    是不是在性能上有很大的提高?因为不了解,也许问了些无知的问题。目前自己试不出优越性来,谢谢。
      

  5.   

    你可以去看看java数据库连接池方面的资料,不存在代码量高,关键是你的写法没有完全按照面向对象的思想,很多都是面向过程的,正规的做法是写一个通用的数据库操作bean,里面包括的连接的取得和释放,以后只要在需要的地方(jsp,servlet都可以)里得到这个数据库bean的实例,便可获得数据库连接/关闭的操作.而且以后如果更改数据库等,只需要更改该bean就可以了,所有的程序都不需要调整.