非常怪的编译提示恳请大家帮忙看看

jinqiao0078 2003-04-16 03:54:49
在TOMCAT4.0下编译却提示:
F:\JBuilder7\jakarta-tomcat-4.0.3\work\localhost\examples\jin\add$jsp.java:5: Class or interface declaration expected.
import javax.servlet.*;
^
郁闷怎么会这样呢这是源代码大家可复制编译一下(直接保存为一个JSP文件在启动TOMCAT打开看看即可)

<%@page contentType="text/html;charset=gb2312" %>
<%@page import="java.sql.*,javax.servlet.*;"%>

<%!


public class SQLBridge{
private Connection conn;
private ResultSet rs;
private ResultSetMetaData rsmd;
private Statement stmt;
private String driverName;
private String jdbcURL;
private String username;
private String password;

public SQLBridge(){
conn=null;
rs=null;
rsmd=null;
stmt=null;
}

public void openDB(String drvName,String url,String uname,String passwd)
throws SQLException{
if(conn!=null&&!conn.isClosed()) throw new SQLException(
"The connection has been established already.");
clearResult();
try{
Class.forName(drvName);
}catch(ClassNotFoundException ex){
throw new SQLException(ex.toString());
}
conn=DriverManager.getConnection(url,uname,passwd);
}

private void clearResult() throws SQLException{
if(rs!=null) rs.close();
rs=null;
if(stmt!=null) stmt.close();
stmt=null;
rsmd=null;
}

public int execSQL(String sqlStmt)throws SQLException{
if(conn==null||conn.isClosed())
throw new SQLException("this connection has not been established yet.");
if(sqlStmt==null)
throw new SQLException("SQL-statement is null.");
clearResult();
conn.setAutoCommit(true);
stmt=conn.createStatement();
if(sqlStmt.toUpperCase().startsWith("SELECT")){
rs=stmt.executeQuery(sqlStmt);
rsmd=rs.getMetaData();
return -1;
}else{
int numRow=stmt.executeUpdate(sqlStmt);
clearResult();
return numRow;
}
}

public void execUpdate(String[] sqlStmts) throws SQLException{
if(conn==null||conn.isClosed())
throw new SQLException("the connection has not been established yet.");
if(sqlStmts==null||sqlStmts.length==0)
throw new SQLException("SQL-statement is null.");
clearResult();
conn.setAutoCommit(false);
try{
for(int i=0;i<sqlStmts.length;i++){
stmt=conn.createStatement();
stmt.executeUpdate(sqlStmts[i]);
stmt.close();
}

conn.commit();
}
catch(SQLException ex){
conn.rollback();
throw ex;
}
}

public boolean nextRow() throws SQLException{
if(rs==null) throw new SQLException("ResultSet is null.");
return rs.next();
}

protected Object getField(int column,boolean convertToString) throws SQLException{
if(rs==null||rsmd==null)
throw new SQLException ("ResultSet is null.");
switch(rsmd.getColumnType(column)){
case Types.BIGINT:
if(convertToString) return String.valueOf(rs.getLong(column));
else return new Long(rs.getLong(column));

case Types.BINARY:
if(convertToString) return Byte.toString(rs.getByte(column));
else return new Byte(rs.getByte(column));

case Types.BIT:
if(convertToString) return String.valueOf(rs.getBoolean(column));
else return new Boolean(rs.getBoolean(column));

case Types.CHAR:
return rs.getString(column);

case Types.DATE:
if(convertToString) return (rs.getDate(column)).toString();
else rs.getDate(column);

case Types.DECIMAL:
if(convertToString)
return (rs.getBigDecimal(column,rsmd.getScale(column))).toString();
else return rs.getBigDecimal(column,rsmd.getScale(column));

case Types.DOUBLE:
if(convertToString) return String.valueOf(rs.getDouble(column));
else return new Double(rs.getDouble(column));

case Types.FLOAT:
if(convertToString) return String.valueOf(rs.getDouble(column));
else return new Float(rs.getDouble(column));

case Types.INTEGER:
if(convertToString) return String.valueOf(rs.getInt(column));
else return new Integer(rs.getInt(column));

case Types.LONGVARBINARY:
if(convertToString) return (rs.getBinaryStream(column)).toString();
else return rs.getBinaryStream(column);

case Types.LONGVARCHAR:
return rs.getBinaryStream(column);

case Types.NULL:
if(convertToString) return "NULL";
else return null;

case Types.NUMERIC:
if(convertToString)
return (rs.getBigDecimal(column,rsmd.getScale(column))).toString();
else return rs.getBigDecimal(column,rsmd.getScale(column));

case Types.REAL:
if(convertToString) return String.valueOf(rs.getFloat(column));
else return new Float(rs.getFloat(column));

case Types.SMALLINT:
if(convertToString) return String.valueOf(rs.getShort(column));
else return new Short(rs.getShort(column));

case Types.TIME:
if(convertToString) return (rs.getTime(column)).toString();
else return rs.getTime(column);

case Types.TIMESTAMP:
if(convertToString) return (rs.getTimestamp(column)).toString();
else rs.getTimestamp(column);

case Types.TINYINT:
if(convertToString) return String.valueOf(rs.getByte(column));
else return new Byte(rs.getByte(column));

case Types.VARBINARY:
if(convertToString) return (rs.getBytes(column)).toString();
else return rs.getBytes(column);

case Types.VARCHAR:
return rs.getString(column);

default:
if(convertToString) return (rs.getObject(column)).toString();
else return rs.getObject(column);
}
}

public int getColumnCount() throws SQLException{
if(rsmd==null) throw new SQLException("resultset isnull.");
return rsmd.getColumnCount();
}

public String[] getColumnNames() throws SQLException{
if(rsmd==null) throw new SQLException("resultset is null.");
String[] columnNames=new String[getColumnCount()];
for(int i=1;i<=columnNames.length;i++)
columnNames[i-1]=rsmd.getColumnName(i);
return columnNames;
}

public Object getField(int column) throws SQLException{
return getField(column,false);
}

public Object getField(String fieldName) throws SQLException{
return getField(rs.findColumn(fieldName),false);
}

public String getFieldString(int column) throws SQLException{
return (String)getField(column,true);
}

public String getFieldString(String fieldName) throws SQLException{
return (String)getField(rs.findColumn(fieldName),true);
}

//关闭数据库

public void closeDB() throws SQLException{
clearResult();
if(conn==null) throw new SQLException("this connection has been closed already.");
if(conn.isClosed()) throw new SQLException("this connection has been closed.");
conn.close();
conn=null;
}

//添加隔外的SETXXX()函数以使本BEAN()能以〈JSP:SETPROPERTY〉方法使用。
public void setConnectionSwitch(String on_off) throws ServletException{
try{
if(on_off.equalsIgnoreCase("ON"))
openDB(driverName,jdbcURL,username,password);
else if(on_off.equalsIgnoreCase("OFF"))
closeDB();
}
catch(SQLException ex){
throw new ServletException(ex.toString());
}
}

public void setDriverName(String drvName){
driverName=drvName;
}

public void setJdbcURL(String url){
jdbcURL=url;
}

public void setUserName(String uname){
username=uname;
}

public void setPassword(String passwd){
password=passwd;
}


}
%>
...全文
19 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinqiao0078 2003-04-17
  • 打赏
  • 举报
