Java 标准动作
我真的不明白为什么JSP中的以下代码运行良好,但正如Head first一书中所描述的,它将显示编译时错误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
<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中运行它时不是这样的。