Professional Documents
Culture Documents
Primeiro Servlet
O primeiro passo a ser dado criar uma classe Java como qualquer outra.
Essa nova classe criada deve estender a classe abstrata HttpServlet pertencente ao
pacote javax.Servlet.http.
import javax.servlet.http.HttpServlet;
O exemplo acima pode ser considerado um Servlet, contudo no funcional ainda. Alm
de importar a classe HttpServlet, devemos importar tambm as seguintes classes:
java.io.IOException;
javax.servlet.ServletException;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
Alm de importar as classes acima, o Servlet deve sobrescrever um dos mtodos abaixo
listados; podendo sobrescrever os dois.
O mtodo doGet ser responsvel por tratar as requisies enviadas via get, isto ,
os parmetros so enviados fazendo parte da url da requisio. Esse formato de envio
tem a vantagem de ser facilmente criado e entendido, contudo s podem ser passados
255 caracteres de informaes.
O mtodo doPost ser responsvel por tratar as requisies enviadas via post, neste
caso a quantidade de informaes praticamente ilimitado de informaes, podendo ser
tambm enviados arquivos binrio; a desvantagem que o envio de dados dever ser
feito atravs de formulrios HTML.
Caso uma requisio no tenha parmetros, esta deve ser tratada atravs do
mtodo doGet;
Observe que os dois mtodos recebem dois parmetros que so- um objeto
HttpServletRequest que modela as requisies e o HttpServletResponse que modela as
respostas.
Nosso Servlet de exemplo est praticamente pronto, o ltimo quesito diz respeito
ao registro do Servlet no nosso servidor de aplicao.
1
<Servlet>
<servlet-name>primeiroServlet</servlet-name> <!-- nome do Servlet dentro do
web.xml -->
<servlet-class>PrimeiroServlet</servlet-class> <!-- nome da classe do Servlet --
>
</servlet>
<servlet-mapping>
<servlet-name>primeiroServlet</servlet-name> <!-- nome do servlet dentro do
web.xml -->
<url-pattern>meuPrimeiroServlet</url-pattern><!-- nome que ser mapeado na
url -->
</servlet-mapping>
@WebServlet("/meuPrimeiroServlet")
Lembrando que para poder utilizar a anotao citada, devemos importar a classe
javax.Servlet.annotation.WebServlet.
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/meuPrimeiroServlet")
public class Teste extends HttpServlet {
private static final long serialVersionUID = 1L;
}
}
http://localhost:8084/Aula1/meuPrimeiroServlet
Nome do Servlet definido com a
Caminho do servidor anotao @WebServlet
2
Apesar de plenamente funcional, nosso Servlet ainda no apresenta nenhum resultado;
com o intuito de resolvermos esse problema, teremos que escrever uma resposta.
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/meuPrimeiroServlet")
public class Teste extends HttpServlet {
private static final long serialVersionUID = 1L;
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Meu primeiro Servlet</title>");
out.println("</head>");
out.println("<body>");
3
out.println("<h1>Meu primeiro Servlet</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
Recebendo parmetros
Os principais mtodos utilizados para recebimento e manipulao de parmetros so:
String getParameter(String nomeDoParametro)
Retorna o valor associado ao determinado parmetro.
Com o intuito de exibir a utilizao dos dois mtodos citados, iremos criar duas pginas
HTML e um Servlet.
A primeira pgina possui um formulrio que permite ao usurio gerar jogos aleatrios
para Mega Sena.
Para isso deve ser criada em Pginas Web uma arquivo HTML com o nome loteria.html.
Abaixo, podemos ver esse arquivo.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Loteria</title>
</head>
<body>
<form action="/SegundoServlet">
<table>
<tr>
<td>Nome:</td>
<td><input type="text" name="nome" />
</td>
</tr>
<tr>
<td>Quantos nmeros voc quer jogar:</td>
<td><input type="text" name="quantidadeDeNumeros" />
</td>
</tr>
<tr>
<td>Quantas apostas voc quer fazer:</td>
<td><input type="text" name="quantidadeDeApostas" />
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Enviar" />
</td>
</tr>
4
</table>
</form>
</body>
</html>
Como no foi informado em nosso formulrio o mtodo de submisso, este ser o padro
que post.
O cdigo a seguir apresenta nosso segundo Servlet, que criar a resposta adequada para
a requisio recebida.
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/SegundoServlet")
public class SegundoServlet extends HttpServlet{
5
}
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Loteria</title>");
out.println("</head>");
out.println("<body>");
out.println(resposta);
out.println("</body>");
out.println("</html>");
out.close();
}
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Pesquisa</title>
</head>
<body>
<form action="SegundoServlet" method="post">
<fieldset>
<legend>Pesquisa</legend>
None:<input type="text" name="nome"/><br/>
Telefone:<input type="text" name="fone"/><br/>
Quais dos itens voc tem em casa?<br/>
<input type="checkbox" name="iten" value="Aparelho de DVD" /> Aparelho de
DVD<br/>
<input type="checkbox" name="iten" value="Aparelho de som" /> Aparelho de
som<br/>
<input type="checkbox" name="iten" value="Geladeira Duplex" /> Geladeira
Duplex<br/>
<input type="checkbox" name="iten" value="Microondas" /> Microondas<br/>
<input type="checkbox" name="iten" value="Mquina de lavar " />Mquina de lavar
<br/>
<input type="checkbox" name="iten" value="Telefone sem fio" />Telefone sem fio
<br/>
<input type="checkbox" name="iten" value="TV de LCD" />TV de LCD <br/>
<input type="checkbox" name="iten" value="Notebook"/>Notebook<br/>
<input type="submit" value="Enviar">
</fieldset>
</form>
</body>
</html>
Para tratar a requisio enviada para pelo formulrio acima descrito, sobrescreveremos o
mtodo doPost, como a seguir:
6
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
for(String s: itens){
resposta += s + "<br/>";
}
resposta +=
"<br/><br/><h3>Entraremos em contato atravs do telefone:
"+telefone+"</h3>";
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Pesquisa</title>");
out.println("</head>");
out.println("<body>");
out.println(resposta);
out.println("</body>");
out.println("</html>");
out.close();
}
Vamos criar uma pgina html de erro (erro.html), que ser alvo do
redirecionamento, caso no nosso primeiro exemplo o usurio digite um
valor numrico que gere uma exceo o fluxo ser direcionado para essa
pgina de erro.
<html>
<head>
7
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1" />
<title>Erro</title>
</head>
<body>
<h1 style="color: red;">Ocorreu uma exceo!</h1>
</body>
</html>
int quantidadeDeNumerosInt = 0;
int quantidadeDeApostasInt = 0;
try{
quantidadeDeNumerosInt =
Integer.parseInt(quantidadeDeNumeros);
quantidadeDeApostasInt = Integer.parseInt(quantidadeDeApostas);
}catch (Exception e) {
//Redirecionamos caso ocorra uma exceo
resp.sendRedirect("erro.html");
}
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Erro")
public class Erro extends HttpServlet {
8
//repassado para o Servlet Erro
out.println(request.getParameter("nome"));
out.println("</body>");
out.println("</html>");
out.close();
}