2

2 つの JSP と 1 つの JavaBean が機能していません。Tomcat 6.0 を使用しています。最初の JSP は GetName.jsp で、C:\Tomcat\webapps\app1\GetName.jsp にあります。

<HTML>
<BODY>
<FORM METHOD=POST ACTION="NextPage.jsp">
What's your name? <INPUT TYPE=TEXT NAME=username SIZE=20><BR>
What's your e-mail address? <INPUT TYPE=TEXT NAME=email SIZE=20><BR>
What's your age? <INPUT TYPE=TEXT NAME=age SIZE=4>
<P><INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>

2 番目の JSP は NextPage.jsp で、C:\Tomcat\webapps\app1\NextPage.jsp にあります。

<jsp:useBean id="user" class="classes.UserData" scope="session"/> 
<HTML>
<BODY>
You entered<BR>
Name: <jsp:getProperty name="user" property="username" /><BR>
Email: <jsp:getProperty name="user" property="email" /><BR>
Age: <jsp:getProperty name="user" property="age" /><BR>
</BODY>
</HTML>

私の JavaBean、UserData は正しくコンパイルされ、クラス ファイルは C:\Tomcat\webapps\app1\WEB-INF\classes にあります。

package classes;

import java.io.Serializable;

public class UserData implements Serializable {
    String username;
    String email;
    int age;

    public UserData() {
    }

    public void setUsername( String value )
    {
        username = value;
    }

    public void setEmail( String value )
    {
        email = value;
    }

    public void setAge( int value )
    {
        age = value;
    }

    public String getUsername() { return username; }

    public String getEmail() { return email; }

    public int getAge() { return age; }
}

また、C:\Tomcat\webapps\app1\WEB-INF にある web.xml ファイルに次のものがあります。

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
</web-app>

私のGoogle検索は、クラスパスと関係があることを示唆しています。私のクラスパスは現在 .;C:\Tomcat\lib\servlet-api.jar です。

GetName.jsp に情報を入力してボタンをクリックすると、Tomcat は NextPage.jsp について次のように表示します。

org.apache.jasper.JasperException: /NextPage.jsp(1,1) The value for the useBean class attribute classes.UserData 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:1203)
    org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1160)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
    org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
    org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2399)
    org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
    org.apache.jasper.compiler.Generator.generate(Generator.java:3365)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

私はすべてを正しく行っていると断言できますが、明らかにそうではありません。髪を全部引きちぎる前に、何が悪いのか誰か教えてくれませんか? 前もって感謝します。

4

4 に答える 4

2

NextPage.jsp ファイルで Bean プロパティを設定する必要があります。

このように useBean ステートメントの後に次の行を追加します。

<jsp:useBean id="user" class="UserData" scope="session"/>
<jsp:setProperty name="user" property="*" /> 
于 2009-06-01T14:52:04.357 に答える
1

Java ファイル「UserData.java」をコンパイルすると、1 つのクラス file="UserData.class" が得られます。UserData.class がクラスの下の User にあることを確認してください。つまり、ファイル UserData.java および UserData.class の場所は、

..\Tomcat6.0\webapps\ROOT\WEB-INF\classes\UserData.java および ..\Tomcat6.0\webapps\ROOT\WEB-INF\classes\UserData.class

「classes」が WEB-INF に存在しない場合は、「classes」という名前の新しいフォルダーを作成してこれらのファイルを保存できます。Tomcat を再起動して変更を表示します。

于 2013-11-04T09:57:01.200 に答える
1

問題は、UserData.classファイルが間違ったディレクトリにあることです。つまり、UserData.class実際にはwebapps/app1/WEB-INF/classes/classes/UserData.class.

于 2009-06-01T02:25:03.900 に答える
0

問題は、クラスをパッケージとして参照しているようです。そうではなく、戦争中のクラスのルートディレクトリです。

クラスからパッケージ行を削除し、Bean を class="UserData" として参照し、何が起こるかを確認してください。

于 2009-06-01T02:18:17.890 に答える