Quando a Web foi criada, a intenção era disponibilizar páginas de hipertexto estáticas (html), com links, para exibir textos e imagens. Com a popularização da Web surgiu a necessidade de se criar páginas dinâmicas, que oferecessem respostas conforme a requisição do usuário. Para atender esta demanda foram criados geradores dinâmicos de páginas html.
Os primeiros geradores dinâmicos eram programas executáveis rodando no servidor web, conhecidos como CGI. Posteriormente, surgiu na plataforma Java os geradores dinâmicos de páginas chamados Servlets.
No Java, em sua forma mais simples, implementamos Servlets fazendo uma classe “filha” de HttpServlet. Esta classe tem um método service que é chamado quando o servidor de aplicações recebe uma url. Este método basicamente deve montar uma resposta (em formato html) para devolver ao cliente (browser), conforme exemplo abaixo:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/HelloWorld")
public class HelloWorld extends HttpServlet {
protected void service (HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = response.getWriter();
// escreve o texto
out.println("<html>");
out.println("<body>");
out.println("<Hello World!!!!");
out.println("</body>");
out.println("</html>");
}
}
Note que os parâmetros request e response contem respectivamente a requisição (que contém dados oriundos da própria URL) e a resposta (que deve ser devolvida ao browser cliente). Response.getWriter() retorna um writer que permite ao programador gerar a página dinâmica a ser devolvida ao cliente.
Relacionando com o tópico principal desta unidade, que é o MVC, podemos considerar que o html montado é a parte “View”, o Servlet é a parte “Control” e não há uma parte “Model” implementada (seria o “Hello World”???).
Para demonstrar isto, teremos que avançar na complexidade. Mas antes, vamos criar o ambiente para nós trabalharmos posteriormente com um desenvolvimento de uma pequena aplicação web.