回复
为了给你一百分我年了半天方法
jinqiao0078 2003-04-17
  • 打赏
  • 举报
回复
事实证明,gaojunbo(飞马----结网ing) 说的是对的.100分全部献上.
非常感谢你!
gaojunbo 2003-04-16
  • 打赏
  • 举报
回复
<%@page import="java.sql.*,javax.servlet.*;"%>
^^
<%@page import="java.sql.*,javax.servlet.*"%>
不要那个分号.
dutbreak 2003-04-16
  • 打赏
  • 举报
回复
<%@ page import="javax.servlet.http.*%>
acefr 2003-04-16
  • 打赏
  • 举报
回复
谁教你那样写的?
写成这样试试:
<%@page import="java.sql.*"%>
<%@page import="javax.servlet.*"%>
jinqiao0078 2003-04-16
  • 打赏
  • 举报
回复
还有我将servlet.jar加到classpath中在DOS下用JAVAC可以编译通过但在JSP环境下还是
不行的我的意思是把上面写的类改成纯JAVA模式可以用JAVAC编译通过但在JSP环境下
还是不行
jinqiao0078 2003-04-16
  • 打赏
  • 举报
回复
把servlet.jar加到classpath中.确实可以解决问题!!问题是我在TOMCAT4.0下编译,

按理说服务器会自行加入该SERVLET.JAR

jinqiao0078 2003-04-16
  • 打赏
  • 举报
回复
我发现我这样写也有同样的问题:
<%@page contentType="text/html;charset=gb2312" %>
<%@page import="java.sql.*,javax.servlet.*;"%>
<%!
public class SQLBridge{
public SQLBridge(){
}
}
%>
问题好象出在<%@page import="java.sql.*,javax.servlet.*;"%>
上谁能给一个解答
gaojunbo 2003-04-16
  • 打赏
  • 举报
回复
把servlet.jar加到classpath中.
fanciex 2003-04-16
  • 打赏
  • 举报
回复
so long!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