UNIPÊ Centro Universitário de João Pessoa Desenvolvimento para Web HTTP e Servlets JSP e Servlet Princípio de MVC ducaribas@gmail.com 1 12 JSP e Servlets
Desvantagens de JSP e Servlets Servlets Escrever código HTML dentro de código Java pode ser complicado: JSP Falta de um editor. Mistura de linguagens. Imagine uma página com mais de 1.000 linhas de código para ser gerada por um Servlet... Escrever código Java dentro de código HTML pode ser complicado: Mistura de linguagens. Imagine uma página com algoritmos muito complicados. 2
MVC: Model View Controller A solução consiste em usar os dois: JSP + Servlet; Porém, cada um fazendo aquilo que lhe convém. MVC não é assunto desta disciplina, vamos mostrar apenas um princípio do seu uso na WEB. Browser + JSP (View) Servlet (Controller) Model 3
MVC: Model View Controller O usuário só vê páginas geradas por JSP; Nenhum código HTML é encontrado em um Servlet. Toda ação do usuário (links, formulários, etc.) é processada por um Servlet; Nenhum link gerado para o usuário possui um *.jsp. O Servlet é quem chama as classes do modelo da aplicação; Após o processamento, quando é necessário exibir os dados na tela, o Servlet redireciona a execução para um JSP; response.sendredirect( pagina.jsp ); 4
Exemplo: Carrinho de Compras Vamos implementar uma página de carrinho de compras de livros; Temos um JSP que exibe a lista de livros para compra e o atual conteúdo do carrinho; Dois Servlets: um para adição de livros ao carrinho, e outro para remoção; As classes que gerenciam o carrinho (model) estão no pacote carrinho.*, no jar carrinho.jar; 5
Exemplo: ListaCatalogo.jsp @ page import="java.util.iterator" %> @ page import="java.util.list"%> @ page import="carrinho.*" %> @ page 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
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>não há itens no carrinho!</b> else {... 7
else { %> Exemplo: ListaCatalogo.jsp <table border="1" align="center"> <tr><th>id do Item</th><th>Descrição</th> <th>custo Unitário</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> 8 %> </table> %> <hr></body></html>
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); 9 response.sendredirect("/pratica/listacatalogo.jsp");
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); 10 response.sendredirect("/pratica/listacatalogo.jsp");
UNIPÊ Centro Universitário de João Pessoa Desenvolvimento para Web HTTP e Servlets JSP e Servlet Princípio de MVC Prof. André Figueiredo andre.unipe@gmail.com 11 12 JSP e Servlets