IFPA Curso de Tecnologia em Anlise e Desenvolvimento de Sistemas
Engenharia da WebDesenvolvimento de Software na Web - Arquitetura de Software - Padro Arquitetural MVC - Aplicao web com JSP e Servlet
Prticas em NetBeansProf. Cludio Martins [email protected]
Objetivos da Aula
Apresentar e empregar as tecnologias JSP e Servlet para desenvolvimento de aplicaes web com MVC, usando a IDE Netbeans.
2
Processamento de formulrio, para exibio de dados em todas as pginas Considere uma pgina de um formulrio de login.
Aps a identificao do nome do usurio, todas as pginas seguintes devem exibir esse nome.pag1 Homepage pag2
3
Mapa de Navegao
4
Viso arquitetnica MVC p/ Web/Java1 {nome} Controlador (servlet)
2
>
4> homepage.jsp
3usuario.bean
55
Cdigos (formulrio, Servlet e pgina homepage.jsp) Informe seu
nome:
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 mtodo Hello World! Bem vindo
${USUARIO_NOME}
Chama pgina 1
Chama pgina 2 6
Esteretipos UML para MVCO uso de esteretipos em UML pemite representar objetos com semntica prpria. Um esteretipo representado por um cone ou um texto entre
e
Boundary (fronteira) representam objetos que realizam a interfaceda fronteira entre o sistema com os atores de interao. So as pginas web contendo apenas controles de interao com o usurio.
Controller (controlador) representam objetos que realizam o controledo sistema, instanciando os objetos de dados e a navegao entre os objetos de fronteira. Na arquitetura Java (web) so os servlets. Podem ser pginas JSP contendo apenas comandos de controle, no existindo marcas HTML de sada.
Entity (entidade de dados) representam objetos que armazenamos dados processados no sistema. So os objetos java beans, contendo os dados manipulados na aplicao.7
Passos para construo no NetBeans
Para realizar o cdigo usando o IDE Netbeans, foi utilizado as seguintes verses:
Netbeans: 7.1 Tomcat: 7.x OBS: ao usar verses anteriores a essas, voc ter que observar alguns detalhes de configurao.
8
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 Aplicao Web
9
Passo 2: Definir o local (pasta) onde ficar o projeto
Defina o diretrio (pasta) onde ficar o projeto.
10
Passo 3: Definir o servidor web
Escolha o servidor web. Caso ele no esteja na lista, clique em Adicionar (deve estar instalado na sua mquina). Neste exemplo usaremo o Tomcat.
11
Passo 4: Definio de frameworks de apoio
Neste caso, no usaremos nenhum. Clique em Finalizar
12
Projeto gerado no NetBeans
Ao finalizar o projeto construdo (ver figura) e uma pgina inicial criada (index.jsp).
13
Executando (exibindo) a pgina index.jsp
Por padro criado no projeto web a pgina index.jsp. Ao executar o arquivo index.jsp a pgina exibida no browser que est definido como default do sistema.
Ou clique em RUN
Caso o projeto seja o Principal.
14
Exibio da pgina index.jsp
15
Definio do formulrioCrie um novo arquivo JSP ou aproveite o arquivo index.jsp para criar um formulrio como na figura a seguir.
Informe seu nome:
16
Criando a classe Servet (Controlador)
Utilize os atalho e siga os passos:
17
Nome e localizao do Servlet
O nome do Servlet Controlador Defina o pacote com nome de controle
18
Caso voc esteja usando uma especificao de servidor Tomcat 5, marque a opo Adicionar informao ao descritor...
Finalizando o processo de criao do Servlet
19
Exibindo o contedo do Servlet
O Netbeans gera um cdigo de teste para exibir ao executar o servlet.
20
Ajustando o cdigo do servlet
Para o nosso exemplo, delete o corpo do cdigo do mtodo processRequest e insira o cdigo (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 mtodo21
Cdigo da pgina homepage.jsp
22
Cdigo das pginas pag1.jsp e pag2.jsp
23
Atividades Prticas
24
Atividade Prtica 21. Elaborar uma aplicao web, usando a arquitetura MVC (Modelo-Viso-Controle) para realizar um simulador financeiro, seguindo o cenrio:1. Um cliente de um banco virtual escolhe o tipo da aplicao (poupana ou renda fixa), informa o valor a investir e o tempo (em meses) de investimento. 2. A aplicao calcula e retorna ao cliente o resultado ms a ms dos rendimentos acumulados, considerando o tempo investido, o valor e a taxa mensal (fixar em 0.5% ao ms para a poupana e 0.8% ao ms para renda fixa).25
Navegao
26
Arquitetura da aplicao1 Simulador (servlet) {tipo_aplicacao, meses, valor}
simula.jsp
2
>
4>
3rendimento.bean
result.jsp
527
Etapas para a construo do Projeto1. Criar um projeto no Netbeans do tipo Aplicao web 2. Criar a classe servlet Simulador 3. Criar a classe Rendimento (que ser a base do objeto bean a ser exibido na pgina de resultado) 4. Criar as pginas JSP: simula e resultado
28
Classe Rendimento...Crie a classe Rendimento com os seguintes atributos (ver abaixo). Em seguida, gere os mtodos Get e Sets...
29
Codificando simula.jsp
Adicione o cdigo referente ao formulrio...
30
Continuao
Complete o cdigo da classe Servlet para tratar o recebimento dos dados (vindos do formlrio). Crie um objeto do tipo (classe) Rendimento, setando os valores vindos do formulrio Crie um mtodo na classe Rendimento para calcular os rendimentos mensais conforme o tipo de aplicao. No mtodo service (ou processRequest do Servlet), salve o objeto Rendimento como bean e chame a pgina de resultado (deve ser criada) A pgina de resultado deve exibir os dados calculados, obtidos a partir do bean anterior.31
Tratando o recebimento dos dados (vindos do formlrio) no Servlet.protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // recebendo os parmetros do formulrio. 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(); // mtodo que calcula os rendimentos da aplicao // salva o objeto Vector com os rendimentos mensais (como bean de request). req.setAttribute("rendimento_bean", rend.getRendMensais()); // repassa para a pgina de resultado. req.getRequestDispatcher("result.jsp").forward(req, resp); }
32
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 informaes da solicitao oriunda via HTTP, para o servlet tratar. req o nome dado ao objeto (instanciado) no cdigo. Normalmente, d-se o nome req, request, solicitacao, ou qualquer outro nome que lembre o objeto no mtodo da classe Servlet.
No caso de pginas JSP, esse objeto implcito e denominado request
33
Mtodos da classe HttpServletRequest getParameter(String nomeParametro) retorna um valorString Retorna o valor de um parmetro originado na solicitao como um String, ou null se o parmetro no existir.
setAttribute(String nomeBean, Object obj)Armazena (em memria) um objeto como atributo (bean) na solicitao corrente.
getRequestDispatcher(String pginaURL) retorna um objeto RequestDispatcher
Retorna um objeto RequestDispatcher que age como um wrapper para a localizao de um recurso definido na pginaURL. forward(ServletRequest request, ServletResponse response) Repassa uma solicitao de um servlet para outro recurso (servlet, JSP, ou pgina HTML) de um servidor.34
A classe RequestDispatcher prov o mtodo forward:
Mtodo 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 mtodo35
Pgina result.jsp - exibe os dados calculados, obtidos a partir do bean rendimento_bean Resultado - Clculo 36
** fim da aula **
37