Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 标准动作_Java_Jsp_Servlets_Javabeans - Fatal编程技术网

Java 标准动作

Java 标准动作,java,jsp,servlets,javabeans,Java,Jsp,Servlets,Javabeans,我真的不明白为什么JSP中的以下代码运行良好,但正如Head first一书中所描述的,它将显示编译时错误 <html><body> <jsp:useBean id="person" type="foo.Person" scope="request"> <jsp:setProperty name="person" property="name" value="Fred"/> </jsp:useBean> <jsp:getP

我真的不明白为什么JSP中的以下代码运行良好,但正如Head first一书中所描述的,它将显示编译时错误

<html><body>

<jsp:useBean id="person" type="foo.Person"  scope="request">
<jsp:setProperty name="person" property="name" value="Fred"/>
 </jsp:useBean>
 <jsp:getProperty name="person" property="name"/>

</body></html>
在servlet类中实例化foo.Person并将其设置为请求范围中的属性“Person”的代码是:

Person1 p=new Person();
p.setName("Greenhorn");
request.setAttribute("person",p);
Person1bean类的代码是:

 package foo;

public class Person extends foo.Person1
{
private String s;

public void setEmpID(String s)
{
  this.s=s;
  }
  public String getEmpID()
  {
     return s;
  }


  }
package foo;

 public abstract class Person1
{


private String s;

public void setName(String s)
{
  this.s=s;
  }
  public String getName()
  {
     return s;
  }


  }
它为什么起作用?为什么它没有显示任何错误?这本书错了吗


提前谢谢你的建议。

我看了这本书。在第354页,它将Person更改为抽象类,并创建Employee的子类,以说明如何指定useBean的type属性。type参数告诉页面以后要使用哪个类作为引用。class属性告诉页面要恢复哪个对象


编辑:第356页上的黑框说明:“如果使用类型而不使用类bean,则必须已经存在。”书中示例中的作用域是page而不是request。

但在上面的代码中,JSP具有值为“foo.Person”的type属性,但在servlet中,引用实际上声明为“foo.Person1 p=new foo.Person();”。这意味着它应该是不正确的,但我在Tomcat中运行它时不是这样的。