2009-06-30 10 views
3

Je suis vraiment confus dans les deux lignes suivantes des servlets Head First: & JSP book of no. 349:useBean tag

  1. Ceci est une façon de déclarer et d'initialiser l'objet réel dans lequel vous vous trouvez.

2. Déclarez et intializea attribut de haricot avec

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

Dans la première ligne, pourquoi ils ont appelé un attribut comme un objet?

Étant donné que l'attribut est une paire nom/valeur liée à la portée, comme une demande, une session.

Répondre

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

Dans cette ligne, l'attribut "personne" dans le cadre de la demande sera un objet exemple de type "foo.Person".

La mise en œuvre Apache Tomcat 6 traduit la balise à ce code 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, le contexte est une instance de PageContext.

+0

Je pense que vous vous trompez car l'objet est une instance, mais vous considérez l'instance comme une référence plutôt que comme un objet. Corrigez-moi si je me trompe. – Greenhorn

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

Ce appelle le constructeur par défaut pour foo.Person

L'id "personne" vous permet de référencer Bean sur votre page jsp

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

Le champ d'application est la portée de la Bean foo.Person

JSP syntax reference for useBean a des définitions pour chaque étendue.

Alors votre JavaBean ressemblerait à quelque chose comme ça

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; 
    } 

} 

Si la personne Bean a déjà été instancié dans votre champ référencé, le useBean localisera et mettre à la disposition Bean pour une utilisation dans les expressions et scriplets sur votre JSP page.