тег useBean - PullRequest
       26

тег useBean

3 голосов
/ 30 июня 2009

Я действительно запутался в следующих двух строках сервлетов Head First и книги JSP на странице №. 349

  1. Это способ объявления и инициализации фактического объекта bean, в котором вы используете.

2. Объявите и запустите атрибут bean-компонента с

<jsp:useBean> <jsp:useBean id="person"class="foo.Person" scope="request"/>

В первой строке, почему они вызвали атрибут как объект?

Так как атрибут является парой имя / значение, связанной с областью действия, такой как запрос, сессия.

Ответы [ 2 ]

1 голос
/ 01 июля 2009
<jsp:useBean id="person"class="foo.Person" scope="request"/>

Это вызывает конструктор по умолчанию для foo.Person

Идентификатор "персона" позволяет вам ссылаться на Бин на вашей странице JSP

<div>   
    <c:out value="${person.name}" />
</div>

Область действия - это область действия для bean foo.Person

Справочник по синтаксису JSP для useBean содержит определения для каждой области.

Так что ваш 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.

0 голосов
/ 30 июня 2009
<jsp:useBean id="person" class="foo.Person" scope="request"/>

В этой строке атрибут"персона" в области запроса будет объектом экземпляра типа "foo.Person".

Реализация Apache Tomcat 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);
    }
  }

& # x005F; jspx & # x005F; page & # x005F; контекст является экземпляром PageContext .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...