weblogic的jsp问题解决方法(2)_JSP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:JSP XML实现网页内容动态显示的方案
一、xml技术简介   XML(eXtensible Markup Language??可扩展标记语言)是一种 扩展的源标记语言,是可以定义其他语言的语言。   它是SGML的一个简化子集,这个子集是专为Web

问题7:
使用vector hashtable 一次返回查询结果resulset.

解决方法: 记录集:将一条记录放到一个hashtable里面,然后把它再
添加到vector里面,循环记录下结果集,返回vector
具体见后面的java文件的部分代码(不包扩数据库的连接和关闭)


package zjdx.bean.common;

/********************************************
***** Title: hashtable_vector_rs
***** Description: 数据显示
***** Copyright: Copyright (c) 2002
***** Company: DHC
***** author: wangyl
***** version: 1.0
***** 说明:
***** 记录集:一条记录用放到一个hashtable里面,然后把它再
放到vector里面,循环记录下结果集,返回vector

*********************************************/

import java.io.*;
import java.sql.*;
import java.util.*;
import java.text.*;

public class hashtable_vector_rs
{
/*----------------------------------------------------------------*/
/* 函数名称: getMultiRowInfo
/* 功能描述: 返回记录集,放到Hashtable里面
/* 参数: sql 语句,字段个数
/* 返回值: 成功---htable, 失败---null
/*----------------------------------------------------------------*/
public Vector ListResult(String sqlStatement,int num)
{
Vector ListRs=new Vector();

try
{
connectDB();
rs=stmt.executeQuery(sqlStatement);
//判断字段数据类型
//date型 返回 93
//int型 返回 2,4
//bigint型 返回 3
//String型 返回 12
//(char 型)返回 1
int t = -1;
rsmd = rs.getMetaData();
int ColumnCount=0;
if(num>0)
ColumnCount = num;
else
ColumnCount = rsmd.getColumnCount();
while(rs.next())
{
Hashtable htable =new Hashtable();
for (int i = 1; i <= ColumnCount; i )
{
t=rsmd.getColumnType(i);
System.out.println("i=" i ",t=" t "name=" rsmd.getColumnName(i));
if(t==12||t==1||t==3)
{
if(rs.getString(i)==null|| rs.getString(i).equals(""))
htable.put(rsmd.getColumnName(i),"");
else
htable.put(rsmd.getColumnName(i),rs.getString(i));
}
else if(t==93)
{
htable.put(rsmd.getColumnName(i),rs.getDate(i).toString());
}
else if(t==2||t==4)
{
htable.put(rsmd.getColumnName(i),Integer.toString(rs.getInt(i)));
}
}
ListRs.add(htable);
}//e
return ListRs;
}
catch(Exception listError)
{
System.out.println("数据库操作失败!" listError);
return null;
}
finally
{
try
{
closeDB();
}
catch(Exception closeErr)
{
System.out.println("关闭数据库出错:" closeErr);
}
}
}
}

问题8: jsp的程序也有设计的不够合理的地方
例如:选择一个下拉框,提交一次,列出所选的数据,选择另外一个下拉框再次提交,再次列出所选的数据。
解决方法:
尽量一次把条件选择完毕,然后列出所选择的数据,并且在数据多的时候,尽量使用翻页,减少运行时间。

问题9:性能优化,尽量使用PreparedStatement
解决方法:
PreparedStatement 对象和使用的普通的 Statement 对象有两点不同。
第一, 它们是为了性能更快而由 JDBC 驱动程序或数据库编译(预编译)的。
第二, 它们接受一个或多个动态输入参数,称为 IN 参数。这两点让 PreparedStatement 对象适用于重复的 SQL 操作,其中操作基本上都是一样的,只有微小的差异(如数据载入)。要让 SQL 语句在使用前预备好,在 PreparedStatement 对象创建时必须将 SQL 传送到 JDBC 驱动程序,而不是在其执行时才传送。

IN 参数用 SQL String 中的 ? 占位符表示。在 PreparedStatement 能够成功地执行前,还必须调用 PreparedStatement 对象的 setXXX() 方法来设置 IN 参数,在这里 XXX 被设置的参数的数据类型所替换。因而,要将第一个 IN 参数设置为整数值 100,您应该调用 setInt(1, 100)。同样地,要将第二个 IN 参数设置为字符串值“rjb”,您应该调用 setString(2, "rjb")。最后一点是,设置好的参数值在设置为一个新的值,或用 clearParameters() 显式地清除之前会保持不变。这很重要,因为 PreparedStatement 可以被多次执行;如果您不注意的话,就会让您的数据库充满无用数据。
问题10 :
1、我把包含SQLBridge 的java文件改了一遍,有32个java文件(已经改完)。
2、我把包含SQLPool 的java文件改了一遍,有27个java文件(已经改完)。
3、我把不用的jsp文件整理了一下,大概有17 个目录的jsp文件不用或者没有上线。(整理完毕)
问题11:提交页面,每次都提交两次。
原因:
1、

这里如果type=”sbumit”,页面就会提交两次。(花费了一天的时间才找到原因)。
在onclick事件里面会提交一次,而submit 按钮本身也会提交一次。

解决方法:
如果在onclick 事件里面提交页面,按钮的类型type 一定不可以是”submit” 按钮。
可以是”button”.
全文搜索共有33个类似的文件。
java.net.SocketException: ReadFile failed: 指定的网络名不再可用。
主要是由于这个引起的。
问题12:定时刷新页面,600秒(不是必要的,不要这样做)
原因:

解决方法:
去掉这样的语句。

全文搜索共有12个类似的文件。

问题13:在跳转到别的页面的时候,要加return。
否则可能会引起错误。跳转不过去。
If{
request.getRequestDispatcher("/zjdx/jsp/common/ErrorPage.jsp?s_mark=error:record have existed").forward(request,response);
return;
}
else
{
response.sendRedirect();
//建议用上面的方法
return;
}

分享:实例讲解在JSP开发中的对象和范围属性
在JSP页面中的对象,包括用户创建的对象(例如,JavaBean对象)和JSP的隐含对象,都有一个范围属性。范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象。例如,session对象在会

共2页上一页12下一页
来源:模板无忧//所属分类:JSP教程/更新时间:2008-08-22
相关JSP教程