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!
GO TO FULL VERSION