一段简单jsp代码问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 13:31:27
<%@ page language="java" import="java.util.*" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<%@ page import="java.sql.*" %>
<%!
String str="";
private void showTree(Connection conn,int id,int level){
Statement stmt=null;
ResultSet rs=null;
String preStr="";
for(int i=0;i<level;i++){
preStr +="----";
}
try{
stmt = conn.createStatement();
String sql = "select * from article where pid = " + id;
rs = stmt.executeQuery(sql);

while(rs.next()){
str+="<tr><td>"+rs.getInt("id")+"</td><td>"+
"<a href='ShowArticleDetail.jsp?id="+rs.getInt("id")+"'>"+
preStr+ rs.getString("cont")+"</t

你定义的str变量在web服务器运行期内是不会销毁的,所以当你重复请求这个jsp时,str就会在第一次产生的内容后面添加你从数据库里面得来的数据,所以你每次刷新,都会新增一行,而且数据内容一样都是select * from article where pid=0的数据

建议用局部变量,因为在servlet在web服务器只有1个实例,其类变量会跟随servlet的生命周期,而局部变量则是每次访问servlet里面的方法都重新生成

方法内调自己。。。你用递归吗?