CodeGym/Cursos Java/Módulo 3/JSP: forma declarativa de definir um servlet

JSP: forma declarativa de definir um servlet

Disponível

1.1 Introdução ao JSP

Existem duas formas populares de escrever um servlet: imperativo e declarativo . Já lidamos com o primeiro - este é, na verdade, um Servlet. O segundo é chamado de JSP (Java Server Pages), e vamos nos familiarizar com ele agora.

Exemplo de Servlet JSP:

<html>
    <body>
        <% out.print(2*5); %>
    </body>
 </html>

Não é muito parecido com o Servlet clássico a que estamos acostumados, não é? Isto é verdade. JSP é uma página HTML com inserções de código Java (destacadas em verde) .

Veja bem, se você tiver muito código Java em um servlet e pouco código HTML, ficará mais confortável usando um servlet clássico . Mas e se você precisar de uma grande página HTML na qual apenas algumas linhas são alteradas pelo servidor?

Nesse caso, o mais simples seria criar essa página HTML e de alguma forma executar o código Java no servidor diretamente nela.

1.2 Compilando JSPs

Vejamos outro exemplo:

<html>
  <body>
    <%
        double num = Math.random();
        if (num > 0.95) {
     %>
         <h2>You are lucky, user!</h2><p>(<%= num %>)</p>
    <%
        }
    %>
  </body>
</html>

Obtemos um número aleatório e, se for maior que 0,95, exibimos o texto "Você tem sorte, usuário!"

O código Java é destacado aqui em azul . Normal (não destacado) - código HTML e tags de serviço vermelho , que ajudam a entender onde está o código Java e onde está o HTML.

Você percebe algo estranho? A chave de fechamento "}"está em outro arquivo "code block". Qual é a maneira certa de escrever esse código? Como isso funciona?

A resposta será super simples :)

O servidor web, após encontrar um arquivo JSP, o compila em um servlet clássico. Com base na página JSP acima, este Servlet será gerado:

public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws Exception {
    PrintWriter out = response.getWriter();
    out.print("<html> ");
    out.print("<body>");
        double num = Math.random();
        if (num > 0.95) {
            out.print("<h2>You're lucky user! </h2><p>(" + num + ")</p>");
        }
    out.print("</body>");
    out.print("</html>");
    }
}

O contêiner da web acabou de gerar o código do servlet, onde o HTML se transformou em texto e as inserções de código Java se tornaram código Java regular!

Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário