Escolar Documentos
Profissional Documentos
Cultura Documentos
Servlets
1. OBJETIVOS
Introduzir a plataforma Java no desenvolvimento de Aplicaes Web.
Construir Aplicaes Web do tipo Servlets.
2. CONTEDOS
Arquitetura e ciclo de vida dos Servlets.
Construindo e distribuindo aplicaes com Servlets.
Processamento de formulrios.
4. INTRODUO
A Unidade 2 representou uma oportunidade para aprender as linguagens de marcao
HTML e XHTML, bem como para estudar os conceitos de Folha de Estilo em Cascata.
Nesta unidade, voc aprender como desenvolver Aplicaes Web utilizando a tecnologia
Java Servlets. Para tanto, sero apresentados os aspectos principais a respeito da arquitetura e
do ciclo de vida de uma Aplicao utilizando Servlet.
Alm disso, voc estudar como realizar o processamento de requisies de formulrios
Web por meio de Servlets, alm de construir uma Aplicao completa utilizando a tecnologia.
Bom estudo!
6. ESTRUTURA BSICA
Para entendermos perfeitamente o funcionamento de um Servlet, vamos estudar passo a
passo como escrever, distribuir e executar um Servlet. Para isso, no utilizaremos nenhum tipo
de ambiente de desenvolvimento.
Vamos comear:
a) 1 passo criao de uma estrutura de diretrios para armazenamento do cdigo
fonte. Desse modo, crie a seguinte estrutura de diretrios:
b) 2 passo abra o editor de texto de sua preferncia e escreva o cdigo fonte a seguir.
Salve o arquivo na pasta src com o nome de OlaMundoServlet.java. Neste exemplo,
criaremos um Servlet do tipo HttpServlet que processa requisies do tipo GET:
1 import javax.servlet.*;
2 import javax.servlet.http.*;
3 import java.io.*;
4
5 public class OlaMundoServlet extends HttpServlet{
6
7 public void doGet(HttpServletRequest request,
8 HttpServletResponse response)
9 throws IOException{
10
11 PrintWriter out = response.getWriter();
12 out.println(<html> +
13 <body> +
14 <p> +
15 Ol Mundo! +
16 </p> +
17 </body> +
18 </html>);
19 }
20 }
c) 3 passo para distribuio dos Servlets necessrio que seja criado um Deployment
Descriptor (DD) com o nome de web.xml. Este arquivo contm todas as especifica-
es da Aplicao e ser utilizado pelo Servidor Web (Apache Tomcat) para execuo
da Aplicao.
O arquivo criado (web.xml) dever ser armazenado na pasta etc:
d) 4 passo: vamos agora compilar o cdigo fonte OlaMundoServlet.java. Para isso, den-
tro do diretrio projOlaMundo, digite o comando a seguir:
javac c classpath c:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0\
lib\servlet-api.jar d classes src/OlaMundoServlet.java
U3 - Servlets 45
A instalao padro da verso 6.0 do Apache Tomcat utiliza o seguinte caminho: C:\Arqui-
vos de programas\Apache Software Foundation\Tomcat 6.0\webapps.
f) 6 passo: copie o arquivo web.xml para a pasta WEB-INF dentro do diretrio da Apli-
cao appOlaMundo.
g) 7 passo: copie o arquivo OlaMundoServlet.class para dentro da pasta classes do
diretrio WEB-INF.
h) 8 passo: finalmente, vamos testar a Aplicao! Inicie o Tomcat no Menu Iniciar > Pro-
gramas > Apache Tomcat > Configure Tomcat e clique no boto start.
i) 9 passo: abra o navegador e digite o seguinte endereo: http://localhost:8080/ap-
pOlaMundo/olamundo. Ser exibido:
7. PROCESSAMENTO DE FORMULRIOS
Como aprendemos na unidade anterior, os navegadores podem enviar informaes para o
Servidor Web por meio dos formulrios. Essa , portanto, a principal maneira de interao entre
os usurios e as aplicaes no servidor.
Aprendemos, tambm, que possvel enviar solicitaes por meio do mtodo GET, na
qual os dados so passados diretamente na URL do navegador, e pelo mtodo POST, em que os
dados no so visveis pelo usurio.
Agora, vamos estudar como fazer o processamento de formulrios, tanto por GET quanto
por POST, por meio de Java Servlets.
Para ilustrar, vamos criar uma Aplicao capaz de realizar uma Pesquisa sobre a inteno
de voto dos eleitores.
Inicialmente, crie um arquivo XHTM contendo um formulrio para escolha da opo de
voto do usurio.
Salve esse arquivo com o nome de index.html:
U3 - Servlets 47
1 import javax.servlet.*;
2 import javax.servlet.http.*;
3 import java.io.*;
4
5 public class VotacaoServlet extends HttpServlet{
6 private int cand1,cand2,cand3;
7
8 public void init(ServletConfig config)
9 throws ServletException{
10
super.init(config);
11
cand1 = cand2 = cand3 = 0; // total de votos
12 }
13
14 public void destroy(){
15 }
16
17 public void doGet(HttpServletRequest req, HttpServletResponse resp)
18 throws ServletException, IOException{
19
20 int voto = Integer.parseInt( req.getParameter( Candidato ));
21
22 if (voto == 1) cand1++; // Antonio das Coxinhas
23 else if (voto == 2) cand2++; // Joao da Silva
24 else if (voto == 3) cand3++; // Z da Padaria
25
26 PrintWriter out = resp.getWriter();
27
28 resp.setContentType( text/html; charset=iso-8859-1 );
29 out.println(<?xml version = \1.0\?>);
30 out.printf(%s%s%s , <!DOCTYPE html PUBLIC ,
31 \-//W3C//DTD XHTML 1.0 Strict//EN\,
32 \http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\>\n );
33 out.println(<html xmlns = \http://www.w3.org/1999/xhtml\> );
34 out.println(<head> );
35 out.println(<title> Resultado da Pesquisa </title>);
36 out.println(</head> );
37 out.println(<body> +
38 <h1>Resultado Parcial da Pesquisa </h1>+
39 <h2>Antnio das Coxinhas + cand1 + votos</h2> +
40 <h2>Joo da Silva + cand2 + votos</h2> +
41 <h2>Z da Padaria + cand3 + votos</h2> +
42 <a href=index.html> Voltar a pgina da pesquisa </a>+
43 </body>);
44 out.println(</html>);
45 out.close();
46 }
47 }
Observe:
Neste exemplo utilizamos o mtodo init() para inicializar os contadores responsveis pela
contagem de votos de cada candidato. Podemos, com isso, garantir a contabilizao dos votos
de maneira segura.
O mtodo doGet() responsvel pelo tratamento e processamento das solicitaes en-
viadas pelo mtodo GET. No se esquea de que no formulrio de interao com o usurio a
propriedade action foi configurada como get.
Na linha 20, utilizamos o mtodo getParameter para receber a opo selecionada pelo
usurio. Nesse caso, voc pode notar que o nmero do candidato escolhido passado para o
Servlet diretamente na URL.
Por exemplo, para o candidato Joo da Silva temos: <http://localhost:8080/appPesquisa/
votacao?Candidato=2>.
Na linha 28, especificamos como ser a resposta para o usurio por meio do mto-
do setContentType. Nesse caso, o contedo ser text/html e ser utilizada a propriedade
charset=iso-8859-1 para permitir acentuao.
O documento enviado para o cliente segue o padro XHTML especificado pela W3C.
Para distribuio da Aplicao o Deployment Descriptor (web.xml) foi definido como se
segue:
12 VotacaoServlet
13 </servlet-class>
14 </servlet>
15
16 <servlet-mapping>
17 <servlet-name>votacao</servlet-name>
18 <url-pattern>/votacao</url-pattern>
19 </servlet-mapping>
20
21 </web-app>
Ateno!
Caso seja necessrio voc poder adicionar um novo servidor clicando no boto adicionar.
Precisamos, agora, adicionar nosso Servlet ao projeto. Para isso, clique com o boto direito
em Pacotes de cdigo fonte, selecione a opo Novo > Servlet...
Defina o nome do Servlet como ConversaoMoedaServlet e na opo pacote especifique
com.conversor, em seguida clique no boto prximo.
O ambiente NetBeans configura automaticamente o Deployment Descriptor, ou seja, no
precisaremos editar o arquivo web.xml. Note que o caminho para utilizao do Servlet tambm
foi automaticamente definido como /ConversorMoedaServlet.
Agora, clique no boto finalizar.
Observe que uma estrutura bsica para seu novo Servlet foi definida e os seguintes mto-
dos foram especificados:
Protected void processRequest: responsvel pelo tratamento das solicitaes enviadas
por GET ou POST.
Protected void doGet e protected void doPost: ambos os mtodos fazem uma refern-
cia ao mtodo processRequest. Nesse caso, podemos tratar os dois tipos de solicitao
pelo mtodo processRequest.
Public String getServletInfo (): voc pode utilizar para descrever sucintamente as fun-
cionalidades do seu Servlet.
Agora, criaremos um formulrio para interagir com o usurio, no qual ele poder escolher
qual tipo de converso de moeda deseja.
U3 - Servlets 51
Veja que o NetBeans criou um arquivo com o nome de index.jsp. nesse arquivo que
vamos incluir nosso formulrio de converso:
Como voc pde notar, as linhas quatro, cinco e seis so responsveis pelo recebimento
das informaes enviadas pelo formulrio, na qual os parmetros (txtValor, lstDe, lstPara) so os
nomes dos componentes utilizados no formulrio.
Um mtodo foi criado para a converso das moedas, com o nome de Converter:
9. QUESTES AUTOAVALIATIVAS
Vamos autoavaliar nossa aprendizagem, respondendo:
1) O que so Servlets?
10. CONSIDERAES
Nesta unidade, voc aprendeu os principais conceitos a respeito da tecnologia Java Ser-
vlet. Alm disso, conhecemos mtodos para processamento de formulrios utilizando GET e
POST.
Finalmente, voc construiu uma Aplicao completa utilizando Servlets no ambiente de
desenvolvimento NetBeans.
Na prxima unidade, vamos estudar o JavaServer Pages (JSP). Esperamos por voc!
11. E-REFERNCIAS
J2EE Sun Developer Network. Homepage. Disponvel em: <http://java.sun.com/javaee/>. Acesso em: 9 dez. 2013.
SERVLETS - Sun Developer Network. Products. Disponvel em: <http://java.sun.com/products/jsp/>. Acesso em: 9 dez. 2013.
______. Servlet. Disponvel em: <http://java.sun.com/products/servlet/>. Acesso em: 9 dez. 2013.
SUN 2008. Servlets. Disponvel em: <http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets.html>. Acesso em: 9 dez. 2013.