Desenvolvendo Aplicações Web em Java - Servlets
Autor: Edivando Alves | Publicado: 2013-09-17T05:51:00-07:00



&nbsp; &nbsp; &nbsp; &nbsp; No início da web as paginas eram estáticas. Não existia processamento por parte do servidor. Foi quando se viu um enorme potencial de comunicação e interação além da exibição de conteúdo puramente estático. Surgiram assim as&nbsp;Servlets&nbsp;( servidorzinho ) em 1997, cujo objetivo é receber chamadas HTTP, processá-las e devolver uma resposta ao cliente. 
&nbsp; &nbsp; &nbsp; 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Neste artigo, irei mostrar como criar e utilizar sua primeira servlet, utilizaremos como ambiente de desenvolvimento a IDE eclipse.
&nbsp; &nbsp; 
Criando um projeto web no eclipse


No eclipse crie um Dynamic Web Project. Em: File &gt; New &gt; Dynamic Web Project. Abrira o seguinte página:
Insira o nome do projeto ( neste exemplo utilizei: ExemploServlet ), click em Finish. Pronto você criou um projeto java web.&nbsp;











Criando um simples Servlet:



&nbsp; &nbsp; &nbsp; &nbsp;A interface javax.servlet.Servlet, define como uma servlet funciona, mas não vamos utiliza-la, uma vez que ela possibilita o uso de qualquer protocolo baseado em requisições e respostas. Utilizamos uma implementação desta interface: HttpServlet.
&nbsp; &nbsp; &nbsp; &nbsp;Para criar um Servlet, é muito simples basta herdar da classe HttpServlet, como no exemplo acima. E sobrescrever o método&nbsp;service. Este método será o responsável por atender requisições e gerar respostas. &nbsp; 
&nbsp; &nbsp; &nbsp; Siga os passos:

Click com o botão direito no projeto &gt; new &gt; Class.
Informe o Package: br.com.cejug, o Name: HelloMundo e click em Finish.




Insira o seguinte código:



1:  package br.com.cejug; &nbsp;

2:  import java.io.IOException;  
3:  import java.io.PrintWriter;  
4:  import javax.servlet.ServletException;  
5:  import javax.servlet.annotation.WebServlet;  
6:  import javax.servlet.http.HttpServlet;  
7:  import javax.servlet.http.HttpServletRequest;  
8:  import javax.servlet.http.HttpServletResponse; &nbsp;

9:  @WebServlet(value="/hello")  
10:  public class HelloMundo extends HttpServlet{  
11:       @Override  
12:       protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
13:            PrintWriter out = response.getWriter();  
14:            out.println("&lt;html&gt;");  
15:            out.println("&lt;body&gt;");  
16:            out.println("Hello Mundo Cruel!!!!");  
17:            out.println("&lt;/body&gt;");  
18:            out.println("&lt;/html&gt;");  
19:       }  
20:  }  



Adicione o projeto: ExemploServlet no Tomcat e inicializi-o.&nbsp;
Acesse a seguinte url:&nbsp;http://localhost:8080/ExemploServlet/hello, o bwoser exibirá a seguinte página.








&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp; Observe que o método service recebe dois objetos coom parametro. O primeiro HttpServletRequest, encapsula a requisção feita pelo usuário, e o segundo HttpServletResponse encapsuloa a resposta.



&nbsp; &nbsp; &nbsp; &nbsp; HttpServlet é uma classe abstrata que provem métodos para trabalhar com requisições HTTP. Dentre esses métodos podemos destacar: doGet e doPost. Assim podemos escolher como nosso servlet irá trabalhar dependendo do tipo de requisição do cliente.&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp; O método HTTP GET utiliza a própria URI para enviar dados ao servidor, separando os dados do endereço por uma "?" (ponto de interrogação).

&nbsp; &nbsp; &nbsp; &nbsp; Já o método HTTP POST &nbsp;envia os dados junto com o corpo da mensagem. Ele separa o endereço dos dados enviados, assim garante mais segurança na transmissão de dados.





Passando parâmetros para a Servlet



&nbsp; &nbsp; &nbsp; &nbsp;Este simples exemplo mostra com submeter formulários usando o método get ou post. Na servlet, você pode obter o parâmetro utilizando request.getParameter("NomedeDoParametro");retornando uma String com o valor passado.&nbsp;



Crie uma pagina html chamada aluno.html dentro de WebContext.
Digite o seguinte código html:

 &lt;html&gt;  
      &lt;head&gt;  
           &lt;title&gt;Simples exemplo utilizado o método get&lt;/title&gt;  
      &lt;/head&gt;       
      &lt;body&gt;  
           &lt;form action="adicionarAluno" method="get"&gt;  
                Matricula: &lt;input type="text" name="matricula"/&gt;&lt;br /&gt;  
                Nome: &lt;input type="text" name="nome"/&gt;&lt;br /&gt;  
                Curso: &lt;input type="text" name="curso"&gt;&lt;br /&gt;  
                &lt;input type="submit" value="Salvar"&gt;&lt;br /&gt;  
           &lt;/form&gt;  
      &lt;/body&gt;  
 &lt;/html&gt;  


Cria agora um novo servlet:

 package br.com.cejug;  
 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(value="/adicionarAluno")  
 public class AdicionarAluno extends HttpServlet{  
      @Override  
      protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {  
           PrintWriter out = resp.getWriter();  
           out.println("&lt;html&gt;");  
           out.println("&lt;body&gt;");  
           out.println("Matricula: "+req.getParameter("matricula")+"&lt;br/&gt;");  
           out.println("Nome: "+req.getParameter("nome")+"&lt;br/&gt;");  
           out.println("Curso: "+req.getParameter("curso")+"&lt;br/&gt;");  
           out.println("&lt;/body&gt;");  
           out.println("&lt;/html&gt;");  
      }  
 }  


&nbsp; &nbsp; &nbsp;Neste exemplo sobrescrevemos o método doGet&nbsp;da classe HttpServlet. Assim nossa servlet receberá somente requisições via http-get. Podemos fazer o mesmo utilizando o método doPost assim nossa servlet estará apta a receber requisições post.


Inicie seu servidor e abra seu navegador em:&nbsp;http://localhost:8080/ExemploServlet/aluno.html
Cadastre o formulário de alunos e salve.






&nbsp; &nbsp; &nbsp; &nbsp;Será mostrado o resultado acima, comprovando que sua servlet esta apta a receber requisições http-get.



&nbsp; &nbsp; &nbsp; &nbsp;Após criamos nossa servlet podemos observar que misturamos código java com código html. Isso é bom para a criação de sistemas?&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp;É uma péssima prática,deixa dar um exemplo: Imagine como seria a vida do desing, ele não precisa entender de programação. Mas como o código está misturado ele terá que entender.



&nbsp; &nbsp; &nbsp; &nbsp;Então, o que devemos fazer? &nbsp;No próximo artigo veremos como separar java e html, utilizando JSP (JavaServer Pages).