!" # # # $ %!" " & ' ( 2



Documentos relacionados
Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

Universidade São Judas Tadeu. Faculdade de Tecnologia e Ciências Exatas. Sistemas de Informação 3ASIN

Java para WEB. Servlets

Prof. Roberto Desenvolvimento Web Avançado

WebWork 2. João Carlos Pinheiro.

Tutorial Jogo da Velha WEB

Java na WEB Componentes Bean

Unidade 9: Middleware JDBC para Criação de Beans

Autenticação e Autorização

JSP e Servlet Princípio de MVC

Java II. Sérgio Luiz Ruivace Cerqueira

Estudo Dirigido - Parte 1

J550. Model View Controller

Guia para Iniciantes do WebWork

Java na WEB Servlet. Sumário

Java II. Sérgio Luiz Ruivace Cerqueira

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

J550. Apache Struts. Helder da Rocha

Prática Sobre Servlets e JSP

" # $ %&'( ) *' ( +,)+ ( - $ (+*' 0 12 ' ( %+ -12 )+3 ) (4 )) ) % 12 ) *' (

Java para Desenvolvimento Web

Java Server Pages. Arquitectura de uma aplicação distribuída em Internet. Figura 1 Modelo 2

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

Programação Web Aula 12 - Java Web Software

Associação Carioca de Ensino Superior Centro Universitário Carioca

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

Desenvolvimento de aplicações Web. Java Server Pages

Persistência Java para Web com MySQL

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container Aula 04

Desenvolvimento Web TCC Turma A-1

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Faculdades Integradas Santa Cruz. Tutorial de Java MVC WEB Criando uma tela de Login com Banco de Dados

Programação II Programação para a Web. Christopher Burrows

Gerador de código JSP baseado em projeto de banco de dados MySQL

Curso de Introdução ao

Introdução. Servlet. Ciclo Vida. Servlet. Exemplos. Prof. Enzo Seraphim

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:

Java Server Pages (JSP)

Executando comandos do Sistema Operacional em uma aplicação WEB Java

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

J550 Integração com Bancos de Dados

Ciclo de vida; Funcionamento; Requisições e Respostas.

Trabalhando com Servlet

PROJETO FRAMEWORK - CELEPAR PAGINAÇÃO DE DADOS EM APLICAÇÕES JAVA PARA INTERNET

Objetos Implícitos. Conceito. Instanciados pelo próprio contêiner. Disponíveis em quaisquer páginas JSP.

Programação em Rede. Servlets. Manipulação de dados de input em Servlets

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

SISTEMAS DISTRIBUÍDOS

Minicurso de MVC web com Struts. Felipe F Nascimento felipenasc@inf.puc-rio.br

Prof. Fellipe Aleixo

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

Desenvolvimento Web TCC Turma A-1

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

INSTALAÇÃO E USO DO GOOGLE APP ENGINE PLUGIN utilizando o Eclipse Galileo

Servlets, JSPs e Java Beans

Mini-Tutorial. Como criar relatórios Java para Web com JasperReports e ireport por Roberto J. Furutani 20/07/2005

Guia de Fatores de Qualidade de OO e Java

Arquitetura de uma Webapp

Aula 03 - Projeto Java Web

Aplicativos Web com Orientação a Objetos

Exercícios de Revisão Java Básico

Registo de condutor (Protótipo funcional) Página apresentada ao utilizador

Programação Na Web. Sessão II. Índice. Visão geral da API Sessão. Obter dados sobre uma sessão. Extrair informação sobre uma Sessão

JSP (Java Server Pages)

Programação Orientada a Objetos em Java

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Evento.java. package dominio;

J550 Segurança e Controle de erros

Desenvolvimento WEB em JAVA. Palestrante: Lourival F. de Almeida Júnior

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

Acessando um Banco de Dados

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Exibir relatórios gerados pelo Jasper Report em Flex

Scriptlets e Formulários

Tecnologias para Web

Projeto webservicejax

Aplicações de Linguagem de Programação Orientada a Objeto

Programação de Computadores - I. Profª Beatriz Profº Israel

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Desenvolvimento de Aplicações para Internet Aula 8

Invocação Remota MC704

J550 Testes em Aplicações Web com Cactus

PROGRAMAÇÃO PARA INTERNET. Fonte: Raul Paradeda

Java. Marcio de Carvalho Victorino

Introdução. Entendendo os Controles. Definindo um controle. Introdução MOCKDOMAIN() Testando uma classe de domínio mockdomain

Tecnologias Web. Java Enterprise Edition

Enterprise Java Beans

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Documentação Usando o Javadoc

JavaServer Pages (JSP) Leonardo Gresta Paulino Murta

Criando e Entendendo o Primeiro Servlet Por: Raphaela Galhardo Fernandes

Sistemas Paralelos e Distribuídos /2004 Curso: Matemática /Informática Sistemas Distribuídos /2004 Curso: Ensino da Informática

Javascript Exemplos Objetos

J550. Helder da Rocha

