Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Informática para Internet / Desenvolvimento Web I / Aula
Seguindo o padrão MVC (Model-View-Controler), utilizaremos um Servlet como componente controlador e arquivos JSP como os componentes responsáveis por montar as páginas de resposta ao usuário.
O Servlet controlador da livraria virtual, de nome ServletControladorLivraria, é mostrado na Listagem 2. Esse Servlet implementa o método doGet() (linha 16) e utiliza o método doPost() (linha 43) apenas para redirecionar a requisição ao método doGet().
Na execução do Servlet controlador, é feito o acesso ao sistema da livraria virtual (linha 20) por meio do atributo de contexto, conforme demonstrado anteriormente. Também é feito um acesso à sessão do usuário (linha 22). Lembre-se de que o método getSession() cria uma sessão, caso ela não exista. Em seguida, nas linhas 24 a 28, o carrinho de compras é acessado ou criado e armazenado como atributo da sessão de nome “cart”, caso ele ainda não exista.
Por fim, as linhas 30 a 40 são responsáveis por processar e montar a resposta para as requisições dos clientes. Para facilitar esse trabalho, utilizaremos a seguinte estratégia:
O conteúdo da variável acaoSelecionada é utilizado, também, para definir o componente (arquivo JSP) responsável por montar a página de resposta. Isso é feito pela linha 34, onde usamos a convenção do nome e pasta onde se encontra o arquivo JSP de resposta igual ao conteúdo da variável acaoSelecionada (URL do Servlet) concatenada com a extensão .jsp.
Dessa forma, o acesso à URL http://localhost:8080/Livraria/livros/catalogo poderá resultar na execução de uma operação do sistema identificada pelo final da URL (/livros/catalogo) e sua resposta será montada de acordo com o arquivo catalogo.jsp encontrado na pasta de nome livros.
package livraria.servlet;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import livraria.negocio.CarrinhoCompras;
import livraria.negocio.Livraria;
import livraria.negocio.Livro;
import livraria.negocio.excecoes.CompraException;
import livraria.negocio.excecoes.LivroNaoEncontradoException;
@WebServlet(name="Controlador", urlPatterns={"/livros/livraria"})
public class ServletControladorLivraria extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) {
String idLivro = null;
String limpar = null;
Livro livro = null;
Livraria livraria = (Livraria) getServletContext().getAttribute(
LivrariaContextListener.SISTEMA_LIVRARIA);
HttpSession session = request.getSession();
CarrinhoCompras carrinho = (CarrinhoCompras) session.getAttribute("cart");
if (carrinho == null) {
carrinho = new CarrinhoCompras();
session.setAttribute("cart", carrinho);
}
String acaoSelecionada = request.getServletPath();
// Aqui entram as operações do sistema
String tela = acaoSelecionada + ".jsp";
try {
request.getRequestDispatcher(tela).forward(request, response);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) {
doGet(request, response);
}
}
O arquivo livraria.jsp será o arquivo responsável por montar a tela inicial do sistema, a qual é mostrada na Figura 1. Ele deve ser criado dentro de uma pasta chamada livros. O código JSP desse arquivo é mostrado em seguida, na Listagem 3. Ele começa com a inclusão da taglib c, na linha 1, ou seja, você precisa adicionar a jstl-1.2.jar no WebContent/WEB-INF/lib, como visto em anteriormente). Seu código inclui, também, o uso de uma imagem chamada livro.gif, a qual é impressa antes e depois do texto Minha Livraria Virtual. Para implementar essa página, você deve escolher uma imagem que achar adequada. Faça uma busca na internet. Uma sugestão é usar o serviço de busca de imagens do Google (http://images.google.com.br).
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>
Minha Livraria Virtual
</title>
</head>
<body bgcolor="#FFFFFF">
<center>
<hr>
<br>
<h1>
<img width="50" src="../imagem/livro.gif">
<font size="+3">Minha Livraria Virtual</font>
<img width="50" src="../imagem/livro.gif">
</h1>
</center>
<br>
<hr>
<p><b>Livraria Online</b></p>
<c:url var="url" value="/livros/catalogo" />
<p><b><a href="${url}?Add=">Iniciar compras</a></b>
<br>
<hr>
<center><em>Copyright © 2010 Livraria Virtual. </em></center>
</body>
</html>
Já na linha 30, temos o uso do marcador , o qual é responsável por montar a URL correta para o caminho /livros/catalogo. Por exemplo, se seu contexto web tiver o nome Livraria, o acesso a essa página deve ser http://localhost:8080/Livraria/livros/catalogo. Sendo assim, o valor atribuído à variável URL, criada pelo marcador , terá valor igual a /Livraria/livros/catalogo. Isso torna o sistema independente do nome a ser utilizado no contexto web.
A URL armazenada na variável url é, então, utilizada na linha 32 com o objetivo de criar a referência para a página de compra de livros. Note o acesso à variável url, adicionado do texto "?Add=". Isso fará com que a URL gerada seja, na verdade, igual a /Livraria/livros/catalogo?Add=. O uso desse parâmetro Add passado com valor vazio será visto mais adiante, quando estudarmos o código do arquivo catalogo.jsp
Versão 5.3 - Todos os Direitos reservados