Java para Web com Struts

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos Baseados na Web
Advertisements

Framework para desenvolvimento web
Objetos Implícitos Contextuais
Projeto de Sistemas de Software
Projeto de Sistemas de Software
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
Jakarta Struts 1.1 Ago/2006 Softplan/Poligraph Alessandro Lemser
Java Server Faces Leandro O. Gomes Primeiros passos - FES(2009-1)
Geração Dinâmica de Páginas com JSP Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação.
Prof. Marco Aurelio N. Esteves
Desenvolvimento de Soluções WEB Escopos de uma Aplicação Web
Tecnologias para Internet
EL e JSTL Prof. Danton Cavalcanti Franco Junior
Desenvolvimento de Projetos e Aplicações Web
Protocolo HTTP e HTML Prof. Danton Cavalcanti Franco Junior
Aplicativos Web Com Orientação a Objetos
Desenvolvimento WEB I Camila Nunes
JAVA - Struts
Grupo de Pesquisa em ENGENHARIA DE SOFTWARE
Introdução ao Desenvolvimento Web
Capítulo 2 Java Servlets.
Programação para estrutura Cliente-Servidor
Rodrigo Cristiano Silva
Integração com Banco de Dados
A autoria - II.
Struts Java avançado – PCC Jobson Ronan
Conceitos de J2EE para a WEB
Aula 2 – Primeiros Passos com a arquitetura Web Servidor
Java para Web com Struts
Prof. Alexandre Monteiro Recife
Professor: Márcio Amador
Tópicos Especiais J2EE Prof. Cristina Valadares Curso de Ciência da Computação.
JSP / Servlets Avançado
JSP e Servlets ISEP – LP2 Filipe Costa – /2004.
Aplicativos Web Com Orientação a Objetos
Aula 2 – Primeiros Passos com a arquitetura Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas.
Arquitetura das JSP - Aula 2
Implementação MVC Pedro Antonino.
Aplicações Web com Orientação a Objetos
Aplicativos Web Com Orientação a Objetos – Java Server Pages(JSP) Prof. Odair
JSP JavaServer Pages Marco Antonio, Arquiteto de Software – TJDF Dezembro/2005.
Aula 1 - Fundamentos Web Servidor
IIS Web Server.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Padrões de Interação com o Usuário
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Tópicos Especiais J2EE Prof. Cristina Valadares Curso de Ciência da Computação.
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Introdução a Aplicações Web.
JavaServer Faces Rapid Web Application Development em Java Ricardo Cavalcanti Jobson Ronan
Unidade 5 – Integrando JSP e Servlets Prof.: Henrique Santos
Daniel Garcez de Sousa 07/04/2015. Nesta apresentação abordaremos os conceitos básicos sobre o ciclo de vida de um Servlet e os HTTP servlets. No final.
OBJETIVO Nesta aula será apresentado o desenvolvimento básico sobre HTTP Servlets. Espera-se que, ao final da apresentação, o aluno tenha noções de como.
Programação Distribuída em Java Aula Na aula passada vimos: TomCat –Instalação e configuração –Criação de contexto JSP... uma introdução –Expressões.
Programação Distribuída em Java Aula 09 - JSP. Na aula passada vimos: Aspectos gerais de segurança em Java policytool Instalação de políticas de segurança.
Treinamento expresso java web Luiz Carlos d´Oleron.
Java Server Pages Um estudo de caso para aprendizagem Renata França de Pontes.
Aula 1 - Fundamentos Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros.
Aplicativos para Internet Prof. Wolley W. Silva
Universidade Federal de Sergipe Departamento de Sistemas de Informação Bruno Cruz Jessica Rodrigo Aragão – ASP.NET MVC 3.
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
Desenvolvimento WEB II Aula 3 – Conexão com o Banco de Dados
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
O que é? Um framework para facilitar a implementação de uma arquitetura MVC em aplicações web Oferece  Um servlet controlador configurável ( Front Controller.
Desenvolvimento WEB II Ajax – Utilização de Frameworks Javascript Professora: Kelly de Paula Cunha.
Apache Struts 1. Idéias principais Model View Controller Front Controller Action Mapping Form Beans Struts Tags Plugins Desenvolvimento web com Java #
Redes de Computadores e Aplicações – Camada de aplicação IGOR ALVES.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Java TM Platform, Enterprise Edition (Java EE) Projeto de Sistemas de Software.
Servidor WEB IGOR ALVES. O protocolo HTTP 1990 surgimento da aplicação www Grande quantidade de informação que pode ser acessada por demanda Buscadores.
Transcrição da apresentação:

Java para Web com Struts Danilo Toshiaki Sato dtsato@ime.usp.br Treinamento ALESP – SPL Módulo I

Visão Geral Curso Dividido em 3 módulos Módulo I (Geral) Java para Web MVC Struts Básico Módulo II (Struts) Model Controller Módulo III (Struts) View Copyleft 2006 Danilo Sato

Agenda - Módulo I Web MVC (Model-View-Controller) Partindo do princípio: HTTP, HTML Java para Web: Servlets, JSP MVC (Model-View-Controller) Outras tecnologias utilizadas Java Beans XML Struts básico Copyleft 2006 Danilo Sato

Web - HTTP HTTP = Hypertext Transfer Protocol Protocolo que é a fundação da Web Orientado a transações de transferência de dados entre cliente e servidor Implementado sobre TCP/IP TCP: Garante integridade dos pacotes IP: Responsável pelo roteamento dos pacotes Copyleft 2006 Danilo Sato

Web - HTTP Protocolo “sem estado” (stateless) Cada transação é tratada isoladamente Estrutura básica de uma transação HTTP: Request Ação (Método HTTP) URL a ser acessada Parâmetros Response Código de status (Sucesso ou Erro) Tipo do conteúdo (texto, imagem, HTML, ...) Conteúdo Copyleft 2006 Danilo Sato

Web - HTTP Cliente Servidor HTTP Request HTTP Response GET URL Headers ... ... ... ... ... HTTP Request HTTP Response Cliente Servidor 200 OK Headers ... ... ... ... ... <html> ... </html> Copyleft 2006 Danilo Sato

Web - HTTP Métodos HTTP (Request) GET: Requisição de um recurso numa URL POST: Requisição para o servidor interpretar o conteúdo do Request e encaminhá-lo para a URL HEAD: Pede apenas pelo cabeçalho que seria retornado por um GET TRACE: Pede apenas um loopback da mensagem enviada (para testes) PUT: Requisição para guardar o conteúdo na URL informada DELETE: Requisição para apagar o recurso na URL informada OPTIONS: Pede uma lista dos métodos HTTP suportados na URL informada Copyleft 2006 Danilo Sato

Web - HTTP (GET x POST) Anatomia de um GET: Caminho Parâmetros Headers GET /search?hl=pt-BR&q=struts HTTP/1.1 Host: www.google.com.br User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Accept-Language: en-us Keep-Alive: 300 Connection: keep-alive Headers Copyleft 2006 Danilo Sato

Web - HTTP (GET x POST) Anatomia de um POST: Caminho Headers Corpo POST /search HTTP/1.1 Host: www.google.com.br User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Accept-Language: en-us Keep-Alive: 300 Connection: keep-alive ?hl=pt-BR&q=struts Headers Corpo Copyleft 2006 Danilo Sato

Web - HTML HTML = HyperText Markup Language Quando o servidor responde um Request HTTP ele geralmente envia algum tipo de conteúdo para ser exibido no navegador (cliente) Descreve como o navegador deve exibir o conteúdo para o usuário Decora um texto com tags e atributos Copyleft 2006 Danilo Sato

Web - HTML Estrutura básica: <html> <head> <title>Título da Página</title> </head> <body> <!– Aqui vai o conteúdo a ser exibido --> <h1>Título</h1> <p> Parágrafo com um link para o <a href=“http://www.google.com”>Google</a> </p> <img src=“foto.jpg”/> </body> </html> Copyleft 2006 Danilo Sato

Web Servidores Web são bons para localizar um recurso (uma página HTML, por exemplo) e entregar para o cliente (navegador) Bom para conteúdo estático E se eu quiser colocar uma informação dinâmica na página HTML? Data atual? Loja virtual: 1 página para cada produto? Total da compra? Copyleft 2006 Danilo Sato

Web Servidor pode pedir ajuda para uma “aplicação amiga” CGI = Common Gateway Interface Permite que o cliente (navegador) peça conteúdo para outra aplicação que roda no servidor web O servidor inicia a aplicação em outro processo e encaminha os parâmetros da requisição A aplicação gera a página com conteúdo dinâmico e devolve para o servidor Copyleft 2006 Danilo Sato

Web Cliente Servidor HTTP Request Aplicação Amiga HTTP Response 1 2 4 3 Aplicação Amiga HTTP Response Cliente Servidor Copyleft 2006 Danilo Sato

Java para Web - Servlets Resposta de Java: Servlets Servlets são classes Java executadas no servidor Servlets permitem o tratamento dinâmico do Request e do Response Uso mais comum: HTTPServlet Servlets rodam dentro de um contêiner Contêiner funciona como a “aplicação amiga” do servidor Copyleft 2006 Danilo Sato

Java para Web - Servlets Vantagens sobre CGI: Eficiência: No uso tradicional de CGI, um novo processo é iniciado a cada requisição HTTP. O contêiner é responsável pelo gerenciamento dos servlets, rodando sobre a mesma JVM em diferentes Threads Conveniência: Escritos em Java. API que facilita manipulação da transação HTTP (cabeçalhos, cookies, session, ...) Durabilidade: Servlets podem guardar informações entre diferentes requisições, facilitando o uso de, por exemplo, um pool de conexão com o Banco de Dados ou um cache Copyleft 2006 Danilo Sato

Java para Web - Servlets Vantagens sobre CGI: Portabilidade: Podem ser utilizados em diferentes plataformas, pois são escritos em Java e seguem uma API bem definida Segurança: Servlets são executados dentro de um contêiner rodando num Sandbox protegido, evitando a possibilidade de execução de Servlets potencialmente perigosos e mal-intencionados Copyleft 2006 Danilo Sato

Java para Web - Servlets Ciclo de vida gerenciado pelo contêiner Quando uma requisição é mapeada para um Servlet, o contêiner: Se uma instância do Servlet não existe: Carrega a classe do Servlet Cria uma instância do Servlet Inicializa o Servlet chamando o método init Chama o método service passando os objetos correspondente ao Request e ao Response Copyleft 2006 Danilo Sato

Java para Web - Servlets HTTP Request 1 Contêiner Web 2 Servlet 4 3 HTTP Response response Cliente request service(request, response) doGet(request, response) 2 Servidor Copyleft 2006 Danilo Sato

Java para Web - Servlets Exemplo: Hello WWW public class HelloWWW extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>\n"); out.println("<HEAD><TITLE>Hello WWW</TITLE></HEAD>\n"); out.println("<BODY>\n"); out.println("<H1>Hello WWW</H1>\n"); out.println("<P>Data atual:" + new Date() + "</P>"); out.println("</BODY></HTML>"); } Copyleft 2006 Danilo Sato

Java para Web - Servlets Exemplo: Deployment Descriptor <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>Hello WWW</servlet-name> <servlet-class>HelloWWW</servlet-class> </servlet> <servlet-mapping> <url-pattern>/Hello.do</url-pattern> </servlet-mapping> </web-app> Copyleft 2006 Danilo Sato

Java para Web - Servlets Organização em um web-app (WAR): Hello WEB-INF HTMLs ... classes lib web.xml HelloWWW.class Copyleft 2006 Danilo Sato

Java para Web - JSP Problema: Solução: JSP JSP = Java Server Pages Gerar código HTML não é fácil Muitos print() e println() Solução: JSP JSP = Java Server Pages Vantagens: Separação da parte estática do HTML da parte dinâmica Separação de profissionais Copyleft 2006 Danilo Sato

Java para Web - JSP Basta incluir código Java no arquivo HTML entre os marcadores "<%" e "%>" Um arquivo JSP parece mais com HTML que com um Servlet Porém, o JSP é compilado e convertido num Servlet (a parte estática vira println() e print()) Isso acontece na primeira vez que a página é requisitada Copyleft 2006 Danilo Sato

Java para Web - JSP Exemplo: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%@ page import="java.util.Date"%> <html> <head> <title>Hello WWW</title> </head> <body> <h1>Hello WWW</h1> <p>Data atual: <%= new Date() %></p> </body> </html> Copyleft 2006 Danilo Sato

Java para Web - JSP JSP permite três tipos de construção: Elementos de script: Código Java que fará parte do Servlet resultante Diretivas: Controla a estrutura geral do Servlet resultante Ações: Permite utilizar componentes existentes e controlar o comportamento do compilador JSP Algumas variáveis pré-definidas Copyleft 2006 Danilo Sato

Java para Web - JSP Elemento JSP Sintaxe Interpretação Expressão Expressão é avaliada e impressa na saída Scriptlet <% código %> Código é inserido no método service() Declaração <%! código %> Código é inserido no corpo do servlet Diretiva JSP: page <%@ page att="val“ %> Diretiva geral para o compilador JSP Diretiva JSP: include <%@ include file="url" %> Inclui um arquivo na hora que o servlet é gerado Copyleft 2006 Danilo Sato

Java para Web - JSP Elemento JSP Sintaxe Interpretação Comentário <%-- foo --%> Foo é ignorado Ação jsp:include <jsp:include page="url"/> Inclui um arquivo na hora que a página é requisitada Ação jsp:useBean <jsp:useBean att="val"/> Encontra ou constrói um JavaBean Ação jsp:setProperty <jsp:setProperty att="val"/> Atualiza uma propriedade do bean Ação jsp:getProperty <jsp:getProperty name="bean" property="prop"/> Imprime o valor de uma propriedade do bean na saída Copyleft 2006 Danilo Sato

Java para Web - JSP Elemento JSP Sintaxe Interpretação Ação jsp:forward <jsp:forward page="url"/> Encaminha a requisição para outra página Ação jsp:plugin <jsp:plugin att=val*> ... </jsp:plugin> Gera um tag OBJECT ou EMBED para executar um applet através do plugin Java Copyleft 2006 Danilo Sato

Java para Web - JSP Variáveis pré-definidas: request: representa o HttpServletRequest response: representa o HttpServletResponse out: representa o PrintWriter associado ao response session: representa o HttpSession associado ao request application: representa o ServletContext config: representa o ServletConfig pageContext: representa o PageContext page: apenas um sinônimo para this Copyleft 2006 Danilo Sato

Java para Web - Servlets & JSP As aplicações web começaram a ficar muito centradas no JSP Muita lógica e código Java misturado no meio da página JSP Nas primeiras especificações de JSP foram definidos: Modelo 1: Utiliza somente páginas JSP Modelo 2: Utiliza páginas JSP e Servlets Copyleft 2006 Danilo Sato

Java para Web - Servlets & JSP Modelo 1: Páginas JSP responsáveis pelo processamento da requisição e construção da página de exibição Copyleft 2006 Danilo Sato

Java para Web - Servlets & JSP Modelo 2: Servlets processam a requisição Páginas JSP constroem da página de exibição Copyleft 2006 Danilo Sato

MVC Semelhança com idéia antiga de Smalltalk Padrão conhecido como MVC Divisão de responsabilidades: Model: representa o estado da aplicação (dados) Controller: representa o fluxo de controle View: representa a camada de exibição (apresentação na tela) Copyleft 2006 Danilo Sato

MVC Vantagens: Desacoplamento entre o modelo da aplicação e a camada de exibição Permite a existência de diferentes camadas de exibição Transparência: o modelo não precisa saber qual a camada de exibição usada Utiliza o padrão Observer para que o modelo notifique alterações para a camada de exibição (View) Copyleft 2006 Danilo Sato

MVC Model View Controller Notificação de alteração Consulta dados Alteração do estado Seleciona a View View Controller Ações do usuário Copyleft 2006 Danilo Sato

Outras Tecnologias - JavaBeans JavaBeans são classes Java com algumas características especiais Seguem um determinado padrão: A classe deve ser concreta e pública Deve disponibilizar um construtor sem argumentos Expõem os campos internos como propriedades acessadas por métodos de acesso/atualização padronizados Copyleft 2006 Danilo Sato

Outras Tecnologias - JavaBeans Por seguir um padrão, podem ser manipulados por introspecção Foram originalmente projetados para serem utilizados por reflexão São largamente utilizados em outras aplicações (em especial no Struts) Exemplo: Form do Struts Copyleft 2006 Danilo Sato

Outras Tecnologias - JavaBeans Setters: Métodos de alteração de estado Nome do método deve ser prefixado por “set” O primeiro caractere do nome da propriedade deve ter letra maiúscula O valor de retorno é sempre void O método deve aceitar somente um argumento, que pode ser de qualquer tipo Exemplo: public void setTotal(Double total) Copyleft 2006 Danilo Sato

Outras Tecnologias - JavaBeans Getters: Métodos de recuperação de estado Nome do método deve ser prefixado por “get” O primeiro caractere do nome da propriedade deve ter letra maiúscula O valor de retorno coincide com o parâmetro do método setter O método não deve ter argumentos Exemplo: public Double getTotal() Copyleft 2006 Danilo Sato

Outras Tecnologias - JavaBeans Getters: Variação para tipos booleanos: Nome do método pode ser prefixado por “is” O primeiro caractere do nome da propriedade deve ter letra maiúscula O valor de retorno deve ser Boolean ou boolean O método não deve ter argumentos Exemplo: public boolean isActive() Copyleft 2006 Danilo Sato

Outras Tecnologias - JavaBeans Reflexão: É o processo de determinar os membros e métodos de um objeto em tempo de execução Introspecção: É uma forma especializada de reflexão usada na API dos JavaBeans Através de introspecção é possível descobrir quais métodos de um JavaBean devem ser chamados para alterar seu estado O Struts usa introspecção para converter parâmetros HTTP em propriedades JavaBean e para popular campos HTML a partir de um JavaBean Copyleft 2006 Danilo Sato

Outras Tecnologias - XML XML = Extensible Markup Language Originalmente criado para definir um padrão para documentos estruturados Permite a separação da semântica dos dados Atualmente é utilizado em diversas situações e muitas tecnologias foram desenvolvidas ao seu redor: XML Schema, XPath, XSLT, RDF, SOAP ... Copyleft 2006 Danilo Sato

Outras Tecnologias - XML Muitas tecnologias Java utilizam documentos XML como arquivos de configuração Quando utilizados dessa forma, os documentos XML são geralmente são chamamos de descritores Exemplos: web.xml struts-config.xml Copyleft 2006 Danilo Sato

Struts Básico Struts é um arcabouço (framework) para desenvolvimento de aplicações Web em Java Disponibiliza uma camada de controle robusta baseada em tecnologias conhecidas Foco principal no Controller do MVC Encoraja o desenvolvimento de aplicações no Modelo 2 Copyleft 2006 Danilo Sato

Struts Básico Utiliza um componente próprio para o Controller Possui integração com outras tecnologias para suporte ao Model e ao View: Model: JavaBeans e classes utilitárias View: TagLibs para utilização nas páginas JSP Utiliza arquivos de configuração XML para juntar todos os componentes O nome é uma analogia às características do Struts que facilitam a estruturação de uma aplicação web Copyleft 2006 Danilo Sato

Struts Básico - Por quê? Por que usar o Struts? Diversas tecnologias para representar o Model (JavaBeans, EJB, JDBC) Diversas tecnologias para representar o View em aplicações web (JSP, Velocity, JSF) E o Controller? Copyleft 2006 Danilo Sato

Struts Básico - Por quê? O Struts funciona como um controlador central entre as regras de negócio e a interface com o usuário Vantagens: Separação entre código de apresentação e regras de negócio Você pode reaproveitar partes da regra de negócio em diferentes fluxos Um lugar central para controlar a interação entre as camadas Copyleft 2006 Danilo Sato

Struts Básico - Por quê? Outras funcionalidades: Internacionalização: suporte através de ResourceBundles e TagLibs Gerenciamento de erros: mensagens de erro geradas nas regras de negócio podem ser exibidas para o usuário Validação de campos: suporte à validação dos dados de entrada de um Form Copyleft 2006 Danilo Sato

Struts Básico - Visão Geral Fluxo Básico de Controle Copyleft 2006 Danilo Sato

Struts Básico - Visão Geral ActionServlet Responsável pelo controle do fluxo de navegação Esse fluxo é definido no arquivo de configuração (struts-config.xml) Fluxo pode ser alterado sem recompilar a aplicação Action Classe de controle responsável por: Acessar a camada de negócio Construir a resposta para a requisição Controle e tratamento de erros Redireciona o fluxo de execução para uma página JSP (ou outra Action) Copyleft 2006 Danilo Sato

Struts Básico - Visão Geral ActionForms São JavaBeans Coletam informações de formulários para os objetos Action Podem ser utilizados para preencher formulários automaticamente Páginas JSP Responsáveis apenas pela apresentação dos resultados Tipicamente devem ter muito pouco código Java (devem usar as taglibs do Struts) Copyleft 2006 Danilo Sato

Struts Básico - Visão Geral ActionMapping Informa ao ActionServlet quais Action, ActionForm e ActionForwards devem ser utilizados para cada URI Definidos no arquivo de configuração (struts- config.xml) ActionForward Associa um nome lógico para um encaminhamento (URI para um JSP ou outra Action) Geralmente uma requisição é encaminhada primeiramente para uma Action e depois para um JSP Copyleft 2006 Danilo Sato

Struts Básico - Visão Geral Fluxo de uma requisição: O servidor recebe uma requisição cuja URL corresponde a um Servlet (ActionServlet) O container transfere o controle para o ActionServlet O ActionServlet encontra o ActionMapping correspondente à URL requisitada O ActionMapping especifica qual classe Action deve ser utilizada e o ActionForm associado O ActionForm é populado com os dados de formulário da requisição (feito automaticamente pelo Struts – Introspecção no JavaBean) Copyleft 2006 Danilo Sato

Struts Básico - Visão Geral O controle é transferido para Action correspondente (através de uma chamada do método execute()) A Action utiliza os dados do ActionForm e acessa a camada de negócio (Model) para gerar uma resposta para a requisição Uma vez gerada a resposta, a Action a armazena em algum contexto do contêiner (tipicamente request ou session) para acesso pela página JSP A Action retorna um ActionForward para o ActionServlet indicando a página JSP (ou outro recurso) que exibirá a resposta Copyleft 2006 Danilo Sato

Struts Básico - Visão Geral A página JSP constrói o resultado com informações obtidas dos contextos utilizados (request ou session) ou do ActionForm A página JSP encaminha o resultado para o contêiner O contêiner encaminha a resposta para o cliente que iniciou a requisição Copyleft 2006 Danilo Sato

Dúvidas ou Sugestões? Copyleft 2006 Danilo Sato