Transcrição:

!"# # #$ %!" "& ' ( 2

) *+, - 3

. / 4

!" 0( # "!#. %! $""! # " #.- $ 111.&( ( 5

# # 0. " % * $(, 2 % $.& " 6

# #$ %% Modelo (Encapsula o estado da aplicação) Implementado como JavaBeans Responde a consulta de estado E criado pelo controlador que preenche o seu conteúdo Controlador (Define comportamento da app) Implementado como Servlet Recebe os dados do cliente Instancia os beans da camada de modelo Processa as informações Seleciona o visualizador adequado à resposta (JSP) Visualizador (Constrói e atualiza o modelo) Implementado com JSP Recebe os dados do cliente Acessa o modelo para extrair as informações Formata a página de saída 7

O atributo action da tag do form aponta para um Servlet que receberá as informações Form HTML Modelo (Encapsula o estado da aplicação) Implementado como JavaBeans E criado pelo controlador que preenche o seu conteúdo Página HTML 1 A servlet instancia os beans do modelo ou recupera os já criados da sessão do usuário Controlador (Define comportamento da app) Implementado como Servlet Recebe os dados do cliente Instancia os beans da camada de modelo Processa as informações Seleciona o visualizador adequado à resposta (JSP) 3 A página JSP selecionada acessa os obj do modelo para extrair as informações que serão exibidas na tela 6 5 A página é enviada ao cliente 4 Quando necessário a servlet usa o bean funcional para armazenar ou recuperar as informações Bean Funcional Banco de Dados Seleciona qual JSP fará a montagem da página JSP e faz o redirecionamento. Os obj do modelo podem ser passados através do objeto request ou da sessão do usuário Visualizador (Constrói e atualiza o modelo) Implementado como JSP Recebe os dados do cliente Acessa o modelo para extrair as informações Formata a página de saída 2

"#!".. & " # $!!"34*5,..*6, 9

& ' Requisição Páginas JSP (Visão + controle) Model 1 Resposta JavaBeans (Modelo) Banco de Dados Requisição Servlet (Controle) Atualiza Model 2 Resposta Seleciona Visão Páginas JSP (Visão) JavaBeans (Modelo) Banco de Dados Baseado no padrão arquitetural MVC 10

