我对Head First servlets的以下两行感到困惑&第349页的JSP书籍:
2.使用声明和使用intializea属性。
<jsp:useBean> <jsp:useBean id="person"class="foo.Person" scope="request"/>在第一行中,他们为什么将属性作为对象调用?
因为属性是与作用域绑定的名称/值对,比如请求会话。
发布于 2009-07-01 15:26:16
<jsp:useBean id="person"class="foo.Person" scope="request"/>这将调用foo.Person的默认构造函数。
id "person“允许您在jsp页面上引用Bean
<div>
<c:out value="${person.name}" />
</div>作用域是Bean foo.Person的作用域
用于useBean的JSP语法引用对每个作用域都有定义。
所以你的JavaBean看起来会像这样
package foo;
public class Person {
private String name;
public Person() {
this.name = "jack"
}
public String getName() {
return name;
}
public void setName(String n) {
this.name = n;
}
}如果Person Bean已经在您的引用范围中实例化,useBean将定位并提供Bean,以便在您的JSP页面上的表达式和抄写器中使用。
发布于 2009-06-30 09:06:33
<jsp:useBean id="person" class="foo.Person" scope="request"/>在这一行中,请求范围中的属性"person“将是"foo.Person”类型的对象实例。
Apache 6实现将标记转换为以下Java代码:
foo.Person person = null;
synchronized (request) {
person = (foo.Person) _jspx_page_context.getAttribute("person",
PageContext.REQUEST_SCOPE);
if (person == null){
person = new foo.Person();
_jspx_page_context.setAttribute("person", person,
PageContext.REQUEST_SCOPE);
}
}_jspx_page_context是PageContext的一个实例。
https://stackoverflow.com/questions/1062111
复制相似问题