Jakarta EE - Servlets
- #Java
O que são?
Os Servlets são essencialmente classes Java que herdam da classe HttpServlet. Seu principal objetivo é lidar com as solicitações web recebidas de clientes e fornecer uma resposta correspondente. Eles formam a fundação fundamental do desenvolvimento web em Java.
Ciclo de vida de um Servlet
Ao contrário da abordagem convencional em Java, que utiliza um método "main" para orquestrar a execução de processos, no contexto de Servlets, é o container web que assume a responsabilidade pelo gerenciamento. Não precisamos de uma função "main" estática para iniciar nosso programa; em vez disso, o ciclo de vida do Servlet é controlado de forma autônoma pelo próprio container web.
Etapas do Ciclo de vida
- Inicialização
- Atendimento das requisições
- Finalização
Inicialização do Servlet
Ocorre através da inicialização do servidor ou quando receber a primeira requisição
Após a inicializar, um servlet ficará esperando requisições enquanto estiver ativo
Finalização do Servlet
É finalizado quando o server web é finalizado ou a aplicação se torna inativa.
Método de Inicialização: void init()
O container inicia o meu Servlet executando o método "init", permitindo que ele seja preparado para atender às solicitações.
Método de Serviço: void service(HttpServletRequest request, HttpServletResponse response)
Cada vez que uma requisição é recebida pelo meu container, o método "service" do meu Servlet é invocado. Este método é encarregado de direcionar a solicitação para um dos métodos específicos, como "doGet", "doPost" e assim por diante.
Método de Encerramento: void destroy()
Quando é hora de desligar o servidor web, o método "destroy" é acionado para realizar as operações de finalização necessárias.
Desenvolvimento de um Servlet
- Crie uma classe que herde de HttpServlet: Comece criando uma classe que estenda a classe HttpServlet, a partir da qual você irá construir o seu Servlet.
- Utilize a anotação @WebServlet: Marque a sua classe com a anotação @WebServlet, especificando o caminho virtual pelo qual o cliente poderá acessar o Servlet.
- Implemente pelo menos um dos métodos doXXX(): É fundamental implementar pelo menos um dos métodos doXXX(), como por exemplo, doGet() ou doPost(). Esses métodos são responsáveis por processar as requisições dos clientes.
- Parâmetros do método doXXX(): Os métodos doXXX() recebem dois parâmetros:
- Um objeto HttpServletRequest que representa a requisição. A partir desse objeto, é possível acessar parâmetros, cookies e cabeçalhos da requisição.
- Um objeto HttpServletResponse que representa a resposta. Com este objeto, você pode obter o fluxo de saída, o qual será enviado como resposta ao cliente.
Mapeamento de um Servlet
O mapeamento é a definição de como um Servlet responde a um endereço específico.
Existem duas maneiras de realizar esse mapeamento: por meio de anotações diretamente no código do Servlet ou através da configuração em um arquivo chamado "web.xml".
Cada uma tendo vantagens e desvantagens. Como por exemplo, caso seja necessário mudar a anotação tenho que compilar novamente, sendo que no arquivo .xml por ser apenas texto, poso apenas fazer as alterações necessárias.
@WebServlet(name = "Servlet", urlPatterns = {"/Servlet"})
public class Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()){
out.println("<h1>Ola Mundo</h1>");
}
}