($ # ' Pacotes Model View << JSP >> paginaerro << Form HTML >> index << BeanFuncional >> DAO Control << JSP >> inclusaook << JSP >> alteracaook << JSP >> exclusaook despacha incluir/alterar/excluir << Servlet >> ServletControlador executa Operacao executar():abstract usa usa depende << BeanNegocio >> Usuario Grava/recupera BD Padrão Padrão de de Projeto Projeto chamado chamado Command. Command. Consiste Consiste em em usar usar polimorfismo polimorfismo para para construir construir objetos objetos que que encapsulam encapsulam um um comando comando e e oferecer oferecer um um único único método método executar() executar() com com a a implementação implementação do do comando comando a a ser ser executado executado estende OperacaoIncluir OperacaoAlterar OperacaoExcluir executar() executar() executar() 11

( 12

#$)* <html> <head> <title>demo MVC</title></head> <body> <form name="form1" method="post" action="/exemplo_mvcweb/servlet/controle/controlador"> Nome: <input name="nome" type="text" id="nome"> Idade:<input name="idade" type="text" id="idade"> CPF.: <input name="cpf" type="text" id="cpf"> <input name="cmd" type="submit" value="incluir"> <input name="cmd" type="submit" value="alterar"> <input name="cmd" type="submit" value="excluir"> </form> </body> </html> 13

+,)$ <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="" xsi:schemalocation="web-app_2_4.xsd version="2.4"> <servlet> <servlet-name>controlador</servlet-name> <servlet-class>controle.servletcontrolador</servlet-class> </servlet> <servlet-mapping> <servlet-name>controlador</servlet-name> <url-pattern>/servlet/controle/controlador</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.htm</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> <error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page> </web-app> 14

-#. /0)1% package modelo; public class Usuario { private String nome; private String cpf; private String idade; public Usuario() { public Usuario(String nome, String cpf, String idade) { this.nome = nome; this.cpf = cpf; this.idade = idade; public String getcpf() { return cpf; public void setcpf(string cpf) {this.cpf = cpf; public String getidade() { return idade; public void setidade(string idade){this.idade = idade; public String getnome() {return nome; public void setnome(string nome) {this.nome = nome; 15

-#2## public class DAO { public static void alterarusuario(usuario usuario) { // TODO Auto-generated method stub public static void incluirusuario(usuario usuario) { // TODO Auto-generated method stub public static void excluirusuario(usuario usuario) { // TODO Auto-generated method stub 16

3# 4 package controle; import javax.servlet.http.httpservletrequest; /** * Esta classe define um método abstrato executar que deverá * ser implementado nas subclasses concretas */ public abstract class Operacao { private String proxpagina="/exemplo_mvcweb/paginaerro.jsp? msg=operação sem redirecionamento"; public Operacao() { public Operacao(String pagina) { this.proxpagina = pagina; //este método deve ser implementado pelas operações filhas public abstract void executar(httpservletrequest request) throws Exception; public String getproxpagina() { return proxpagina; public void setproxpagina(string novapagina) { proxpagina = novapagina; 17

3# 4 package controle; import javax.servlet.http.httpservletrequest; import modelo.dao; import modelo.usuario; public class OperacaoIncluir extends Operacao { public void executar(httpservletrequest req) throws Exception { try { // Instancia um usuário com as informações do formulário Usuario usuario = new Usuario(req.getParameter("nome"), req.getparameter("cpf"), req.getparameter("idade")); // Utiliza o bean DAO para acessar o banco DAO.incluirUsuario(usuario); // Indica a próxima página a ser apresentada setproxpagina("/inclusaook.jsp"); request.setattribute("usuario", usuario); catch(exception e) { setproxpagina("/exemplo_mvcweb/paginaerro.jsp?msg=" + e.getmessage()); 18

3# 4 package controle; import javax.servlet.http.httpservletrequest; import modelo.dao; import modelo.usuario; public class OperacaoAlterar extends Operacao { public void executar(httpservletrequest req) throws Exception { try { // Instancia um usuário com as informações do formulário Usuario usuario = new Usuario(req.getParameter("nome"), req.getparameter("cpf"), req.getparameter("idade")); // Utiliza o bean DAO para acessar o banco DAO.alterarUsuario(usuario); // Indica a próxima página a ser apresentada setproxpagina("/alteracaook.jsp"); request.setattribute("usuario", usuario); catch(exception e) { setproxpagina("/exemplo_mvcweb/paginaerro.jsp?msg=" + e.getmessage()); 19

3# 4 package controle; import javax.servlet.http.httpservletrequest; import modelo.dao; import modelo.usuario; public class OperacaoExcluir extends Operacao { public void executar(httpservletrequest req) throws Exception { try { // Instancia um usuário com as informações do formulário Usuario usuario = new Usuario(req.getParameter("nome"), req.getparameter("cpf"), req.getparameter("idade")); // Utiliza o bean DAO para acessar o banco DAO.excluirUsuario(usuario); // Indica a próxima página a ser apresentada setproxpagina("/exclusaook.jsp"); request.setattribute("usuario", usuario); catch(exception e) { setproxpagina("/exemplo_mvcweb/paginaerro.jsp?msg=" + e.getmessage()); 20

% # &5 package controle;... public final class ServletControlador extends HttpServlet { // O conjunto de operações disponíveis neste controlador fica // armazenado em um HashMap private HashMap mapoperacoes = new HashMap(); private ServletContext contexto; /** * Este método é usado para cadastrar as operações do * controlador. A cada operação associa um nome no HashMap * que será usado mais tarde para realizar uma busca */ public void init(servletconfig config) throws ServletException { super.init(config); contexto = config.getservletcontext(); mapoperacoes.put("incluir", new OperacaoIncluir()); mapoperacoes.put("alterar", new OperacaoAlterar()); mapoperacoes.put("excluir", new OperacaoExcluir()); 21

% # '5 public void service(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { String strop = request.getparameter("cmd"); Operacao operacao = null; if (strop == null) { redireciona("/exemplo_mvcweb/paginaerro.jsp?msg=atividade não encontrada", request, response); // Tenta localizar a atividade correspondente ao // comando recebido e executá-lo try { operacao = getoperacao(strop); operacao.executar(request); catch (Exception e) { // redireciona para a página de erro this.redireciona("/exemplo_mvcweb/paginaerro.jsp?msg= + e.getmessage(), request, response); // caso esteja tudo certo, redireciona para a página apropriada this.redireciona(operacao.getproxpagina(), request, response); 22

// Método utilizado para localizar uma operação no HashMap public Operacao getoperacao(string strop) throws Exception { if (strop == null) { throw new Exception("String null recebida"); Operacao objop = (Operacao) mapoperacoes.get(strop); if(objop == null) { throw new Exception("Operação não definida"); else return objop; private void redireciona(string pagina, % # 55 HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // Transfere o controle para a página especificada na string // [pagina] RequestDispatcher rd = contexto.getrequestdispatcher(pagina); rd.forward(request, response); 23

#46)1 <%@ page language ="java" %> <%@ page import = "modelo.usuario" %> <html> <head><title>inclusão</title></head> <body> <%-- <jsp:usebean id="usuario" scope="request" class="usuario"/> Inclusão do Usuário: <jsp:getproperty name="usuario" property = "nome"/> Ok. --%> <%-- <% Usuario usuario = (Usuario)(request.getAttribute("usuario"));%> Inclusão do Usuário: <%= usuario.getnome()%> Ok. --%> <jsp:usebean id="usuario" scope="request" class="usuario"/> Inclusão do Usuário: ${usuario.nome Ok. </body></html> Gera o mesmo resultado 24