Professional Documents
Culture Documents
Corporativos
Aula 1.6 Servlets
2
o
Criando o 1 Servlet
3
o
Criando o 1 Servlet
4
o
Criando o 1 Servlet
5
Identificando um Servlet
Um servlet pode at trs nomes:
Nome da URL conhecido pelo Cliente;
Nome interno conhecido apenas pelo distribuidor;
Nome do arquivo verdadeiro;
Para funcionar, preciso fazer definir um servlet e
depois mapear os seus nomes
A definio e o mapeamento feito no arquivo de
configurao da aplicao (deployment descriptor)
web.xml dentro de WEB-INF
Este tipo de mapeamento aumenta a segurana e
flexibilidade da aplicao.
6
Definindo um Servlet
Primeiro, para definir um servlet, associa-se seu
nome interno com o nome da classe no arquivo
web.xml
<servlet>
<servlet-name>meuservlet</servlet-name>
<servlet-class>br.edu.ifrn.servlet.OlaMundo</servlet-class>
</servlet>
7
Definindo um Servlet
Primeiro, para definir um servlet, associa-se seu
nome interno com o nome da classe no arquivo
web.xml Nome interno
<servlet>
<servlet-name>meuservlet</servlet-name>
<servlet-class>br.edu.ifrn.servlet.OlaMundo</servlet-class>
</servlet>
Nome do arquivo
Essa operao indica ao container que a classe
OlaMundo foi asociada a um servlet de nome
meuservlet;
8
Definindo um Servlet
Segundo, necessrio definir o nome interno
para o mapeamento externo (URL)
<servlet-mapping>
<servlet-name>meuservlet</servlet-name>
<url-pattern>/ola</url-pattern>
</servlet-mapping>
9
Definindo um Servlet
Segundo, necessrio definir o nome interno
para o mapeamento externo (URL)
Nome interno
<servlet-mapping>
<servlet-name>meuservlet</servlet-name>
<url-pattern>/ola</url-pattern>
Mapeamento externo
</servlet-mapping>
(URL acessivel para os
usurios)
Essa operao indica ao container que o servlet
meuservlet foi associado URL /ola.
10
Definindo um Servlet
Para testar, inicie o tomcat e acesse a URL:
http://localhost:8080/aula/ola
Resultado:
11
Tag url-pattern
A tag <url-pattern> tambm fornece flexibilidade
de disponibilizar uma servlet atravs de vrias
URLs de um caminho:
<servlet-mapping>
<servlet-name>meuservlet</servlet-name>
<url-pattern>/ola/*</url-pattern>
</servlet-mapping>
12
Requisio e Resposta
13
Requisio e Resposta
Exemplos
GET
http://localhost:8080/servlet/ServletProcurar?
numero=12&codigo=1
POST
<form method = POST action = ServletProcurar>
<input type = text name = numero>
<input type = text name = codigo>
<input type = submit>
</form>
14
Requisio e Resposta
O mtodo service() aceita todos os mtodos
HTTP
Para especificar como cada mtodo ser tratado,
deve-se escrever os mtodos doGet() e/ou
doPost() no servlet;
Utilize o mtodo de acordo com a sua aplicao;
Evite o mtodo service() quando ele no
necessrio;
15
Requisio e Resposta
GET e POST
public class ExemploServlet extends HttpServlet {
16
Requisio e Resposta
Exemplo
public class ServletGetPost extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter saida = response.getWriter();
saida.write("<HTML><BODY>Ol! ");
saida.write("Mesma resposta para o mtodo GET.");
saida.write("</BODY></HTML>");
saida.close();
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter saida = response.getWriter();
saida.write("<HTML><BODY>Ol! ");
saida.write("Resposta para o mtodo POST.");
saida.write("</BODY></HTML>");
saida.close();
}
}
17
Requisio e Resposta
Exemplo
<html>
<head>
<title>ServletGetPost</title>
</head>
<body>
<a href="ServletGetPost">GET</a><br>
<form action="ServletGetPost" method="post">
<input type = "submit" value="POST">
</form>
</body>
</html>
18
Requisio e Resposta
Exemplo
<servlet>
<servlet-name>servletgetpost</servlet-name>
<servlet-class>br.edu.ifrn.servlet.ServletGetPost</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletgetpost</servlet-name>
<url-pattern>/ServletGetPost</url-pattern>
</servlet-mapping>
19
Requisio e Resposta
At a verso 2.0 da API de Servlets, os Servlets
precisavam ser declarados no web.xml;
<servlet>
<servlet-name>meuservlet</servlet-name>
<servlet-class>br.edu.ifrn.servlet.OlaMundo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>meuservlet</servlet-name>
<url-pattern>/ola/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>servletgetpost</servlet-name>
<servlet-class>br.edu.ifrn.servlet.ServletGetPost</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletgetpost</servlet-name>
<url-pattern>/ServletGetPost</url-pattern>
</servlet-mapping>
20
Requisio e Resposta
A partir da verso 3.0 da API Servlets, os servlets podem ser
configurados a partir de anotaes;
O servlet ServletGetPost, por exemplo, poderia ser declarado
assim:
@WebServlet("/ServletGetPost")
public class ServletGetPost extends HttpServlet {
//Cdigo
}
22
Requisio e Resposta
Como no nosso exemplo, o GET e o POST no
possuem diferena, pode-se implementar apenas
um dos mtodos chamando o outro:
public class ServletGetPost extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter saida = response.getWriter();
saida.write("<HTML><BODY>Ol! ");
saida.write("Resposta para o mtodo GET ou POST.");
saida.write("</BODY></HTML>");
saida.close();
}
}
23
Requisio
Obtendo parmetros da requisio:
Mtodo Descrio
String getParameter(String Retorna o valor associado ao
paramName) determinado parmetro
Retorna todos os valores associados ao
String[]
determinado parmetro (list boxes,
getParameterValues(String name)
check boxes)
Retorna os nomes dos parmetros
Enumeration getParameterNames()
apssados na requisio.
24
Requisio
Obtendo parmetros
@WebServlet("/ServletOla")
public class ServletOla extends HttpServlet {
25
Requisio
Obtendo parmetros
@WebServlet("/ServletOla")
public class ServletOla extends HttpServlet {
26
Requisio
Obtendo parmetros
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter resposta = response.getWriter();
resposta.write("<html><body>");
resposta.write("Ol, os parmetros recebidos por esta" +
"requisio so:<br>");
Enumeration<String> paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String name = (String) paramNames.nextElement().toString();
resposta.write(name);
resposta.write(":"+request.getParameter(name));
resposta.write(";<br>");
}
resposta.write("</body></html>");
}
27
Requisio
Obtendo parmetros
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter resposta = response.getWriter();
resposta.write("<html><body>");
resposta.write("Ol, os parmetros recebidos por esta" +
"requisio so:<br>");
Enumeration<String> paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String name = (String) paramNames.nextElement().toString();
resposta.write(name);
resposta.write(":"+request.getParameter(name));
resposta.write(";<br>");
}
resposta.write("</body></html>");
}
28
Requisio
Obtendo parmetros pelo POST (contato.html)
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<form action="AdicionaContatoServlet" method="post">
Nome:<input type="text" name="nome"/>
<br />
E-mail:<input type="text" name="email"/>
<br />
Endereo:<input type="text" name="endereco"/>
<br />
Data de Nascimento:<input type="text" name="dataNascimento"/>
<br />
<input type="submit" name="OK"/>
</form>
</body>
</html>
29
Requisio
Obtendo parmetros pelo POST
@WebServlet("/AdicionaContatoServlet")
public class AdicionaContatoServlet extends HttpServlet {
31
Requisio
@WebServlet("/AdicionaContatoServlet")
public class AdicionaContatoServlet extends HttpServlet {
32
Prtica
Complemente o exemplo anterior de modo a
apresentar todos os dados do contato no
seguinte formato:
Nome:
E-mail:
Endereo:
Data de Nascimento:
33
Exerccio
Crie uma pgina HTML chamada login.html que
possua um formulrio (method post) com dois
campos de texto (login e senha) e um boto
submit;
Ao clicar no boto, a pgina dever ser
direcionada para o servlet AutenticaUsuario;
O servlet deve apresentar uma mensagem de boas
vindas caso o usurio seja igual a Maria e a senha
igual a 123;
Caso contrrio, deve exibir a mensagem: Dados
incorretos.
34
Referncias
Notas de aula do Prof. Mario Melo, IFRN:
Notas de aula do Prof. Jacques Sauv, UFCG;
35