Você está aqui: Java Servlets ::: Dicas & Truques ::: Passos Iniciais

Como criar o seu primeiro Java Servlet usando apenas o Bloco de Notas e o Apache Tomcat

Quantidade de visualizações: 1739 vezes
Sim, é isso mesmo. Nesta dica mostrarei como montar a estrutura de uma aplicação Java Web e como executá-la no servidor Apache Tomcat. A idéia aqui é entender como este processo funciona antes de ficarmos totalmente dependentes de IDEs tais como Eclipse, NetBeans, etc.

É claro que as IDEs agilizam muito o nosso trabalho, nos poupando de várias tarefas intermediárias. O problema em escrever uma aplicação Java Web usando IDEs é que muitos dos detalhes ficam ocultos pelas IDEs. Dessa forma, quando algum problema sério ocorre nós temos que excluir todo o projeto e recomeçar do zero ou gastar horas e horas tentando descobrir o que pode ter acontecido de errado.

Aqui eu falei Bloco de Notas, mas você pode usar o seu editor de códigos favorito. Então, vamos começar.

O primeiro passo é fazer uma instalação do servidor web Apache Tomcat. Se você ainda não sabe como fazer isso, basta seguir este link aqui: Como instalar o Apache Tomcat - Como baixar, instalar e testar o servidor web Apache Tomcat.

Como criar a estrutura da aplicação Java Web

Com o Apache Tomcat instalado e já testado, vá até o diretório "C:\Tomcat_10\webapps" e crie uma pasta chamada "estudos". Agora, dentro da pasta "estudos", crie uma pasta chamada "WEB-INF" e, dentro da pasta "WEB-INF", crie duas pastas, uma chamada "lib" e a outra chamada "classes". No final, sua estrutura deve ficar parecida com a imagem abaixo:



Essa estrutura é a mais comum para aplicações Java Web. Os mais importantes aqui são o arquivo descritor de deployement web.xml (dentro do diretório WEB-INF) e os servlets, que são colocados sempre dentro do diretório "classes".

Como escrever um Java Servlet usando apenas o Bloco de Notas

Vamos escrever nosso Java Servlet então? Eu vou usar o Bloco de Notas, mas fique à vontade para usar o seu editor de códigos favorito. Assim, crie um arquivo chamado MensagemServlet.java com o seguinte conteúdo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;

public class MensagemServlet extends HttpServlet{
  public void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException{

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<html><body>");
    out.println("<h1>Estou estudando Servlets</h1>");
    out.println("</body></html>");
  }
}

Note que nesta dica eu já troquei o pacote "javax.servlet" por "jakarta.servlet". Dependendo da sua versão do Apache Tomcat você deverá deixar "javax" mesmo.

Para este tutorial nós podemos salvar o nosso Java Servlet dentro da pasta "classes" da nossa aplicação, visto que o nosso propósito é só estudar mesmo. Em uma aplicação do mundo real lembre-se de excluir os arquivos .java antes de distribuir o seu código.

Como compilar o Java Servlet pela linha de comando

Chegou a hora de compilar o nosso Java Servlet usando a linha de comando. Sim, isso mesmo. Nós vamos invocar o javac. Para isso, abra uma nova janela de comando e dispare os comandos:

1) C:\Users\Osmar>cd C:\Tomcat_10\webapps\estudos\WEB-INF\classes

2) C:\Tomcat_10\webapps\estudos\WEB-INF\classes>javac MensagemServlet.java

Quando você pressionar Enter, é 99% certeza que você verá as seguintes mensagens de erro:
MensagemServlet.java:5: error: cannot find symbol
public class MensagemServlet extends HttpServlet{
^
symbol: class HttpServlet
MensagemServlet.java:6: error: cannot find symbol
public void doGet(HttpServletRequest request,
^
symbol: class HttpServletRequest
location: class MensagemServlet
MensagemServlet.java:7: error: cannot find symbol
HttpServletResponse response) throws ServletException,
^
symbol: class HttpServletResponse
location: class MensagemServlet
MensagemServlet.java:7: error: cannot find symbol
HttpServletResponse response) throws ServletException,
^
symbol: class ServletException
location: class MensagemServlet
MensagemServlet.java:2: error: package jakarta.servlet does not exist
import jakarta.servlet.*;
^
MensagemServlet.java:3: error: package jakarta.servlet.http does not exist
import jakarta.servlet.http.*;
^
6 errors

