Todas as vezes que desenvolvemos uma aplicação Java, criamos os nossos arquivos .java, compilamos e executamos os arquivos .class, porém sempre fazemos isso dentro de um computador que precisa ter o Java instalado! Além disso, na maioria das vezes são aplicações que a interface gráfica é um terminal, nada atrativo para o usuário…
E como poderíamos melhorar essa situação? Criando uma aplicação Web! Ou seja, uma aplicação que eu consiga rodar em qualquer plataforma, seja computador, celular ou qualquer dispositivo que rode um navegador qualquer… Mas como podemos fazer isso? Para rodar uma aplicação web nós precisamos de um servidor de aplicação que será responsável em manter a nossa aplicação funcionando!
Atualmente, existem diversos servidores de aplicação e linguagens de programação que podemos utilizar para a nossa aplicação, porém, iremos criar uma aplicação Java Web e o nosso servidor de aplicação será o Tomcat.
Para desenvolver essa aplicação utilizaremos o eclipse IDE que facilitará a nossa vida durante o desenvolvimento! Caso não tenha o eclipse, faça o download da versão para Java EE, descompacte o arquivo .zip e execute o eclipse:
Precisamos criar um projeto para Java Web! Mas como fazemos isso no eclipse? Simples! Vá em no menu “File > New > Dynamic Web Project”:
Dê um nome ao projeto, nesse caso, eu coloquei como minha-biblioteca, pois será uma aplicação que vai cadastrar e listar todos os meus livros. Após colocar o nome clique em “Next”:
Essa janela serve para configuração de build do projeto. Deixaremos essa configuração padrão, então clique em “Next” novamente:
Essa janela é para a configuração de modulo, marque apenas a opção “Generate web.xml deployment descriptor” para criar o arquivo web.xml padrão que usaremos daqui a pouco, então clique em “Finish”:
Observe que o nosso projeto foi criado! O que precisamos fazer agora? Como podemos rodar a nossa aplicação? Precisamos, de alguma forma, configurar alguma classe para atender as requisições para a nossa a aplicação, porém, como podemos configurar essa classe?
Existem diversas formas para configurar essa classe e, nesse post, utilizaremos a API de Servlet do Java pra resolver isso!
Baixe a biblioteca Servlet 3.0 e descompacte o arquivo. Agora precisamos adicionar a Servlet ao nosso projeto que é justamente o arquivo .jar.
Vá até o eclipse e observe que existe uma pasta chamada lib dentro da pasta “WebContent/WEB-INF/”. Copie o arquivo .jar e cole nessa pasta:
Clique com o botão direito em cima do .jar e escolha a opção “Build Path > Add to Build Path”. Agora vá até a pasta “Java Resource” e observe que o nosso .jar foi adicionado à nossa lista de bibliotecas do projeto!
Quando adicionamos uma biblioteca dentro de uma pasta do nosso projeto, como foi o caso da “WebContent/WEB-INF/lib/”, temos a vantagem de exportar o nosso projeto junto com as dependências para o seu funcionamento, ou seja, todas as bibliotecas necessárias para que ele funcione caso seja reutilizado em qualquer lugar!
Já podemos configurar nossa primeira Servlet! Então vamos criar uma classe nova que representará a nossa Servlet, vamos chama-lá de MainServlet:
package br.com.caelum.alura.biblioteca.servlet;
public class MainServlet {
}
Para transformarmos uma classe em uma Servlet, precisamos estender a classe HttpServlet:
package br.com.caelum.alura.biblioteca.servlet;
import javax.servlet.http.HttpServlet;
public class MainServlet extends HttpServlet {
}
Agora precisamos implementar o método que será responsável em receber uma requisição via HTTP, que é o doGet():
Criamos a nossa primeira Servlet! Vamos rodar a nossa aplicação? Clique com o botão direito em cima do projeto “Run as > 1 Run On Server”:
Observe que agora precisamos configurar o servidor de aplicação! Dentro do campo “Select the server type:” digite Tomcat para que seja filtrado o servidor de aplicação. Procure e selecione a versão “Tomcat v7.0 server” e clique em “Next”:
Clique em “Browse” e busque a pasta descompactada do Tomcat. Após encontrar clique em “Finish”:
Agora o Tomcat está configurado! Perceba que foi criado o projeto Servers que é justamente o local onde o eclipse adicionou o nosso Tomcat e também apareceu uma aba de Servers indicando que o Tomcat está funcionando:
Além disso, se verificarmos a aba console, veremos o log do Tomcat que exibe se, no momento que ele foi iniciado, ocorreu algum problema ou não:
Apenas log de INFO, então, aparentemente, está tudo bem! Se clicarmos em cima do Tomcat na view “Servers” ele abrirá o painel de configuração do nosso servidor de aplicação:
Observe que temos diversas opções para configurar, porém, as que nos interessa no momento é justamente o port name HTTP/1.1 que é justamente a porta que o Tomcat está tratando requisições do protocolo HTTP, ou seja, para acessar a nossa aplicação via URL do protocolo HTTP precisará utilizar a porta 8080!
Agora podemos testar a nossa aplicação! Vá no navegador copie e cole a seguinte URL http://localhost:8080/minha-biblioteca/ (caso o seu projeto tiver um nome diferente, substitua apenas o minha-biblioteca para o nome do seu projeto) que significa que estamos acessando uma URL via HTTP em localhost (sua própria máquina) e na porta 8080. Por fim, aperte Enter para fazer a chamada para a aplicação:
Erro 404? Ele não achou nada do meu projeto! O que será que aconteceu? Além de criar uma Servlet, nós precisamos registrá-la no arquivo web.xml que é o arquivo responsável em descrever todas as informações de deploy da aplicação! Então vamos registrar a nossa Servlet:
Observe que tivemos que utilizar a tag servlet-name para dar um nome para a nossa Servlet e a tag servlet-class para especificar qual é a classe que representa essa Servlet que estamos registrando! Perceba também que o nome que precisamos especificar é justamente o nome completo da classe, ou seja, o nome do pacote inteiro e depois a classe.
Se testássemos novamente, a nossa aplicação não responderia com a mesma URL, pois não definimos que iremos atender aquela URL! Para configurarmos o endereço que a nossa Servlet atenderá, basta adicionar a tag servlet-mapping informando o nome da nossa Servlet e a URL que ela vai atender, nesse caso a barra (“/”):
Clique com o botão direito em cima do projeto “Run as > 1 Run on Server”, agora que o Tomcat já estava iniciado, o eclipse vai perguntar se você deseja reiniciá-lo, marque a opção para reiniciar para garantir que todas as nossas alterações funcionem. Agora, se testarmos a URL http://localhost:8080/minha-biblioteca/:
Página em branco? Vamos verificar o nosso console:
O nosso sysout foi impresso! Mas o ideal seria imprimir essa mensagem no navegador! Como podemos fazer isso? Observe que recebemos dois parâmetros no método doGet() o HttpServletRequest req e o HttpServletResponse resp:
HttpServletRequest é o parâmetro que representa as requisições à nossa aplicação, ou seja, tudo que o cliente manda será recebido por meio desse parâmetro
HttpServletResponse é o parâmetro que representa as respostas da nossa aplicação, ou seja, tudo que mandamos para o cliente será enviado por meio desse parâmetro
Isso significa que podemos o HttpServletResponse para mandar uma mensagem! E faremos isso utilizando o método getWriter() que devolve um objeto do tipo PrintWriter:
Vamos testar novamente! Clique com o botão direto em cima do Tomcat e escolha a opção “Restart” para reiniciá-lo, então teste novamente o link http://localhost:8080/minha-biblioteca/:
Conseguimos enviar uma mensagem! Além de só imprimir um texto puro, podemos enviar tags em HTML também, basta informar que a resposta será em HTML por meio do método setContentType(), por exemplo, para listar os meus livros:
Excelente! Agora já podemos imprimir as mensagens que desejamos no nosso navegador! E melhor ainda, utilizando HTML!
Nesse post aprendemos a criar uma aplicação Java Web básica utilizando o eclipse para Java EE e a API de Servlet do Java. Vimos como podemos criar um projeto para Java Web e como podemos adicionar a biblioteca de Servlet no projeto por meio do Build Path. Além disso, aprendemos que para criar uma Servlet, precisamos estender a classe HttpServlet, implementar o método doGet() e registrar a nossa Servlet no arquivo web.xml que será responsável em descrever todas as informações de deploy da nossa aplicação! Por fim, vimos como enviar uma resposta em texto ou em HTML todas as vezes que alguém faz uma requisição à nossa aplicação.
E aí, o que achou da API de Servlet? Quer aprender mais sobre Servlets? Pensando nisso, o instrutor Guilherme Silveira criou o curso de Servlets e os fundamentos de Java na Web no Alura, onde é abordado diversos assuntos sobre Servlets e os principais fundamentos sobre a programação de aplicações para Java Web!
Criando uma aplicação Java Web com Servlet
Todas as vezes que desenvolvemos uma aplicação Java, criamos os nossos arquivos .java, compilamos e executamos os arquivos .class, porém sempre fazemos isso dentro de um computador que precisa ter o Java instalado! Além disso, na maioria das vezes são aplicações que a interface gráfica é um terminal, nada atrativo para o usuário…
E como poderíamos melhorar essa situação? Criando uma aplicação Web! Ou seja, uma aplicação que eu consiga rodar em qualquer plataforma, seja computador, celular ou qualquer dispositivo que rode um navegador qualquer… Mas como podemos fazer isso? Para rodar uma aplicação web nós precisamos de um servidor de aplicação que será responsável em manter a nossa aplicação funcionando!
Atualmente, existem diversos servidores de aplicação e linguagens de programação que podemos utilizar para a nossa aplicação, porém, iremos criar uma aplicação Java Web e o nosso servidor de aplicação será o Tomcat.
Para desenvolver essa aplicação utilizaremos o eclipse IDE que facilitará a nossa vida durante o desenvolvimento! Caso não tenha o eclipse, faça o download da versão para Java EE, descompacte o arquivo .zip e execute o eclipse:
Precisamos criar um projeto para Java Web! Mas como fazemos isso no eclipse? Simples! Vá em no menu “File > New > Dynamic Web Project”:
Dê um nome ao projeto, nesse caso, eu coloquei como minha-biblioteca, pois será uma aplicação que vai cadastrar e listar todos os meus livros. Após colocar o nome clique em “Next”:
Essa janela serve para configuração de build do projeto. Deixaremos essa configuração padrão, então clique em “Next” novamente:
Essa janela é para a configuração de modulo, marque apenas a opção “Generate web.xml deployment descriptor” para criar o arquivo
web.xml
padrão que usaremos daqui a pouco, então clique em “Finish”:Observe que o nosso projeto foi criado! O que precisamos fazer agora? Como podemos rodar a nossa aplicação? Precisamos, de alguma forma, configurar alguma classe para atender as requisições para a nossa a aplicação, porém, como podemos configurar essa classe?
Existem diversas formas para configurar essa classe e, nesse post, utilizaremos a API de Servlet do Java pra resolver isso!
Baixe a biblioteca Servlet 3.0 e descompacte o arquivo. Agora precisamos adicionar a Servlet ao nosso projeto que é justamente o arquivo .jar.
Vá até o eclipse e observe que existe uma pasta chamada lib dentro da pasta “WebContent/WEB-INF/”. Copie o arquivo .jar e cole nessa pasta:
Clique com o botão direito em cima do .jar e escolha a opção “Build Path > Add to Build Path”. Agora vá até a pasta “Java Resource” e observe que o nosso .jar foi adicionado à nossa lista de bibliotecas do projeto!
Quando adicionamos uma biblioteca dentro de uma pasta do nosso projeto, como foi o caso da “WebContent/WEB-INF/lib/”, temos a vantagem de exportar o nosso projeto junto com as dependências para o seu funcionamento, ou seja, todas as bibliotecas necessárias para que ele funcione caso seja reutilizado em qualquer lugar!
Já podemos configurar nossa primeira Servlet! Então vamos criar uma classe nova que representará a nossa Servlet, vamos chama-lá de
MainServlet
:Para transformarmos uma classe em uma Servlet, precisamos estender a classe
HttpServlet
:Agora precisamos implementar o método que será responsável em receber uma requisição via HTTP, que é o
doGet()
:Criamos a nossa primeira Servlet! Vamos rodar a nossa aplicação? Clique com o botão direito em cima do projeto “Run as > 1 Run On Server”:
Observe que agora precisamos configurar o servidor de aplicação! Dentro do campo “Select the server type:” digite Tomcat para que seja filtrado o servidor de aplicação. Procure e selecione a versão “Tomcat v7.0 server” e clique em “Next”:
Clique em “Browse” e busque a pasta descompactada do Tomcat. Após encontrar clique em “Finish”:
Agora o Tomcat está configurado! Perceba que foi criado o projeto Servers que é justamente o local onde o eclipse adicionou o nosso Tomcat e também apareceu uma aba de Servers indicando que o Tomcat está funcionando:
Além disso, se verificarmos a aba console, veremos o log do Tomcat que exibe se, no momento que ele foi iniciado, ocorreu algum problema ou não:
Apenas log de INFO, então, aparentemente, está tudo bem! Se clicarmos em cima do Tomcat na view “Servers” ele abrirá o painel de configuração do nosso servidor de aplicação:
Observe que temos diversas opções para configurar, porém, as que nos interessa no momento é justamente o port name HTTP/1.1 que é justamente a porta que o Tomcat está tratando requisições do protocolo HTTP, ou seja, para acessar a nossa aplicação via URL do protocolo HTTP precisará utilizar a porta 8080!
Agora podemos testar a nossa aplicação! Vá no navegador copie e cole a seguinte URL
http://localhost:8080/minha-biblioteca/
(caso o seu projeto tiver um nome diferente, substitua apenas o minha-biblioteca para o nome do seu projeto) que significa que estamos acessando uma URL via HTTP em localhost (sua própria máquina) e na porta 8080. Por fim, aperte Enter para fazer a chamada para a aplicação:Erro 404? Ele não achou nada do meu projeto! O que será que aconteceu? Além de criar uma Servlet, nós precisamos registrá-la no arquivo
web.xml
que é o arquivo responsável em descrever todas as informações de deploy da aplicação! Então vamos registrar a nossa Servlet:Observe que tivemos que utilizar a tag
servlet-name
para dar um nome para a nossa Servlet e a tagservlet-class
para especificar qual é a classe que representa essa Servlet que estamos registrando! Perceba também que o nome que precisamos especificar é justamente o nome completo da classe, ou seja, o nome do pacote inteiro e depois a classe.Se testássemos novamente, a nossa aplicação não responderia com a mesma URL, pois não definimos que iremos atender aquela URL! Para configurarmos o endereço que a nossa Servlet atenderá, basta adicionar a tag
servlet-mapping
informando o nome da nossa Servlet e a URL que ela vai atender, nesse caso a barra (“/”):o nosso XML fica assim:
Vamos testar novamente a nossa aplicação? Mas antes, vamos adicionar uma mensagem para que seja impressa no momento que for executada:
Clique com o botão direito em cima do projeto “Run as > 1 Run on Server”, agora que o Tomcat já estava iniciado, o eclipse vai perguntar se você deseja reiniciá-lo, marque a opção para reiniciar para garantir que todas as nossas alterações funcionem. Agora, se testarmos a URL
http://localhost:8080/minha-biblioteca/
:Página em branco? Vamos verificar o nosso console:
O nosso
sysout
foi impresso! Mas o ideal seria imprimir essa mensagem no navegador! Como podemos fazer isso? Observe que recebemos dois parâmetros no métododoGet()
oHttpServletRequest req
e oHttpServletResponse resp
:HttpServletRequest
é o parâmetro que representa as requisições à nossa aplicação, ou seja, tudo que o cliente manda será recebido por meio desse parâmetroHttpServletResponse
é o parâmetro que representa as respostas da nossa aplicação, ou seja, tudo que mandamos para o cliente será enviado por meio desse parâmetroIsso significa que podemos o
HttpServletResponse
para mandar uma mensagem! E faremos isso utilizando o métodogetWriter()
que devolve um objeto do tipoPrintWriter
:Agora basta apenas imprimir utilizando o método
print()
:Vamos testar novamente! Clique com o botão direto em cima do Tomcat e escolha a opção “Restart” para reiniciá-lo, então teste novamente o link
http://localhost:8080/minha-biblioteca/
:Conseguimos enviar uma mensagem! Além de só imprimir um texto puro, podemos enviar tags em HTML também, basta informar que a resposta será em HTML por meio do método
setContentType()
, por exemplo, para listar os meus livros:Excelente! Agora já podemos imprimir as mensagens que desejamos no nosso navegador! E melhor ainda, utilizando HTML!
Nesse post aprendemos a criar uma aplicação Java Web básica utilizando o eclipse para Java EE e a API de Servlet do Java. Vimos como podemos criar um projeto para Java Web e como podemos adicionar a biblioteca de Servlet no projeto por meio do Build Path. Além disso, aprendemos que para criar uma Servlet, precisamos estender a classe
HttpServlet
, implementar o métododoGet()
e registrar a nossa Servlet no arquivo web.xml que será responsável em descrever todas as informações de deploy da nossa aplicação! Por fim, vimos como enviar uma resposta em texto ou em HTML todas as vezes que alguém faz uma requisição à nossa aplicação.E aí, o que achou da API de Servlet? Quer aprender mais sobre Servlets? Pensando nisso, o instrutor Guilherme Silveira criou o curso de Servlets e os fundamentos de Java na Web no Alura, onde é abordado diversos assuntos sobre Servlets e os principais fundamentos sobre a programação de aplicações para Java Web!
FIQUE POR DENTRO
Compartilhe:
Alex Felipe
Content Editor at Alura and Software Developer
Próximo ArtigoDesmistificando o protocolo HTTP - parte 1