Vimos em tópicos anteriores
que pacotes de classes ou classes individuais podem ser importados
para uma página JSP usando-se o atributo import
na diretiva de página: <%@
page import="java.util.*" %>
Neste tópico veremos como é possível criar
nossas próprias classes e usá-las em uma página
JSP. Será um bom exercício antes de estudarmos
JavaBeans. Comece escrevendo a seguinte classe:
Código para Estados.java:
package estudos;
public class Estados{
String selecionado;
String estados[] = {"GO", "MT",
"SP", "RJ", "TO",
"MA",
"RS", "MG", "CE", "SC"};
public Estados(String sel){
selecionado = sel;
}
public Estados(){
selecionado = estados[0];
}
public String toString(){
String html = "<select name=\"estado\">\n";
for(int i = 0; i < estados.length;
i++){
if(estados[i].equals(selecionado))
html += "
<option value=\"" + estados[i] + "\"
selected>" + 
estados[i] + "</option>\n";
else
html += "
<option value=\"" + estados[i] + "\">"
+ 
estados[i] + "</option>\n";
}
html += "</select>";
return html;
}
}
Experimente compilar esta classe e vamos analisá-la cuidadosamente.
O primeiro passo é observar que esta classe fará
parte de um pacote chamado estudos:
package estudos;
Assim, nossa primeira preocupação é como
disponibilizar a classe de modo que a aplicação
web a encontre. Nada muito complicado. Tudo que você tem
a fazer é criar um diretório chamado estudos
dentro do diretório classes que está
contido no diretório WEB-INF de sua
aplicação web. Agora copie o arquivo Estados.class
para o diretório recém-criado.
Nota: Se você fizer alterações na classe
depois de esta ser disponibilizada para o container, pode haver
a necessidade de reiniciar a aplicação web para
que as alterações sejam refletidas. Clique aqui
para aprender como fazer isso no Tomcat.
O nome de nossa classe personalizada é Estudos
e servirá para montar um elemento HTML select
contendo os nomes de todos os estados. Esta classe contém
duas variáveis globais. A primeira é apenas uma
String que armazenará o valor do estado que deverá
aparecer selecionado no elemento select:
String selecionado;
A segunda variável é um array do tipo String contendo
os estados a serem mostrados no elemento: String
estados[] = {"GO", "MT", "SP",
"RJ", "TO",
"MA",
"RS", "MG", "CE", "SC"};
Por questões de espaço não coloquei todos
os estados, faça isso se quiser usar este código
em uma aplicação real.
O primeiro construtor da classe receberá como argumento
o estado que deverá estar selecionado e o fornecerá
à variável global selecionado:
public Estados(String
sel){
selecionado = sel;
}
O segundo construtor (que pode ser chamado sem argumentos) simplesmente
fornece o primeiro elemento do array estados
à variável selecionado:
public Estados(){
selecionado = estados[0];
}
E agora a parte mais complexa da classe: o método toString.
É com o auxilio deste método que conseguimos montar
o elemento select na página. A primeira
linha do método: String
html = "<select name=\"estado\">\n";
cria uma variável chamada html e define
como seu valor a tag de abertura do elemento select.
Fique atento ao uso da barra de escape "\" para preservar
as aspas que circundam os valores fornecidos aos atributos do
elemento. A quebra de linha não é obrigatória.
Ela apenas ajudará na formatação do código
fonte da página.
Em seguida temos um laço for que é executado uma
vez para cada elemento do array estados:
for(int i = 0;
i < estados.length; i++){
// o código do laço vai aqui
}
Na primeira linha dentro deste laço nós testamos
se o valor do array sendo lido é igual ao conteúdo
da variável selecionado. Se o teste
resultar verdadeiro, nós acrescentamos o atributo selected
ao elemento option. Isso faz com que o valor
seja selecionado quando o elemento select for
exibido na página:
if(estados[i].equals(selecionado))
html += " <option value=\"" +
estados[i] + "\" selected>" + 
estados[i] + "</option>\n";
else
html += " <option value=\"" +
estados[i] + "\">" + estados[i] + 
"</option>\n";
se o teste resultar falso nós simplesmente criamos elementos
option com os valores do array.
A linha: return
html;
Devolverá à página JSP o conteúdo
HTML a ser exibido.
Pronto. A classe já está criada. Agora é
hora de testá-la em uma página JSP. Veja o código:
Código para testar_classe.jsp:
<%@ page language="java"
import="estudos.*" %>
<html>
<head>
<title>Importando classes personalizadas</title>
</head>
<body>
<form>
Selecione o Estado: <%= new Estados("MT") %>
</form>
</body>
</html>
Execute esta página e terá o resultado mostrado
na imagem seguinte:
Veja como a classe é importada: <%@
page language="java" import="estudos.*"
%>
Aqui estamos importando todo o pacote estudos.
Se quiser importar apenas a classe Estados,
basta alterar a diretiva para: <%@
page language="java" import="estudos.Estados"
%>
Observe agora a expressão JSP usada para exibir os estados
na página: <%=
new Estados("MT") %>
Tudo que fizemos aqui foi construir uma instancia da classe
Estados e fornecer o valor que deverá
aparecer selecionado no elemento select. Experimente
construir uma instancia usando o construtor padrão (sem
argumentos): <%=
new Estados() %>
Estude bastante este tópico. Será o ponto de partida
para o uso de JavaBeans e construções
de bibliotecas de tags personalizadas. |