破釜沉舟论坛 » WEB 开发 » 关于jsp使用Bean的问题

2006-4-5 21:47 xiaoyahuihui
关于jsp使用Bean的问题

  tomcat自带的猜数字例子都无法实现,请教高手指点,报错如下(运行环境:jdk1.5.0+tomcat5.5.16):

exception

org.apache.jasper.JasperException: /myWeb/number.jsp(9,0) The value for the useBean class attribute NumberGuessBean is invalid.
   org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
   org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
   org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
   org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

org.apache.jasper.JasperException: /myWeb/number.jsp(9,0) The value for the useBean class attribute NumberGuessBean is invalid.
   org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
   org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
   org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
   org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1174)
   org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
   org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
   org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
   org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
   org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
   org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
   org.apache.jasper.compiler.Generator.generate(Generator.java:3304)
   org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
   org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
   org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
   org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
   org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
   org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
   org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
   org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

2006-4-6 11:37 xiaoyahuihui
怎么没有人回复啊?帮个忙吧,我很着急!

2006-4-6 13:49 xiaoyahuihui
也不知道是怎么回事,重启了机子以后猜数字页面竟然能正常显示了,只是,我自己的一个小型示范例子却还是不能显示,例子如下:
login.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<title>登录测试</title>
</head>

<body>

<table width="28%" border="0" align="center">
<form action="test.jsp" method="POST">
<tr>
   <td colspan="2" align="center">Login</td>
  </tr>
  <tr>
   <td width="30%">Username:</td>
   <td width="70%"><input name="username" type="text" id="username" /></td>
  </tr>
  <tr>
   <td>Password:</td>
   <td><input name="password" type="password" id="password" /></td>
  </tr>
  <tr>
   <td colspan="2" align="center"><input type="submit" name="Submit" value="Register" /></td>
  </tr>
  </form>
</table>
</body>
</html>

test.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<title>Test</title>
</head>
<%@ page import = "userbean" %>
<body>
<jsp:useBean id="hello" class="userbean" scope="session"/>
<jsp:setProperty name="hello" property="*"/>
your username is:<jsp:getProperty name="hello" property="username"/>
<br>
your password is:<jsp:getProperty name="hello" property="password"/>
<br>
<%
out.println(hello.insert);
%>
</body>
</html>

userbean.java
import java.sql.*;
public class userbean
{
      private String username;
      private String password;       

      public void setUsername(String username)

      {
             this.username=username;
      }

      public void setPassword(String password)

      {
             this.password=password;
      }

      public String getUsername()

      {
             return username;
      }

      public String getPassword()

      {
             return password;
      }
      public String insert()
      {
             try
             {
                 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                 String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=myWeb";
                 String user="sa";
                 String password="";
                 Connection  conn=DriverManager.getConnection(url,user,password);
                 //Connection dbcon=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=myWeb","sa","");
                 Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
                 String sql="insert into userInfo(username,password) values('"+username+"','"+password+"')";
                 stmt.executeUpdate(sql);
                 return "register successfully";
             }

             catch(Exception e)
             {
                 System.out.println(e);
                 return e.toString();
             }
      }
}

2006-4-7 08:59 xiaocao-x
你应该把你的bean放到WEB-INF/class下面的一个文件夹里。再引用相应的bean。

2006-4-7 16:51 xiaoyahuihui
我本来就已经把bean放在WEB-INF/classes目录下了,但是一直提示错误信息。后来我发现将.class文件直接放在WEB-INF/classes目录下,运行时会出现找不到bean的错误,如果放置在一个包下,就可以正常运行,具体因为什么我也不清楚,我认为不妨在包下也应该正常运行才对。现在问题已经解决,仍然谢谢。

2006-4-7 17:14 xiaocao-x
应该在classes下面再建一个文件夹,把你的bean放到那个文件夹里面。

页: [1]
查看完整版本: 关于jsp使用Bean的问题


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.