小弟初学JSP,现在正在用eclipse
我按照书上和到网上找的资料配置好了开发环境后,JSP却一直不能正常运行,但又发现不了错误,只能来麻烦大家了,请帮帮忙下面是我写的两个JAVABEAN和JSP文件package wen;
import java.sql.*;
import java.io.*;
import java.util.Properties;
public class DBConnection 
{       
  
private static String driver;
private static String serverURL;
private static String username;
private static String password;
private static Connection conn = null;
private static Statement stmt = null;
private static String connectionFileName="connection.txt";
private String str;

private static Object initLock = new Object();  public Connection getConn() {
      return conn;
  } public static Connection getConnection()
{
          
          
if(conn == null){
synchronized(initLock){
loadProperties();
try{
Class.forName(driver);
}
catch(ClassNotFoundException e){
System.out.println(e.toString());
}
try{
conn = DriverManager.getConnection(serverURL,username,password);
}
catch(SQLException e){
System.out.println(e.toString());
}
}

}
return conn;
}
public static void loadProperties(){
Properties connectionAdmin = new Properties();
System.out.println("连接配置文件:" + connectionFileName);
try{
connectionAdmin.load(new FileInputStream(connectionFileName));
}
catch(IOException e){
System.out.println("找不到文件" + connectionFileName);
System.out.println(e.toString());
}
driver = (String)connectionAdmin.get("driver");
serverURL = (String)connectionAdmin.get("serverURL");
username = (String)connectionAdmin.get("username");
password = (String)connectionAdmin.get("password");

} public static ResultSet exec(String sql){
ResultSet rs = null;
try{
if(conn == null){
getConnection();
}
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}catch(SQLException ex){
ex.printStackTrace();
}
return rs;
}}
package wen;
import java.sql.*;public class IndexBean {



public  ResultSet getMoban(){


return DBConnection.exec("select * from MoBan");

}
}
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<jsp:useBean id="index" class="wen.IndexBean" scope="page"/>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF">
<%
ResultSet rs = index.getMoban();
while(rs.next()){
long mb_id = rs.getLong("MB_id");
String mb_name = rs.getString("MB_name");
%>
<table>
<tr>
<td><%=mb_name%></td>
</tr>
</table>
<%
}
%>
</body>
</html>两天了,我一直找不出原因,麻烦大家帮忙看下问题在哪,这是报的错误HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception 
org.apache.jasper.JasperException: /index1.jsp(3,0) The value for the useBean class attribute wen.IndexBean is invalid.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1175)
org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1117)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2164)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2214)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2220)
org.apache.jasper.compiler.Node$Root.accept(Node.java:457)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2164)
org.apache.jasper.compiler.Generator.generate(Generator.java:3322)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:299)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.

解决方案 »

  1.   

    <%@ page import="java.sql.*" %><!-- 这里加一句 -->
    <%@ page import="wen.*" %><jsp:useBean id="index" class="wen.IndexBean" scope="page"/>
      

  2.   

    我试了一下,没有问题。你是否已经编译好了IndexBean,得到了IndexBean.class
    这个IndexBean.class是不是已经放在WEB-INF/classes下面,带包路径,也就是
    /WEB-INF/classes/wen/IndexBean.class
      

  3.   

    JavaBean需要显式声明一个构造函数
      

  4.   

    javaBean中不带参数的构造方法不是必需的。
      

  5.   

    /index1.jsp(3,0)  這裡开始出错
    不要在Jsp中写入Java代码,如果是标签库,检查标签库语法。
      

  6.   

    useBean是个创建实例的过程,没有构造函数怎么去new 一个 instance?
      

  7.   

    我是在eclipse下面写的,新建一个项目之后直接就新建JSP文件和JAVABEAN,IndexBean.class这个文件生成在wen目录下,并没有web-inf这个目录
      

  8.   

    估计楼主建的项目不是WEB项目,class应该放在WEB-INFO下
      

  9.   

    创建的是lomboz j2ee project项目
    不是这个吗?我只找到这个可以创建JSP的项目
      

  10.   

    JavaBean 一定要  保证有个 默认构造函数。  实现 java.io.Serializable,  属性不能有 public ,外界必须通过 getter / setter 访问.不符合这个要求不算是完整的 JavaBean.
    --------------
    话说三遍淡如水,不多说了
      

  11.   

    org.apache.jasper.JasperException: /index1.jsp(3,0) The value for the useBean class attribute wen.IndexBean is invalid.
    这个是页面报错啊   你看看你的页面 引用javabean 的时候是不是又问题啊
      

  12.   

    楼上的.构造方法不用显示去写,会有一个默认的构造方法的.你装一个mYECLISPE.去建TOMCAT工程,或WEB工程吧.
      

  13.   

    不管你的Eclipse会不会帮你正常发布了,你自己先创建在web应用的目录下创建一个WEB-INF目录,然后在里面创建一个classes目录,再把 wen/IndexBean.class拷贝进去(带目录结构),或者你干脆直接把wen目录拷贝进去好了。
    然后再运行服务器试试行不行。
      

  14.   

    不需要显示的写一个构造方法。javabean 的写法只要没问题,引用没问题的话,是可以的。public class名(){
        一些内部属性   方法一   方法二}
    eclipse对jsp文件的管理是比较方便的,除了楼上各位的部署方法以外,还可以用 eclipse 的 file ---》 中的  Export 中,对jsp工程进行打包,生成 war文件,这个文件放在tomcat下,用浏览器就可以解压缩的。最后回答你的问题:jababean是 jsp中一个部分,和 eclipse 这个IDE 没有任何关系! IDE只是工具而已!
      

  15.   

    显示的构造方法是多此一举,所有属性都有相对应的get和set对,大小写也很严格区分,同意楼上的说法,与IDE环境没有关系
      

  16.   

    HAHA,你是用的MyEclipse查件吗?如果你没用这个查件,那你可麻烦了,和楼上的几位说的一样,你要弄xml classes文件下保存bean的calss文件,等等,以后你用过滤器,舰艇器等等,你最好先用个MyEclipse查件,这样就方便多了, 记得把项目传到TOMCAT服务器上
      

  17.   

    不是代码的问题.
    其实就是对javabean的部署和使用过程不了解.把javabean.class文件放到WEB-INF/CLASSES/wen 下边 再重新调用一次就因该可以了.