Escolar Documentos
Profissional Documentos
Cultura Documentos
Servlets
Escrever cdigo HTML dentro de cdigo Java pode ser complicado:
Falta de um editor. Mistura de linguagens. Imagine uma pgina com mais de 1.000 linhas de cdigo para ser gerada por um Servlet...
JSP
Escrever cdigo Java dentro de cdigo HTML pode ser complicado:
Mistura de linguagens. Imagine uma pgina com algoritmos muito complicados.
A soluo consiste em usar os dois: JSP + Servlet; Porm, cada um fazendo aquilo que lhe convm. MVC no assunto desta disciplina, vamos mostrar apenas um princpio do seu uso na WEB.
Browser + JSP (View)
Servlet (Controller)
Model
formulrios,
etc.)
O Servlet quem chama as classes do modelo da aplicao; Aps o processamento, quando necessrio exibir os dados na tela, o Servlet redireciona a execuo para um JSP;
response.sendRedirect(pagina.jsp);
Vamos implementar uma pgina de carrinho de compras de livros; Temos um JSP que exibe a lista de livros para compra e o atual contedo do carrinho; Dois Servlets: um para adio de livros ao carrinho, e outro para remoo; As classes que gerenciam o carrinho (model) esto no pacote carrinho.*, no jar carrinho.jar;
Exemplo: ListaCatalogo.jsp
<%@ <%@ <%@ <%@ page page page page import="java.util.Iterator" %> import="java.util.List"%> import="carrinho.*" %> contentType="text/html" %>
<html><head><title>Livros de Java</title></head> <body><h1 align="center">Livros de Java</h1> <% for (Iterator<Item> it = Catalogo.iterator(); it.hasNext(); ) { Item item = it.next(); %> <hr> <form action="/pratica/servlet/PedidoServlet"> <input type="hidden" name="itemId" value="<%=item.getItemID()%>"> <h2><%=item.getDescricaoCurta()%> (R$ <%=item.getPreco()%>) <%=item.getDescricaoLonga()%></h2> <center> <input type="submit" value="Adicionar"> </center></form> <% } %> <hr> <hr>
6 Captulo JSP e Servlets 12 1 Conceitos Bsicos
Exemplo: ListaCatalogo.jsp
<h1 align="center">Carrinho</h1> <% Carrinho carrinho = (Carrinho) session.getAttribute("carrinho"); List<ItemCarrinho> itens = null; if (carrinho != null) { itens = carrinho.getItemsCarrinho(); } if (itens == null || itens.size() == 0) { %> <b>No h itens no carrinho!</b> <% } else { ...
} else { %> Exemplo: ListaCatalogo.jsp <table border="1" align="center"> <tr><th>ID do Item</th><th>Descrio</th> <th>Custo Unitrio</th><th>Quantidade</th> <th>Custo Total</th><th>Remover</th></tr> <% for (ItemCarrinho item : itens) { %> <tr><td><%= item.getItemID()%></td> <td><%= item.getDescricaoCurta()%></td> <td><%= item.getPrecoUnitario()%></td> <td><%= item.getNumItens()%></td> <td><%= item.getPrecoTotal()%></td> <td><form name="form1" method="post" action="/pratica/servlet/RemoveServlet"> <input type="hidden" name="itemId" value="<%= item.getItemID()%>"> <input type="submit" value="Remover"> </form></td> </tr> <% } %> </table> <% } %> <hr></body></html>
Captulo JSP e Servlets 12 1 Conceitos Bsicos
Exemplo: PedidoServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(true); Carrinho carrinho = (Carrinho) session.getAttribute("carrinho"); if (carrinho == null) { carrinho = new Carrinho(); session.setAttribute("carrinho", carrinho); } String itemId = request.getParameter("itemId"); if (itemId != null) { carrinho.adicioneItem(itemId); } response.sendRedirect("/pratica/ListaCatalogo.jsp"); }
9 Captulo JSP e Servlets 12 1 Conceitos Bsicos
Exemplo: RemoveServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(true); Carrinho carrinho = (Carrinho) session.getAttribute("carrinho"); if (carrinho == null) { carrinho = new Carrinho(); session.setAttribute("carrinho", carrinho); } String itemId = request.getParameter("itemId"); if (itemId != null) { carrinho.removeItem(itemId); } response.sendRedirect("/pratica/ListaCatalogo.jsp");
10