CodeGym /Cursos Java /Módulo 3 /Introdução aos Servlets

Introdução aos Servlets

Módulo 3
Nível 12 , Lição 0
Disponível

1.1 Interface Servlet

Hoje estamos iniciando um novo e interessante tópico - servlets . Foi a adição de servlets ao Java que o tornou o padrão de fato para grandes aplicativos de servidor. 80% de todos os softwares corporativos do mundo são escritos em Java. E na China é tudo 100%. Então, o que são servlets?

Um servlet é exatamente o que transforma um programa Java em um serviço da Web e permite que ele processe solicitações de clientes. E foi assim...

Nos anos 90, imediatamente após o advento da World Wide Web, surgiram os clientes web (navegadores) e os servidores web. Os servidores da Web geralmente simplesmente distribuem o arquivo armazenado na Internet: páginas html, scripts, imagens, etc.

Em algum momento, todos chegaram à conclusão de que seria necessário tornar os dois lados mais inteligentes. O JavaScript foi adicionado às páginas HTML e os plug-ins foram adicionados aos servidores - scripts especiais que foram chamados em resposta a determinadas solicitações e tornaram o comportamento do servidor mais flexível e inteligente.

Portanto, um servlet é um plug-in Java que foi incorporado Java web-servere permitiu que ele executasse o código Java quando solicitado para determinadas páginas. E esse código Java, representado por uma classe herdada da classe Servlet, fez o que seus desenvolvedores pretendiam.

E como você já sabe, o servidor web Java mais popular é o Tomcat . Nomeado, aliás, em homenagem ao gato Tom do desenho animado “Tom e Jerry”.

Como o Tomcat interage com os servlets? Na verdade, esse processo é padronizado e é chamado de ciclo de vida do servlet . Nela, um servlet é um objeto carregável e um servidor web é um contêiner de servlet .

Se o servlet ainda não foi carregado , então:

  1. A classe servlet é carregada pelo contêiner.
  2. O container cria uma instância da classe (objeto) do servlet.
  3. O contêiner chama um método init()no objeto servlet. O método é chamado apenas uma vez.

Ciclo de trabalho padrão - atendendo a uma solicitação do cliente :

  • Cada solicitação é processada em um thread separado.
  • O contêiner chama um método service()no servlet e passa os objetos ServletRequest e ServletResponse para lá.
  • Para encerrar o servlet, um método é chamado destroy()no objeto servlet. É chamado apenas uma vez.

Pode haver muitas razões pelas quais um servlet termina:

  • O programador reinicia o servidor web, é necessário desligar normalmente todos os servlets.
  • O programador carrega uma nova versão do servlet, a antiga deve ser descarregada corretamente.
  • E assim por diante.

Lembre-se do principal: o servidor web e seus servlets devem funcionar sem falhas e reiniciar por meses, atendendo a milhares de solicitações por minuto. Portanto, o código para carregar, trabalhar e descarregar um servlet sempre deve ser escrito em alta qualidade.

1.2 classe HttpServlet

A classe Servlet existe para padronizar como um servlet e um contêiner funcionam. Os programadores não trabalham diretamente com esta classe. Bem, eles raramente funcionam. A classe mais comumente usada HttpServleté herdada do Servlet.

Esta classe tem vários métodos que serão úteis para nós. Você frequentemente os usará:

Método Descrição
1 init() Chamado uma vez quando o servlet é carregado
2 destroy() Chamado uma vez quando o servlet é descarregado
3 service(HttpRequest, HttpResponse) Chamado para cada nova solicitação ao servlet
4 doGet(HttpRequest, HttpResponse) Chamado para cada nova solicitação GET para o servlet
5 doPost(HttpRequest, HttpResponse) Chamado para cada nova solicitação POST para o servlet
6 doHead(HttpRequest, HttpResponse) Chamado para cada nova solicitação HEAD para o servlet
7 doDelete(HttpRequest, HttpResponse) Chamado para cada nova solicitação DELETE para o servlet
8 doPut(HttpRequest, HttpResponse) Chamado para cada nova solicitação PUT para o servlet

Os métodos init()e destroy()são herdados da classe Servlet. Portanto, se você decidir substituí-los em seu servlet, também precisará chamar sua implementação a partir da classe base. O comando é usado para isso super.method name().

Exemplo de servlet:


public class FirstHttpServlet extends HttpServlet {
  
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        // Getting the parameter “secret” from request
        String secret = request.getParameter("secret");
 
        // Put parameter “secret” into Http-session
        HttpSession session = request.getSession(true);
        session.setAttribute("secret", secret);
 
        // Print HTML as response for browser
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Header</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet example "+ secret +"</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}

1.3 método service(HttpServletRequest, HttpServletResponse)

Se você observar o processamento de uma solicitação do cliente do ponto de vista de um servlet, as coisas serão mais ou menos assim.

Para cada solicitação do cliente, o contêiner (servidor da Web) cria objetos HttpServletRequeste HttpServletResponse, em seguida, chama um método service(HttpServletRequest request, HttpServletResponse response)no servlet correspondente. Esses objetos são passados ​​para ele para que o método possa pegar os dados necessários requeste colocar o resultado do trabalho em response.

O método service()tem uma implementação padrão. Se não for redefinido, será executado. Isso é o que ele faz.

O método service()determina o tipo de método HTTP da solicitação (GET, POST, ...) e chama o método correspondente à solicitação.

Método Descrição
1 service(HttpRequest, HttpResponse) Chamado para cada nova solicitação ao servlet
2 doGet(HttpRequest, HttpResponse) Chamado para cada nova solicitação GET para o servlet
3 doPost(HttpRequest, HttpResponse) Chamado para cada nova solicitação POST para o servlet
4 doHead(HttpRequest, HttpResponse) Chamado para cada nova solicitação HEAD para o servlet
5 doDelete(HttpRequest, HttpResponse) Chamado para cada nova solicitação DELETE para o servlet
6 doPut(HttpRequest, HttpResponse) Chamado para cada nova solicitação PUT para o servlet

Em sua classe, você pode redefinir um método service()ou deixá-lo sozinho, mas redefinir métodos doGet(), doPost(), ... conforme necessário.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION