You are on page 1of 35

Desenvolvimento de Sistemas

Corporativos
Aula 1.6 Servlets

Prof. Bruno Moreno


bruno.moreno@ifrn.edu.br
o
Criando o 1 Servlet
Abra o projeto aula;
Clique com o boto
direito no projeto e
acesse: New Class
e crie uma nova classe
Java;
Nomeie a classe como
OlaMundo dentro do
pacote
br.edu.ifrn.servlet;

2
o
Criando o 1 Servlet

public class OlaMundo extends HttpServlet{


@Override
protected void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
//escreve o texto
out.println("<html>");
out.println("<body>");
out.println("Ol, Mundo!");
out.println("</body>");
out.println("</html>");
}
}

3
o
Criando o 1 Servlet

Todo servlet extends


public class OlaMundo extends HttpServlet{
HttpServlet!
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
//escreve o texto
out.println("<html>");
out.println("<body>");
out.println("Ol, Mundo!");
out.println("</body>");
out.println("</html>");
}
}

4
o
Criando o 1 Servlet

public class OlaMundo extends HttpServlet{


@Override
protected void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
//escreve o texto
Os parmetros request e response so
out.println("<html>");
usados para controlar as requisies e
out.println("<body>");
respostas, respectivamente.
out.println("Ol, Mundo!");
out.println("</body>");
out.println("</html>");
}
}

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>

Essa operao indica ao container que a classe


OlaMundo foi asociada a um servlet de nome
meuservlet;

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>

Essa operao indica ao container que o servlet


meuservlet foi associado URL /ola.

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>

possvel, ainda, configurar extenses para um


servlet:
<servlet-mapping>
<servlet-name>meuservlet</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>

12
Requisio e Resposta

Caractersticas GET POST


Tipo de Dados Texto Texto ou Binrio
Quantidade de dados Mximo de 255 caracteres Ilimitado
Dados no fazem parte da
Dados fazem parte da URL URL e sim do corpo da
Visibilidade
e podem ser vistos. mensagem. No podem ser
vistos.

O objeto que representa uma requisio HTTP


o HttpServletRequest;
O objeto que representa uma resposta HTTP o
HttpServletResponse;

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 {

protected void doGet(HttpServletRequest request,


HttpServletResponse response)
throws ServletException, IOException {
//Executado quando a requisio enviada pelo mtodo GET
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
//Executado quando a requisio enviada pelo mtodo POST
}
}

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
}

Esta a forma mais simples de se declarar um servlet;


Aqui, o servlet ServletGetPost mapeado para a URL
/ServletGetPost;
Colocando as anotaes, se faz desnecessrio configurar o
web.xml;
As anotaes de Servlets 3.0 s podem ser utilizadas em
classes que extendem HttpServlet;
21
Requisio e Resposta
Os contineres processam as anotaes em
tempo de deployment;
Um servlet pode ser declarado com informaes
adicionais:
@WebServlet(
name = "ServletGetPost",
description = "Um exemplo de servlet anotado",
urlPatterns = "/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 {

protected void doGet(HttpServletRequest request,


HttpServletResponse response)
throws ServletException, IOException {
PrintWriter resposta = response.getWriter();
resposta.write("<html><body>");
resposta.write("Ol, "+request.getParameter("nome")+"!!!");
resposta.write("</body></html>");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}

25
Requisio
Obtendo parmetros
@WebServlet("/ServletOla")
public class ServletOla extends HttpServlet {

protected void doGet(HttpServletRequest request,


HttpServletResponse response)
throws ServletException, IOException {
PrintWriter resposta = response.getWriter();
resposta.write("<html><body>");
resposta.write("Ol, "+request.getParameter("nome")+"!!!");
resposta.write("</body></html>");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}

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 {

protected void doGet(HttpServletRequest request,


HttpServletResponse response)
throws ServletException, IOException {
}

protected void doPost(HttpServletRequest request,


HttpServletResponse response)
throws ServletException, IOException {
//Recuperando os parmetros do request
String name = request.getParameter("nome");
String address = request.getParameter("endereco");
String email = request.getParameter("email");
String birthDay = request.getParameter("dataNascimento");

//Realiza operao para inserir contato


//...

//Imprime o nome do contato que foi adicionado


PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
30
Requisio
@WebServlet("/AdicionaContatoServlet")
public class AdicionaContatoServlet extends HttpServlet {

protected void doGet(HttpServletRequest request,


Obtendo parmetros pelo POST
HttpServletResponse response)
throws ServletException, IOException {
}

protected void doPost(HttpServletRequest request,


HttpServletResponse response)
throws ServletException, IOException {
//Recuperando os parmetros do request
String name = request.getParameter("nome");
String address = request.getParameter("endereco");
String email = request.getParameter("email");
String birthDay = request.getParameter("dataNascimento");

//Realiza operao para inserir contato


//...

//Imprime o nome do contato que foi adicionado


PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("Contato " + name + " adicionado com sucesso");
out.println("</body>");
out.println("</html>");
}
}

31
Requisio
@WebServlet("/AdicionaContatoServlet")
public class AdicionaContatoServlet extends HttpServlet {

protected void doGet(HttpServletRequest request,


Obtendo parmetros pelo POST
HttpServletResponse response)
throws ServletException, IOException {
}

protected void doPost(HttpServletRequest request,


HttpServletResponse response)
throws ServletException, IOException {
//Recuperando os parmetros do request
String name = request.getParameter("nome");
String address = request.getParameter("endereco");
String email = request.getParameter("email");
String birthDay = request.getParameter("dataNascimento");

//Realiza operao para inserir contato


//...

//Imprime o nome do contato que foi adicionado


PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("Contato " + name + " adicionado com sucesso");
out.println("</body>");
out.println("</html>");
}
}

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

You might also like