Isso aconteceu porque nós precisamos do servlet-api.jar para compilar os Java Servlets. Você pode baixar este JAR na internet ou usar o servlet-api.jar que já vem com o Tomcat. Assim, basta mudar o comando de compilação:

C:\Tomcat_10\webapps\estudos\WEB-INF\classes>javac -classpath "C:\Tomcat_10\lib\servlet-api.jar" MensagemServlet.java

Se os caminhos informados no comando javac estiverem todos corretos, o Java Servlet será compilado e você encontrará um arquivo MensagemServlet.class no diretório "C:\Tomcat_10\webapps\estudos\WEB-INF\classes".

Como criar o Arquivo Descritor de Deployment web.xml

O Deployment Descriptor (DD) é um arquivo (ou documento) XML usado pelo contâiner web para executar Java Servlets e páginas JSP. Sua função, entre outras, é mapear URLs para as classes Servlets, inicializar parâmetros, definir páginas de erro, definir regras de segurança, declarar bibliotecas de tags, etc.

Então, crie um arquivo web.xml, dentro do diretório WEB-INF, com o seguinte conteúdo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
 version="2.4" 
 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">
  
  <display-name>Estudos</display-name>
  <display-name>Um simples Java Servlet</display-name>
  <description>Mostra apenas uma mensagem</description>

  <servlet>
    <servlet-name>mensagem</servlet-name>
    <description>Meu primeiro Servlet</description>
    <servlet-class>MensagemServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>mensagem</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>


Pronto! Já temos tudo pronto. Chegou a hora de executar o Java Servlet a partir do Apache Tomcat.

Como executar o Java Servlet no Apache Tomcat

Se o Apache Tomcat não estiver sendo executado, inicie o serviço, vá até a URL http://localhost:8080/estudos e veja o resultado. Se tudo correr bem, você verá o seguinte resultado:

Estou estudando Servlets

Algumas vezes pode ser necessário você se certificar de que a aplicação Java Web foi instalada corretamente no Apache Tomcat. Isso pode ser feito pelo Application Manager, na URL http://localhost:8080/manager/html. É nessa tela que temos todas uma lista com as aplicações instaladas e as opções de parar, reiniciar o contexto da aplicação, etc.

Agora é só aprofundar os seus estudos de Java Servlets. Boa jornada!

Link para compartilhar na Internet ou com seus amigos:

Java Servlets ::: Dicas & Truques ::: URLs, Documentos e Páginas

Como compartilhar dados entre um Java Servlet e uma página JSP usando a requisição HttpServletRequest

Quantidade de visualizações: 8287 vezes
Quando usamos o método forward() da interface RequestDispatcher para direcionar para um outro Java Servlet ou página JSP, tanto o objeto de requisição ServletRequest quanto o objeto de resposta ServletResponse são enviados também. Assim, podemos tirar proveito desta funcionalidade para compartilhar dados entre um servlet e uma página JSP usando a requisição. Vamos ver como isso é possível.

Comece analisando o seguinte servlet:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;

public class MeuServlet extends HttpServlet{
  public void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException{

    // cria uma instância da classe Pessoa
    Pessoa p = new Pessoa();
    p.setNome("Osmar J. Silva");

    // vamos colocar o objeto p na requisição
    request.setAttribute("pessoaBean", p);

    // agora direcionamos para a página exibir.jsp
    RequestDispatcher dispatcher = 
      request.getRequestDispatcher("/exibir.jsp");
    dispatcher.forward(request, response); 
  }
}

Note que aqui eu já estou usando o pacote jakarta.servlet em vez de javax.servlet. Confirme se você está usando o Java EE ou Jakarta EE.

Veja que no método doGet() deste Servlet nós temos a criação de uma instância da classe Pessoa (Pessoa.java). Esta classe tem a seguinte estrutura:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

