Questão nº 34
Questão de Java EE · FCC TRE-PR 2017 (nº 34)
Em uma aplicação web que utiliza JavaBeans há a seguinte classe:
```java
package user;
public class User {
private String user="João";
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
}
```
Ao executar a aplicação, comandos da página index.jsp exibiram no navegador o conteúdo abaixo.
Usuário: João
Os comandos que estão no corpo da página index.jsp são:
- A
<% User u=new User();%>
Usuário:${u.user} - B`<jsp:useBean id="u" class="user.User" />`
Usuário: `<jsp:getProperty name="u" property="user" />` (alternativa correta) - C`<%User u=new User();%>`
Usuário: `<%! u.getUser();%>` - D`<jsp:setBean var="u" class="user.User" />`
Usuário: `<jsp:getProperty name="u" property="user" />` - E`<jsp:useBean obj="u" class="user.User" />`
Usuário: `<jsp:getUser name="u" property="user" />`
Resposta comentada
Gabarito Alternativa B
JSP (JavaServer Pages) permite criar páginas web dinâmicas misturando HTML com código Java. JavaBeans são classes Java que seguem um padrão específico (construtor sem argumentos, métodos get e set para propriedades) e são usadas para encapsular dados, sendo facilmente manipuladas por JSP.
- (A) Incorreta: Embora o código
<% User u=new User();%>e${u.user}funcione e produza o resultado esperado (instanciando o JavaBean e acessando sua propriedade via Expression Language), a questão busca a forma padrão de interagir com JavaBeans usando as ações JSP dedicadas. Esta é a armadilha mais tentadora, pois o código é funcional, mas não utiliza as tags específicas de JSP para JavaBeans. - (B) Correta: A tag
<jsp:useBean id="u" class="user.User" />é a ação JSP padrão para encontrar ou criar uma instância da classeuser.Usere associá-la ao IDu. A tag<jsp:getProperty name="u" property="user" />é a ação JSP padrão para acessar o valor da propriedadeuser(chamando o métodogetUser()) do JavaBean com o IDue exibi-lo na página. Juntas, elas representam a maneira correta e idiomática de usar JavaBeans com ações JSP. - (C) Incorreta: A tag
<%! u.getUser();%>é um scriptlet de declaração, usado para declarar variáveis ou métodos na classe gerada pelo JSP, não para executar código que produz saída. Para exibir o valor de uma expressão, seria necessário usar um scriptlet de expressão (<%= u.getUser() %>). Além disso,useria uma variável local do scriptlet anterior, não acessível diretamente no scriptlet de declaração. - (D) Incorreta: Não existe uma ação JSP padrão chamada
<jsp:setBean>. A ação correta para instanciar ou referenciar um JavaBean é<jsp:useBean>. - (E) Incorreta: A tag
<jsp:useBean>usa o atributoidpara nomear o JavaBean, nãoobj. Além disso, não existe uma ação JSP padrão chamada<jsp:getUser>; a ação correta para obter uma propriedade é<jsp:getProperty>.
Fonte: FCC TRE-PR 2017 Analista Judiciário - Área Apoio Especializado - Especialidade Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.