Servlets – Java Web


De acordo com a Wikipédia, Servlet é um componente do lado servidor que gera dados HTML e XML para a camada de apresentação de um aplicativo Web. É basicamente uma classe na linguagem de programação Java que dinamicamente processa requisições e respostas, proporcionando dessa maneira novos recursos aos servidores. A definição mais usada considera-os extensões de servidores.

Eu diria que é impossível falar de Java Web e não se pensar em Servlet na mesma hora. Muita gente não sabe nem por onde começar a implementar isso. Então vamos lá!



Se você ainda está pensando – “Quero fazer só um Hello World, para que saber sobre Servlet?” – vou dizer, quando escreve um jsp e coloca um “<% %>” por exemplo, quem faz o papel de interpretar essa tag e transformar em HTML é exatamente uma Servlet, que faz parte do JSP Engine.

Agora que estão todos convencidos a aprender, vamos ao tutorial:

1 – Em primeiro lugar, você deve criar a classe que será sua Servlet. No meu caso criei a ExemploServlet:

 Java |  copy code |? 
01
02
package teste;
03
 
04
import java.io.IOException;
05
import java.io.PrintWriter;
06
import java.util.Date;
07
 
08
import javax.servlet.ServletException;
09
import javax.servlet.http.HttpServlet;
10
import javax.servlet.http.HttpServletRequest;
11
import javax.servlet.http.HttpServletResponse;
12
 
13
public class ExemploServlet extends HttpServlet{
14
 
15
	public void doGet(HttpServletRequest request, HttpServletResponse response)	throws IOException, ServletException {
16
		response.setContentType("text/html");//seta o tipo de conteúdo da resposta da servlet para html
17
 
18
	    PrintWriter out = response.getWriter();//instancia o printer, que vai imprimir o html.
19
 
20
		out.println("<html>");
21
		out.println("<head></head>");
22
		out.println("<body>");  
23
		out.println("<p>Oba! Minha Servlet Funcionou! Hoje é dia:"+new Date()+"</p>");// um parágrafo simples, que imprime a data atual  
24
		out.println("</body>");  
25
		out.println("</html>");
26
	}
27
}
28

OBS: Se você não conseguiu importar as classes de Servlet, baixe a biblioteca aqui. Se não sabe instalar veja aqui como instalar.


2 - Agora, devemos editar o "web.xml" para que ele fique da seguinte maneira:
 XML |  copy code |? 
01
02
<?xml version="1.0" encoding="UTF-8"?>
03
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
04
	<display-name>Flavio</display-name>
05
 
06
	<servlet><!--aqui dizemos que vamos mapear as Servlets-->
07
     <servlet-name>ExemploServlet</servlet-name> <!-- seta o nome da servlet -->
08
            <servlet-class>teste.ExemploServlet</servlet-class><!-- seta o caminho da servlet -->  
09
        </servlet>  
10
 
11
    <servlet-mapping> <!-- aqui é onde vamos mapear como a servlet vai ser chamada -->
12
        <servlet-name>ExemploServlet</servlet-name><!-- colocamos qual a servlet que mapeamos lá em cima -->
13
        <url-pattern>*.aplicacao</url-pattern><!-- colocamos a regra que via chamar a servlet. o * indica que sera qualquer coisa .aplicacao -->
14
    </servlet-mapping>  
15
 
16
</web-app>
17


3 - Pronto, agora inicie o Tomcat, e digite no browser "http://localhost:8080/[Nome_do_Projeto]/[Qualquer_coisa].aplicacao"
Obs: Em [Qualquer_coisa] você pode colocar qualquer valor mesmo.

, , , , ,

  1. #1 by camilo lopes on 15 de Março de 2010 - 15:48

    opa! flavio, parabens! pelo post, bem explicado e detalhado. Em meu blog, ano passado falei tb sobre servlet indo para um conceito do dia-dia e tem alguns exemplos de servlet com jsp.
    http://blog.camilolopes.com.br/?p=86
    http://camilolopes.wordpress.com/2008/07/07/comunicando-servlet-jsp/
    flw abracos,
  2. #2 by Maurício Faustino on 16 de Março de 2010 - 9:04

    Excelente artigo, esse doGet, tem haver com os metodos de requisição do html (get e post)?

    podemos então implementar uma ação para quando o metodo for get e outra ação para quando o metodo for post?
  3. #3 by Flávio J. Mendes on 16 de Março de 2010 - 9:40

    Exatamente isso! Temos o doGet se os dados estiverem sendo enviados por Get, e o doPost se os dados estiverem sendo enviados por Post. Note que você passa o HttpServletRequest, que tem métodos que permitem descobrir sobre as informações recebidas, tais como dados de formulários, cabeçalhos de solicitação HTTP. E também o HttpServletResponse que tem métodos que lhe permite especificar a linha de resposta HTTP (200, 404, etc), cabeçalhos de resposta (Content-Type, Set-Cookie, etc) e, mais importante, permite que você obtenha um PrintWriter usado para enviar a saída volta para o cliente.
  4. #4 by Daniel on 18 de Março de 2010 - 0:18

    massa mlq… é isso mesmo, mais eu fui fazer o teste na minha aplicao teste aqui que usa struts, fiz o servler e mapiei no web.xml normal junto aos filters, só que quando chamo o url ele da um erro 405 dizendo que HTTP Status 405 – HTTP method GET is not supported by this URL, tu sabe que que rola nesse caso? sera que tem a ver com os filters do struts pras actions?
(não será publicado)