Sie sind auf Seite 1von 39

Fique por dentro!

Receba os principais contedos de programao, design e tecnologia no seu email! Inscreva-se, como outros milhares de profissionais.

Nome *
Email *
Quero receber contedos
No quero saber novidades do mundo tech :(
(http://blog.alura.com.br/wp-content/uploads/2016/05/browser-1666995_1280.png)

Criando uma aplicao Java Web com Servlet


24 de maio de 2016 / Programao (http://blog.alura.com.br/category/programacao/) /
3 Comments (http://blog.alura.com.br/criando-uma-aplicacao-java-web-com-servlet/#disqus_thread)

(Last Updated On: 1 de junho de 2017)

Todas as vezes que desenvolvemos uma aplicao Java, criamos os nossos arquivos .java, compilamos e executamos os
arquivos .class, porm sempre fazemos isso dentro de um computador que precisa ter o Java instalado! Alm disso, na
maioria das vezes so aplicaes que a interface gr ca um terminal, nada atrativo para o usurio
E como poderamos melhorar essa situao? Criando uma aplicao Web! Ou seja, uma aplicao 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 aplicao web ns precisamos de um servidor de aplicao que ser responsvel em
manter a nossa aplicao funcionando!

Atualmente, existem diversos servidores de aplicao e linguagens de programao que podemos utilizar para a nossa
aplicao, porm, iremos criar uma aplicao Java Web e o nosso servidor de aplicao ser o Tomcat
(http://tomcat.apache.org/).

Para desenvolver essa aplicao utilizaremos o eclipse IDE (https://eclipse.org/ide/) que facilitar a nossa vida durante o
desenvolvimento! Caso no tenha o eclipse, faa o download da verso para Java EE
(http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2), descompacte o arquivo .zip e
execute o eclipse:
(https://i0.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/home-eclipse.png)

Precisamos criar um projeto para Java Web! Mas como fazemos isso no eclipse? Simples! V em no menu File > New >
Dynamic Web Project:
(https://i1.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/nomeando-projeto.png)

D um nome ao projeto, nesse caso, eu coloquei como minha-biblioteca, pois ser uma aplicao que vai cadastrar e listar
todos os meus livros. Aps colocar o nome clique em Next:
(https://i1.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/de nindo-source.png)

Essa janela serve para con gurao de build do projeto. Deixaremos essa con gurao padro, ento clique em Next
novamente:
(https://i0.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/janela-modulo-web.png)

Essa janela para a con gurao de modulo, marque apenas a opo Generate web.xml deployment descriptor para criar
o arquivo web.xml padro que usaremos daqui a pouco, ento clique em Finish:
(https://i2.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/projeto-criado.png)

Observe que o nosso projeto foi criado! O que precisamos fazer agora? Como podemos rodar a nossa aplicao?
Precisamos, de alguma forma, con gurar alguma classe para atender as requisies para a nossa a aplicao, porm, como
podemos con gurar essa classe?

Existem diversas formas para con gurar essa classe e, nesse post, utilizaremos a API de Servlet do Java pra resolver isso!

Baixe a biblioteca Servlet 3.0 (http://download.oracle.com/otndocs/jcp/servlet-3.0-fr-eval-oth-JSpec/) 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:
(https://i0.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/adicionando-jar.png)

Clique com o boto direito em cima do .jar e escolha a opo 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!

(https://i0.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/jar-no-build-path.png)
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 dependncias para o seu funcionamento, ou seja,
todas as bibliotecas necessrias para que ele funcione caso seja reutilizado em qualquer lugar!

J podemos con gurar nossa primeira Servlet! Ento vamos criar uma classe nova que representar a nossa Servlet, vamos
chama-l de MainServlet :

package br.com (http://br.com).caelum.alura.biblioteca.servlet;

public class MainServlet {

Para transformarmos uma classe em uma Servlet, precisamos estender a classe HttpServlet :

package br.com (http://br.com).caelum.alura.biblioteca.servlet;

import javax.servlet.http.HttpServlet;

public class MainServlet extends HttpServlet {

Agora precisamos implementar o mtodo que ser responsvel em receber uma requisio via HTTP, que o doGet() :
package br.com (http://br.com).caelum.alura.biblioteca.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MainServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

Criamos a nossa primeira Servlet! Vamos rodar a nossa aplicao? Clique com o boto direito em cima do projeto Run as > 1
Run On Server:
(https://i0.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/tela-lista-server.png)

Observe que agora precisamos con gurar o servidor de aplicao! Dentro do campo Select the server type: digite Tomcat
para que seja ltrado o servidor de aplicao. Procure e selecione a verso Tomcat v7.0 server e clique em Next:
(https://i0.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/con gurand-tomcat.png)

Clique em Browse e busque a pasta descompactada do Tomcat. Aps encontrar clique em Finish:

(https://i2.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/apos-instalacao-do-tomcat.png)
Agora o Tomcat est con gurado! Perceba que foi criado o projeto Servers que justamente o local onde o eclipse
adicionou o nosso Tomcat e tambm apareceu uma aba de Servers indicando que o Tomcat est funcionando:

(https://i1.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/tomcat.png)

Alm disso, se veri carmos a aba console, veremos o log do Tomcat que exibe se, no momento que ele foi iniciado, ocorreu
algum problema ou no:
(https://i1.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/log-tomcat.png)

Apenas log de INFO, ento, aparentemente, est tudo bem! Se clicarmos em cima do Tomcat na view Servers ele abrir o
painel de con gurao do nosso servidor de aplicao:
(https://i2.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/painel-tomcat.png)

Observe que temos diversas opes para con gurar, porm, as que nos interessa no momento justamente o port name
HTTP/1.1 que justamente a porta que o Tomcat est tratando requisies do protocolo HTTP, ou seja, para acessar a
nossa aplicao via URL do protocolo HTTP precisar utilizar a porta 8080!
Agora podemos testar a nossa aplicao! V no navegador copie e cole a seguinte URL
http://localhost:8080/minha-biblioteca/ (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 signi ca que estamos acessando
uma URL via HTTP em localhost (sua prpria mquina) e na porta 8080. Por m, aperte Enter para fazer a chamada para a
aplicao:

(https://i2.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/erro404.png)
Erro 404? Ele no achou nada do meu projeto! O que ser que aconteceu? Alm de criar uma Servlet, ns precisamos
registr-la no arquivo web.xml que o arquivo responsvel em descrever todas as informaes de deploy da aplicao!
Ento vamos registrar a nossa Servlet:

<?xml version="1.0" encoding="UTF-8"?>


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance (http://www.w3.org/2001/XMLSchema-instance)"
xmlns="http://java.sun.com/xml/ns/javaee (http://java.sun.com/xml/ns/javaee)"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee (http://java.sun.com/xml/ns/javaee)
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd (http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd)"
id="WebApp_ID" version="3.0">
<display-name>minha-biblioteca</display-name>

<servlet>
<servlet-name>Main Servlet</servlet-name>
<servlet-class>br.com (http://br.com).caelum.alura.biblioteca.servlet.MainServlet</servlet-class>
</servlet>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

</web-app>

Observe que tivemos que utilizar a tag servlet-name para dar um nome para a nossa Servlet e a tag servlet-class para
especi car qual a classe que representa essa Servlet que estamos registrando! Perceba tambm que o nome que
precisamos especi car justamente o nome completo da classe, ou seja, o nome do pacote inteiro e depois a classe.
Se testssemos novamente, a nossa aplicao no responderia com a mesma URL, pois no de nimos que iremos atender
aquela URL! Para con gurarmos o endereo 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 (/):

(http://blog.alura.com.br)
<servlet-mapping>
<servlet-name>Main Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

FRONT-END (HTTP://BLOG.ALURA.COM.BR/CATEGORY/FRONT-END/)
o nosso XML ca assim:

PROGRAMAO (HTTP://BLOG.ALURA.COM.BR/CATEGORY/PROGRAMACAO/) MOBILE (HTTP://BLOG.ALURA.COM.BR/CATEGORY/MOBILE/)

BUSINESS (HTTP://BLOG.ALURA.COM.BR/CATEGORY/BUSINESS/) DESIGN E UX (HTTP://BLOG.ALURA.COM.BR/CATEGORY/DESIGN/)

INFRA (HTTP://BLOG.ALURA.COM.BR/CATEGORY/INFRA/) NOSSOS CURSOS (HTTP://WWW.ALURA.COM.BR)


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance (http://www.w3.org/2001/XMLSchema-instance)"
xmlns="http://java.sun.com/xml/ns/javaee (http://java.sun.com/xml/ns/javaee)"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee (http://java.sun.com/xml/ns/javaee) http://java.sun.com/xml/ns/javaee/we
id="WebApp_ID" version="3.0">
<display-name>minha-biblioteca</display-name>

<servlet>
<servlet-name>Main Servlet</servlet-name>
<servlet-class>br.com (http://br.com).caelum.alura.biblioteca.servlet.MainServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Main Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

</web-app>

Vamos testar novamente a nossa aplicao? Mas antes, vamos adicionar uma mensagem para que seja impressa no
momento que for executada:

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("Meus livros");
}
Clique com o boto 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 opo para reiniciar para garantir que todas as nossas alteraes
funcionem. Agora, se testarmos a URL
http://localhost:8080/minha-biblioteca/ (http://localhost:8080/minha-biblioteca/) :

(https://i2.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/tela-em-branco.png)

Pgina em branco? Vamos veri car o nosso console:


(https://i2.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/log-apos-execucao.png)

O nosso sysout foi impresso! Mas o ideal seria imprimir essa mensagem no navegador! Como podemos fazer isso? Observe
que recebemos dois parmetros no mtodo doGet() o HttpServletRequest req e o HttpServletResponse resp :

HttpServletRequest o parmetro que representa as requisies nossa aplicao, ou seja, tudo que o cliente manda

ser recebido por meio desse parmetro

HttpServletResponse o parmetro que representa as respostas da nossa aplicao, ou seja, tudo que mandamos

para o cliente ser enviado por meio desse parmetro

Isso signi ca que podemos o HttpServletResponse para mandar uma mensagem! E faremos isso utilizando o mtodo
getWriter() que devolve um objeto do tipo PrintWriter :
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
}

Agora basta apenas imprimir utilizando o mtodo print() :

package br.com (http://br.com).caelum.alura.biblioteca.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MainServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.print("Meus livros");
}

Vamos testar novamente! Clique com o boto direto em cima do Tomcat e escolha a opo Restart para reinici-lo, ento
teste novamente o link http://localhost:8080/minha-biblioteca/ (http://localhost:8080/minha-biblioteca/) :
(https://i2.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/imprimindo-primeira-mensagem.png)

Conseguimos enviar uma mensagem! Alm de s imprimir um texto puro, podemos enviar tags em HTML tambm, basta
informar que a resposta ser em HTML por meio do mtodo setContentType() , por exemplo, para listar os meus livros:
package br.com (http://br.com).caelum.alura.biblioteca.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MainServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

resp.setContentType("text/html");

PrintWriter writer = resp.getWriter();

writer.print("Meus livros");

writer.print("<ul>");

writer.print("<li>");
writer.print("Livro de Java Web");
writer.print("</li>");

writer.print("<li>");
writer.print("Livro de Android");
writer.print("</li>");

writer.print("</ul>");

}
}
(https://i1.wp.com/blog.alura.com.br/wp-content/uploads/2016/03/lista-de-livros-inicial.png)

Excelente! Agora j podemos imprimir as mensagens que desejamos no nosso navegador! E melhor ainda, utilizando HTML!

Nesse post aprendemos a criar uma aplicao Java Web bsica 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. Alm disso, aprendemos que para criar uma Servlet, precisamos estender a classe HttpServlet ,
implementar o mtodo doGet() e registrar a nossa Servlet no arquivo web.xml que ser responsvel em descrever todas as
informaes de deploy da nossa aplicao! Por m, vimos como enviar uma resposta em texto ou em HTML todas as vezes
que algum faz uma requisio nossa aplicao.

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 (https://www.alura.com.br/curso-online-servlet-3-e-
fundamentos-web) no Alura, onde abordado diversos assuntos sobre Servlets e os principais fundamentos sobre a
programao de aplicaes para Java Web!

FIQUE POR DENTRO

Receba os principais contedos de programao, design e tecnologia no seu email! Inscreva-se, como outros
milhares de pro ssionais.

Nome

Email

Quero receber contedos


Compartilhe:

(http://blog.alura.com.br/criando-uma-aplicacao-java-web-com-servlet/?share=twitter&nb=1)

(http://blog.alura.com.br/criando-uma-aplicacao-java-web-com-servlet/?share=facebook&nb=1)
58

(http://blog.alura.com.br/criando-uma-aplicacao-java-web-com-servlet/?share=linkedin&nb=1)
39

(http://blog.alura.com.br/criando-uma-aplicacao-java-web-com-servlet/?share=google-plus-1&nb=1)

(http://blog.alura.com.br/criando-uma-aplicacao-java-web-com-servlet/?share=telegram&nb=1)

(whatsapp://send?text=Criando%20uma%20aplica%C3%A7%C3%A3o%20Java%20Web%20com%20Servlet http%3A%2F%2Fblog.alura.com.br%2Fcriando-uma-aplicacao-
java-web-com-servlet%2F)

Relacionado

Usando a pasta do Tomcat pelo Eclipse


(http://blog.alura.com.br/usando-a-pasta-do-
(http://blog.alura.com.br/usando-a-pasta-do-
tomcat-pelo-eclipse/)
tomcat-pelo-eclipse/)
Uma das coisas que nosdeixa bem chateados,
quando precisamos encontrar os arquivos que
estamosenviando para o servidor, e entrando na
pastawebapps do seu Tomcat no encontramos
nada, a no ser as aplicaes de exemplo do
10 de maro de 2016
Em "Programao"
(http://blog.alura.com.br/criando-aplicacoes- (http://blog.alura.com.br/para-que-serve-o-
angular-com-angular-cli/) string-args-em-java/)
Criando aplicaes Angular com Angular CLI Para que serve o String[] args em Java?
(http://blog.alura.com.br/criando-aplicacoes- (http://blog.alura.com.br/para-que-serve-o-
angular-com-angular-cli/) string-args-em-java/)
27 de julho de 2017 8 de fevereiro de 2016
Em "Front-end" Em "Programao"

build path (http://blog.alura.com.br/tag/build-path/) doGet (http://blog.alura.com.br/tag/doget/) eclipse (http://blog.alura.com.br/tag/eclipse/)

java (http://blog.alura.com.br/tag/java/) Java Web (http://blog.alura.com.br/tag/java-web/) PrintWriter (http://blog.alura.com.br/tag/printwriter/)

servidor de aplicao (http://blog.alura.com.br/tag/servidor-de-aplicacao/) Servlet (http://blog.alura.com.br/tag/servlet/)

tomcat (http://blog.alura.com.br/tag/tomcat/) web.xml (http://blog.alura.com.br/tag/web-xml/)

Compartilhe este Post

1 >

Alex Felipe (http://blog.alura.com.br/author/alex-felipe/)


Content Editor at Alura and Software Developer
3 COMENTRIOS Blog da Alura
1 Iniciar sesso

Mostrar primeiro os mais votados


Recomendar Partilhar

Escreva o seu comentrio...

INICIE SESSO COM O


OU REGISTE-SE NO DISQUS ?

Nome

pt.negro lerolero h 2 meses


e a pasta web-inf/class???

nada foi falada sobre ela, esta ainda usada em projetos java web?
Responder Partilhar

Ingrid Machado h um ano


Venho acompanhando as suas postagens e posso dizer que todas so muito teis. Parabns pelo timo tutorial!
Responder Partilhar

Alex Felipe > Ingrid Machado h um ano


Ol Ingrid, tudo bem? Fico muito contente que voc esteja gostando! Muito obrigado pelo feedback :)
Responder Partilhar
TAMBM NO BLOG DA ALURA

ES6 Desestruturando objetos Diferenas entre Hubs e Switches


4 COMENTRIOS h um ms 4 COMENTRIOS h 2 meses
Thiago Lagden Magalhes Coloca mais... tem que usar `try catch` Yuri Oliveira Muito obrigado Luciano! :)Sim, podemos dizer que o
dependendo da lgica, pode utilizar alias e pode definir valores redes sem fio se comportam da mesma forma que os

Automatizando aes e tarefas repetitivas no Photoshop O que so microinteraes?


1 COMENTRIO h 3 meses 4 COMENTRIOS h 2 meses
Marcos Andrade Mt bom! Alex Felipe Muito bom!

Subscrever d Acerca do DisqusAdicionar o DisqusAdicionar Privacidade

Prximo Artigo
DESMISTIFICANDO O PROTOCOLO HTTP - PARTE 1

(http://blog.alura.com.br/desmisti cando-o-protocolo-http-parte-1/)
FIQUE POR DENTRO

Receba os principais contedos de programao, design e tecnologia no seu email! Inscreva-se, como outros milhares de
pro ssionais.

Nome

Email

Quero receber contedos

PESQUISAR POSTS

Buscar
(https://www.facebook.com/AluraCursosOnline/) (https://twitter.com/aluraonline)

(https://www.linkedin.com/company/alura-cursos-online/) U (https://www.youtube.com/user/aluracursosonline)

(http://blog.alura.com.br/feed/)

CONHEA NOSSAS CARREIRAS

Iniciante em Programao

(https://www.alura.com.br/carreira-iniciante-em-logica-de-programacao)

Desenvolvedor Android Jnior

(https://www.alura.com.br/carreira-desenvolvedor-android)
Desenvolvedor Front-end

(https://www.alura.com.br/carreira-desenvolvedor-front-end)

Design Web Junior

(https://www.alura.com.br/carreira-design-web-junior)

Agilista

(https://www.alura.com.br/carreira-agilista)

Das könnte Ihnen auch gefallen