270 likes | 376 Views
JSP / Servlets Avançado. Andrio Spich Desenvolvedor Java & .NET Sun Certified Web Component Developer for J2EE 1.4. Conteúdo. Visão geral da Arquitetura Web; API Servlets e Java Server Pages; Acesso a banco de dados com JDBC; TagLibs e Filtros; Aplicação MVC com o Struts;
E N D
JSP / Servlets Avançado Andrio SpichDesenvolvedor Java & .NET Sun Certified Web Component Developer for J2EE 1.4
Conteúdo • Visão geral da Arquitetura Web; • API Servlets e Java Server Pages; • Acesso a banco de dados com JDBC; • TagLibs e Filtros; • Aplicação MVC com o Struts; • Performance e Segurança; • Ferramentas de apoio (Ant, JUnit); • Novidades do JSP 2.0
Tecnologias Envolvidas • HTML/DOM: Estrutura e conteúdo da página; • CSS(Cascading Style Sheets): Apresentação do conteúdo, definindo sua aparência; • JavaScript: Controle dinâmico do estado da página, orientado a eventos, baseado em objetos • Browser: Possibilita a interação das tecnologias citadas acima, tem implementações próprias delas e não são 100% compatíveis entre sí;
JavaScript • Não tem relação alguma com Java; • Baseado no Padrão ECMA, onde a partir deste, tem implementações diferentes para cada browser; • DHTML/DOM: mapeia cada tag descrita no HTML como um objeto, cujas propriedades e eventos definidos podem ser manipulados; • É um Script que roda no cliente, portanto é um código aberto para cópia, não há pré-compilação, nem como assegurar sua integridade;
Conteúdo Dinâmico – CGI • Programa que roda no servidor atendendo e manipulando requisições oriundas de HTTP, geralmente um browser; • Pode ser implementado em qualquer linguagem de programação, dependendo apenas do suporte do servidor Web; • Gera uma resposta com conteúdo web válido após o processamento da requisição; • Problema: alta carga do servidor, para cada requisição geralmente é iniciado um novo processo;
Solução Java – Servlets(~96) • API independente de plataforma e de fabricante, rodando dentro da máquina virtual; • Em vez de iniciar um novo processo para cada requisição, iniciam uma nova Thread, controlada pela JVM. • Podem acessar qualquer API java; • Provê uma abstração da requisição/resposta HTTP, também possibilitando estabelecer relacionamento entre os Servlets (Container);
Servlet não pegou - Problemas • Para gerar uma simples página HTML, é necessário muito código Java e um conhecimento da API Servlet; • Impossibilita o reuso do design da página criada pela WebDesigner: não há código HTML puro e sim HTML misturado com Java, dificultando a leitura do código;
Nova solução: o JSP(~97) • Idéia contrária ao Servlet: inserir Java no HTML; • Permite interação da WebDesigner; • API simplificada, curva de aprendizado menor, mas ainda é necessário ter um conhecimento da linguagem Java; • Apareceu como alternativa ao concorrente ASP da Microsoft, com a diferença de não ser apenas um script, mas sim um código compilado que é traduzido para um Servlet; • Delega ao Servlet tarefas de processamento que não necessitem exibição, tais como upload, controle de fluxo, ...
Servidor Web JSP já traduzido em servlet ? Não Sim Traduz JSP em Servlet Requisição JSP foi modificado ? Sim Compila o Servlet Não Executar o Servlet JSP – Ciclo de vida
Aplicações Web – Model 1 • Problema: Como dividir responsabilidades para uma aplicação web, onde existe varias “camadas” , como apresentação, regra de negócios, validação, acesso ao banco de dados? • A metodologia inicial proposta, bastante influenciada pelos antigos CGIs e Servlets, conhecida como Model 1 é bastante utilizada para o desenvolvimento de aplicações de pequeno porte, onde o JSP assume vários papéis e pode delegar alguns papéis para componentes JavaBeans;
Aplicações Web – Model 2 • Model 1 provê pouco reuso e difícil manutenção do código; • Modelo proposto para separação dos papéis: MVC, conhecido como Model 2, que provê uma separação clara dos papéis de cada componente da aplicação; • Model 2 segue a conformidade do J2EE de separar cada peça do desenvolvimento, definindo uma arquitetura em camadas independentes formadas por componentes reutilizaveis;
Framework Model 2 - Struts • Padrão atual para o desenvolvimento de aplicações MVC web ; • Define claramente os papel no MVC: • M:Modelo, cada objeto que representa uma entidade de negócio; • V: Visão ou apresentação, que define como os dados devem ser exibidos e formatados; • C: Controle, que define o fluxo das regras de negócio da aplicação, definindo qual visão tratará uma certa requisição;
J2EE • Padrão para a camada de apresentação: JSP e Servlets; • Estimula a utilização do Model 2; • Delega a regra de negócios e o modelo para outra camada externa, geralmente EJBs; • Enfatiza o uso de “Design Patterns”, que são soluções conhecidas para um determinado problema;
Design Patterns para a camada de apresentação Mais utilizados • Front controller; • View Helper; • Value/Transfer Object; • Intercepting Filter;
Front Controller • Define um único componente que é responsável por receber e processar as requisições. Geralmente, emprega-se um Servlet; • Centraliza consistências, segurança, validações genéricas utilizadas em todas as páginas.; • Consequentemente, quando o comportamento dessas funções precisam ser alterados, apenas uma pequena parte da aplicação necessita ser alterada. • Utilizado no MVC no caso do Controlador;
Front Controller Sequência:
View Helper • Separação da regra de negócio em componentes externas aos componentes de visualização (JSP); • View helper é responsável pela manipulação dos dados, englobando a regra de negócio e de persistência; • Várias maneiras de implementação: • JavaBeans; • Custom Tags; • EJBs
Value / Transfer Object • Classe serializável que representa uma entidade de negócio; • Usada no fluxo de dados entre as camadas, geralmente criado pelo método de negócio, representando um registro de uma tabela; • Desacopla a camada de apresentação do banco de dados;
Intercepting Filter • Permite o pré- e pós processamento de uma requisição; • Permite encaixar filtros dinâmicamente (plugins), podendo ser empregada a mesma funcionalidade de “Front Controller” com a diferença que o Filter pode efetuar um pós-processamento da requisição utilizado, por exemplo, numa compactação dos dados para a transmissão HTTP;
Outros Frameworks • Cocoon; • Java Server Faces;
Cocoon • Utilização do padrão XML como linguagem (XSP); • Framework integrado que separa fortemente as responsabilidades, com a apresentação em XSP, fluxo de dados em XML; • Mantido pela Apache
Java Server Faces • JSF é uma nova API que acoplada com o JSP, provê serviços semelhantes ao ASP.NET, como a criação de componentes HTML , manutenção de estado; • Ainda não é um padrão, pouco divulgada e possue implementações betas; • Projetada pelo criador do Struts, sendo um complemento a este;