O que vem abaixo de HttpServlet são os nossos próprios Servlets. Eles DEVEM estender HttpServlet. Por que? Se olharmos na documentação, veremos que a classe HttpServlet possui um método chamado service que conta com dois parâmetros: HttpServletRequest e HttpServletResponse. O objeto HttpServletRequest cuida da solicitação (requisição), já o HttpServletResponse cuida da resposta. Precisamos desses dois objetos para podermos, por exemplo, pegar os parâmetros de entrada da requisição, pegar parâmetros iniciais do Servlet, setar atributos (de requisição ou de sessão, por exemplo). O método service é chamado quando o container recebe a primeira solicitação do cliente. Ele aloca uma Thread específica para este Servlet e processa a requisição.Além do método service, dois métodos importantíssimos a classe HttpServlet possui:
- doPost(HttpServletRequest, HttpServletResponse)
- doGet(HttpServletRequest, HttpServletResponse)
O método POST trabalha um pouco diferente. Os dados não são enviados na URL da página, e sim no corpo da solicitação (alguns chamam isso de payload). Além do mais, o POST não tem limite.
Quando usar o método GET?
Use-o quando quer somente OBTER coisas, como uma foto ou uma música no servidor, ou uma página específica. Nunca use o GET que cause algum efeito colateral. No exemplo da autenticação, o uso do GET não é apropriado pois os dados ficariam visíveis na URL enviada. Ele não deve ser usado, por exemplo, para inserir novos valores no banco de dados.
Quando usar o método POST?
Quando você for fazer alguma operação mais criteriosa, como por exemplo, diminuir o saldo de uma conta, ou fazer uma autenticação de usuário.
E você não vai falar dos métodos doPost() e doGet()?
Não há como não falar, visto que eles são essenciais. O doGet() é chamado quando, adivinha? O método do seu formulário é GET! E o doPost()... bom, vou deixar que você complete. Você nunca pode ter os dois métodos! Na prática isso quer dizer o seguinte, você nunca pode ter metade de uma lógica implementada no doGet() e a outra metade no doPost(). Caso seu formulário seja GET mas você queira chamar o doPost(), sem problemas, apenas delegue para que o doGet() chame o doPost(), como no exemplo abaixo:
public void doGet(HttpServletRequest request, HttpServletResponse response) {
doPost(request,response);
}
E o que eu vou colocar no doPost() ou no doGet()?
É aqui que a brincadeira começa. Sua lógica será processada aqui. Você pode chamar outros métodos de outras classes normalmente, trabalhar os seus dados e devolver a resposta. É tão simples quanto descrevi. Mas e a resposta... como eu devo enviá-la?
Bom, esse é um assunto que vai ter que ficar para a próxima postagem, pois entraremos no mundo dos JSP's!
Por hoje é só, até a próxima!


