Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 IFPA Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Engenharia da Web Desenvolvimento de Software na Web - Arquitetura de Software - Padrão Arquitetural MVC - Aplicação web com JSP e Servlet Práticas em NetBeans Prof. Cláudio Martins claudiomartins2000@gmail.com 2 Objetivos da Aula ● Apresentar e empregar as tecnologias JSP e Servlet para desenvolvimento de aplicações web com MVC, usando a IDE Netbeans. 3 Processamento de formulário, para exibição de dados em todas as páginas ● Considere uma página de um formulário de login. ● Após a identificação do nome do usuário, todas as páginas seguintes devem exibir esse nome. Homepage pag1 pag2 4 Mapa de Navegação 5 Visão arquitetônica MVC p/ Web/Java Controlador (servlet) homepage.jsp usuario.bean <<cria bean>> << usa o bean >> << forward >> 1 2 34 5 <<submit>> {nome} 6 Códigos (formulário, Servlet e página homepage.jsp) <form action="Controlador" method="post"> Informe seu nome: <input name="nome" size="30" type="text" > <br> <input type="submit" value="ENVIAR"> </form> protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nomeUsuario = request.getParameter("nome"); request.getSession().setAttribute("USUARIO_NOME", nomeUsuario); request.getRequestDispatcher("homepage.jsp").forward(request, response); } // fim do método <body> <h1>Hello World!</h1> Bem vindo ${USUARIO_NOME} <hr> <br><a href="pag1.jsp">Chama página 1</a> <br><a href="pag2.jsp">Chama página 2</a> </body> 7 Estereótipos UML para MVC O uso de estereótipos em UML pemite representar objetos com semântica própria. Um estereótipo é representado por um ícone ou um texto entre « e » Boundary (fronteira) – representam objetos que realizam a interface da fronteira entre o sistema com os atores de interação. São as páginas web contendo apenas controles de interação com o usuário. Controller (controlador) – representam objetos que realizam o controle do sistema, instanciando os objetos de dados e a navegação entre os objetos de fronteira. Na arquitetura Java (web) são os servlets. Podem ser páginas JSP contendo apenas comandos de controle, não existindo marcas HTML de saída. Entity (entidade de dados) – representam objetos que armazenam os dados processados no sistema. São os objetos java beans, contendo os dados manipulados na aplicação. 8 Passos para construção no NetBeans ● Para realizar o código usando o IDE Netbeans, foi utilizado as seguintes versões: ● Netbeans: 7.1 ● Tomcat: 7.x ● OBS: ao usar versões anteriores a essas, você terá que observar alguns detalhes de configuração. 9 Passo 1: Escolher o tipo de projeto Web ● Abra o Netbeans e escolha no menu: Arquivo – Novo Projeto ● Em seguida, escolha o tipo do projeto: Java Web – Aplicação Web 10 Passo 2: Definir o local (pasta) onde ficará o projeto ● Defina o diretório (pasta) onde ficará o projeto. 11 Passo 3: Definir o servidor web ● Escolha o servidor web. Caso ele não esteja na lista, clique em “Adicionar” (deve estar instalado na sua máquina). Neste exemplo usaremo o Tomcat. 12 Passo 4: Definição de frameworks de apoio ● Neste caso, não usaremos nenhum. Clique em “Finalizar” 13 Projeto gerado no NetBeans ● Ao finalizar o projeto é construído (ver figura) e uma página inicial é criada (index.jsp). 14 Executando (exibindo) a página index.jsp ● Por padrão é criado no projeto web a página index.jsp. Ao executar o arquivo index.jsp a página é exibida no browser que está definido como default do sistema. Ou clique em RUN Caso o projeto seja o Principal. 15 Exibição da página index.jsp 16 Definição do formulário <form action="Controlador" method="get"> Informe seu nome: <input name="nome" size="30" type="text" > <br> <input type="submit" value="ENVIAR"> </form> •Crie um novo arquivo JSP ou aproveite o arquivo index.jsp para criar um formulário como na figura a seguir. 17 Criando a classe Servet (Controlador) ● Utilize os atalho e siga os passos: 18 Nome e localização do Servlet ● O nome do Servlet é “Controlador” ● Defina o pacote com nome de “controle” 19 Finalizando o processo de criação do Servlet ● Caso você esteja usando uma especificação de servidor Tomcat 5, marque a opção “Adicionar informação ao descritor...” 20 Exibindo o conteúdo do Servlet ● O Netbeans gera um código de teste para exibir ao executar o servlet. 21 Ajustando o código do servlet ● Para o nosso exemplo, delete o corpo do código do método processRequest e insira o código (em azul): protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nomeUsuario = request.getParameter("nome"); request.getSession() .setAttribute("USUARIO_NOME", nomeUsuario); request.getRequestDispatcher("homepage.jsp") .forward(request, response); } // fim do método 22 Código da página “homepage.jsp” 23 Código das páginas “pag1.jsp” e “pag2.jsp” 24 Atividades Práticas 25 Atividade Prática 2 1. Elaborar uma aplicação web, usando a arquitetura MVC (Modelo-Visão-Controle) para realizar um “simulador financeiro”, seguindo o cenário: 1. Um cliente de um banco virtual escolhe o tipo da aplicação (poupança ou renda fixa), informa o valor a investir e o tempo (em meses) de investimento. 2. A aplicação calcula e retorna ao cliente o resultado mês a mês dos rendimentos acumulados, considerando o tempo investido, o valor e a taxa mensal (fixar em 0.5% ao mês para a poupança e 0.8% ao mês para renda fixa). 26 Navegação 27 Arquitetura da aplicação Simulador (servlet) result.jsp rendimento.bean <<cria bean>> << usa o bean >> << forward >> 1 2 34 5 simula.jsp {tipo_aplicacao, meses, valor} <<submit>> 28 Etapas para a construção do Projeto 1. Criar um projeto no Netbeans do tipo “Aplicação web” 2. Criar a classe servlet “Simulador” 3. Criar a classe “Rendimento” (que será a base do objeto “bean” a ser exibido na página de “resultado”) 4. Criar as páginas JSP: simula e resultado 29 Classe “Rendimento”... ● Crie a classe “Rendimento” com os seguintes atributos (ver abaixo). Em seguida, gere os métodos Get e Set’s... ● 30 Codificando “simula.jsp” ● Adicione o código referente ao formulário... 31 Continuação ● Complete o código da classe Servlet para tratar o recebimento dos dados (vindos do formúlário). ● Crie um objeto do tipo (classe) “Rendimento”, setando os valores vindos do formulário ● Crie um método na classe Rendimento para calcular os rendimentos mensais conforme o tipo de aplicação. ● No método “service” (ou processRequest do Servlet), salve o objeto “Rendimento” como “bean” e chame a página de “resultado” (deve ser criada) ● A página de “resultado” deve exibir os dados calculados, obtidos a partir do bean anterior. 32 Tratando o recebimento dos dados (vindos do formúlário) no Servlet. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // recebendo os parâmetros do formulário. String tipoAplic = req.getParameter("aplicacao"); Float valor = Float.valueOf(req.getParameter("valor")); Integer meses = Integer.valueOf(req.getParameter("meses"));System.out.println("valores = " + tipoAplic + " v=" + valor + " meses="+ meses); // atribui os dados ao objeto "rend" Rendimento rend = new Rendimento(); rend.setMeses(meses); rend.setTipoAplicacao(tipoAplic); rend.setValor(valor); rend.calcularRendimentos(); // método que calcula os rendimentos da aplicação // salva o objeto Vector com os rendimentos mensais (como bean de request). req.setAttribute("rendimento_bean", rend.getRendMensais()); // repassa para a página de resultado. req.getRequestDispatcher("result.jsp").forward(req, resp); } 33 Explicando o objeto Request • HttpServletRequest req – Ver em http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/http/HttpServletRequest.html – HttpServletRequest – classe interface que fornece informações da solicitação oriunda via HTTP, para o servlet tratar. – “req” – é o nome dado ao objeto (instanciado) no código. Normalmente, dá-se o nome “req”, “request”, “solicitacao”, ou qualquer outro nome que lembre o objeto no método da classe Servlet. ● No caso de páginas JSP, esse objeto é implícito e é denominado “request” 34 Métodos da classe HttpServletRequest • getParameter(String nomeParametro) – retorna um valor String – Retorna o valor de um parâmetro originado na solicitação como um String, ou “null” se o parâmetro não existir. • setAttribute(String nomeBean, Object obj) – Armazena (em memória) um objeto como atributo (bean) na solicitação corrente. • getRequestDispatcher(String páginaURL) – retorna um objeto RequestDispatcher – Retorna um objeto RequestDispatcher que age como um “wrapper” para a localização de um recurso definido na “páginaURL”. ● A classe RequestDispatcher provê o método forward: – forward(ServletRequest request, ServletResponse response) – Repassa uma solicitação de um servlet para outro recurso (servlet, JSP, ou página HTML) de um servidor. 35 Método para calcular os rendimentos mensais (na classe Rendimento) public void calcularRendimentos() { rendMensais = new Vector(); rendimentoFinal = valor; float taxa = 0; if (tipoAplicacao.equals("POUPANCA")) taxa = 0.05F; // 5% if (tipoAplicacao.equals("RENDA-FIXA")) taxa = 0.08F; // 8% for (int i = 0; i < meses; i++) { rendimentoFinal = rendimentoFinal * taxa + rendimentoFinal; rendMensais.addElement(new Float(rendimentoFinal)); } } // fim do método 36 Página “result.jsp” - exibe os dados calculados, obtidos a partir do bean rendimento_bean <%@page import="java.util.Vector, java.util.Iterator "%> <html> <body> <h1>Resultado - Cálculo</h1> <% Vector rend= (Vector) request.getAttribute("rendimento_bean"); int i = 0; for (Iterator iter = rend.iterator(); iter.hasNext();) { Float rendMes = (Float) iter.next(); i++; out.println("<br> MES - " + i + " - REND = " + rendMes); } %> </body> </html> 37 ** fim da aula ** Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37
Compartilhar