public class Pessoa{
  private String nome;

  public String getNome(){
    return this.nome;
  }

  public void setNome(String nome){
    this.nome = nome;
  }
}

Depois de criada a instância da classe nós a colocamos na requisição atual usando:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// vamos colocar o objeto p na requisição
request.setAttribute("pessoaBean", p);


O passo seguinte é direcionar a requisição atual para a página exibir.jsp (a View do MVC). Veja o código para esta página:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<jsp:useBean id="pessoaBean" scope="request"
 type="estudos.Pessoa" />
<html>
<head>
  <title>Estudos Servlet</title>
  <meta http-equiv="Content-Type" content="text/html; 
    charset=iso-8859-2">
</head>
<body>

<h4>Nome da pessoa: <jsp:getProperty name="pessoaBean"
  property="nome" /></h4>

</body>
</html>

Aqui nós estamos usando <jsp:getProperty> para acessar um dos atributos do bean pessoaBean. Poderíamos usar JSTL e EL. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<%@ taglib prefix="c" 
  uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="pessoaBean" scope="request" 
  type="estudos.Pessoa" />
<html>
<head>
  <title>Estudos Servlet</title>
  <meta http-equiv="Content-Type" content="text/html; 
    charset=iso-8859-2">
</head>
<body>

<h4>Nome da pessoa: <c:out value="${pessoaBean.nome}"/></h4>

</body>
</html>

Fiz o mapeamento deste Java Servlet para a URL http://localhost:8080/estudos/meuservlet. Ao chamá-la nós teremos o seguinte resultado:

Nome da pessoa: Osmar J. Silva


Vamos testar seus conhecimentos em Python

Qual o resultado da execução do seguinte código Python?

valor = 5
for i in range(0, 4):
  valor++
  
print("O valor final é: {0}  ".format(valor))

A) O valor final é: 8

B) O valor final é: 9

C) Erro de SyntaxError: invalid syntax na linha 3

D) O valor final é: 7

E) Erro de SyntaxError: invalid syntax na linha 2
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual o resultado da execução do seguinte código Python?

valor = 5
contador = 0
while valor < 20:
  valor = valor + 3
  contador = contador + 1

print("O laço while repetiu {0} vezes.".format(contador))

A) O laço while repetiu 7 vezes.

B) O laço while repetiu 6 vezes.

C) O laço while repetiu 4 vezes.

D) O laço while repetiu 5 vezes.

E) O laço while repetiu 8 vezes.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Equação da continuidade

Um cano de 2,00 cm de diâmetro se estreita para 8,00 mm. No primeiro segmento, um líquido flui com velocidade de 4,00 m/s. A velocidade do líquido no segundo segmento e a vazão de volume no cano valem, respectivamente:

A) 16,0 m/s e 1,26 x 10-3 m3/s.

B) 100 m/s e 5,03 x 10-4 m3/s.

C) 25,0 m/s e 4,00 x 10-4 m3/s.

D) 25,0 m/s e 1,26 x 10-3 m3/s.

E) 1,00 m/s e 1,26 m3/s.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira

Perfil em aço

À medida que os perfis de aço são utilizados para estruturar uma edificação, é fundamental que sejam conectados uns aos outros. Isso vai garantir a estabilidade da construção e permitir a criação de blocos mais resistentes.

Considerando essa informação e a figura apresentada a seguir, assinale a alternativa que indica corretamente o tipo de conexão que está sendo utilizado.



A) Conexão de cisalhamento com solda.

B) Conexão de momento com solda.

C) Conexão de cisalhamento com pinos.

D) Conexão de momento com pinos.

E) Conexão de tensão com solda.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

A transpiração é um processo fundamental na contribuição para o acúmulo de água em estado gasoso na atmosfera. Qual agente é um dos principais atores nesse processo?

A) Rochas.

B) Solos férteis.

C) Chuvas.

D) Seres vivos.

E) Minerais.
Verificar Resposta Estudar Cards Todas as Questões

Veja mais Dicas e truques de Java Servlets

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 55 usuários muito felizes estudando em nosso site.