Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 JDBC (Java Database Connectivity), utilizado no acesso a bancos ? Servlets, são utilizados para o desenvolvimento de aplicações Web com conteúdo dinâmico. ? JSP (Java Server Pages), uma especialização do servlet que permite que conteúdo dinâmico seja facilmente desenvolvido. ? JTA (Java Transaction API), Uma API que padroniza o tratamento de transações dentro de uma aplicação Java. ? EJBs (Enterprise Java Beans), utilizados no desenvolvimento de componentes de software. Eles permitem que o programador se concentre nas necessidades do negócio do cliente JCA (Java Connector Architecture), Uma API que padroniza a ligação a aplicações legadas. ? JPA (Java Persistence API), Uma API que padroniza o acesso a banco de dados através de mapeamento Objeto/Relacional dos Enterprise Java Beans. ? JMS (Java Message Service), Uma API para middleware orientado a mensagens. Desenvolver aplicações consiste em analisar e construir para: » Resolver problemas de negócios; » Automatização e informatização de processos; » Facilitar a consulta a informações e dados; Separando em camadas e por responsabilidades – Cada parte de uma aplicação tem uma responsabilidade – Para cada responsabilidade existe uma camada: » GUI – Interface com o usuário; » Model – Modelo de negócio, classes de negócio; » Persistência – Classes que permitem a manipulação dos objetos em repositórios de dados; » Exceptions – Classes que representam exceções; Elementos de uma aplicação web ? Baseado em Request-Response; ? Cliente abre conexão e envia request para o servidor; ? Cliente recebe response e fecha conexão; ? Comunicação sem estado (stateless); ? Para o servidor cada request é o primeiro request enviado pelo cliente; ? Cada recurso é identificado por único e exclusivo Uniform Resource Identifier (URI); ? URL (Uniform Resource Locator) são URI’s que especificam protocolos (HTTP, FTP,mailto). URI Uma URI pode ser classificado como um localizador (URL) ou um nome (URN), ou ainda como ambos; O URN define a identidade de um item, enquanto que o URL nos dá um método para o encontrar O Hypertext Transfer Protocol (HTTP), em português Protocolo de Transferência de Hipertexto, é um protocolo de comunicação (na camada de aplicação conforme o Modelo OSI)Base comu WWW Http 1 abre conexao 2 http request 3 httresponse 4 fecha conexao O protocolo HTTP define oito métodos que indicam a ação a ser realizada no recurso especificado. O método determina o que o servidor deve fazer com o URL fornecido no momento da requisição de um recurso. Um servidor HTTP deve implementar ao menos os métodos GET e HEAD. • Envia dados através da URI; • Menos seguro; • Pode navegar dados de um site para outro Post Envia dados através do fluxo da requisição; Mais seguro; Dados navegam somente no mesmo contexto; Orientadas à apresentação • Páginas interativas contendo linguagens tais como: HTML, XML, DHTML, etc Orientadas a serviços • Web Services Componentes web são: • Java Servlets; • Páginas JSP; • Web Services; Servlet É uma classe Java para estender as capacidades de servidores Web; ? Baseado no modelo request / response; ? Funciona através de threads, cada chamada executa uma thread diferente; Funciona através de threads, cada chamada request, executa uma thread diferente. O ciclo de vida de um Servlet é controlado pelo container; A classe HttpServlet fornece métodos para controle do ciclo de vida do Servlet pelo container: • init() • destroy() • service() 2 HttpServletRequest • Define um objeto que fornece informações do request HTTP para o servlet; • Provê dados tais como parâmetros e valores enviados pelo browser, atributos e streams de entrada;informações sobre o protocolo, endereço IP do cliente, etc; • Estende a interface ServletRequest. HttpServletResponse • Define um objeto que permite ao servlet enviar resposta ao cliente web. • Permite definir atributos no header HTTP e criar cookies. • Estende a interface ServletResponse http request Procotolo/servidor/porta/contexto/uri/parametros A implementação da interface Servlet (javax.servlet.Servlet) é usada para todos os servlets, porque é essa interface encapsula os métodos do ciclo de vida do servlet. Nesse ciclo, existem os métodos: ? init() Essa ação somente é completada com sucesso depois que o servlet não receber nenhuma solicitação. Esse método consegue sobrecarregar códigos de iniciação que são executados apenas uma vez, antes do tratamento de qualquer solicitação por parte do usuário. ? service() Esse método é invocado quando chega a primeira solicitação do cliente, ou seja, depois que o método init permitir ao servlet responder a uma solicitação. O Container inicia uma nova thread ou aloca um thread de pool, onde é ativado o método service. ? destroy() Esse método tem como objetivo remover o servlet, sendo invocado quando todas as sequências dentro do método service() forem finalizadas. Etapas O usuário faz uma solicitação através de um link ou botão do qual o servlet faz parte. Container verifica se a solicitação é para um servlet, se for, cria-se os objetos response (HttpServletResponse) e request (HttpServletRequest). Container localiza o servlet baseado na solicitação, onde é criada ou alocada uma thread para a solicitação, chamando o método service() do servlet, que passa como argumento os dois objetos request e response. O método service() descobre qual método HTTP (GET ou POST) do servlet chamar. O servlet usa o objeto response para escrever a resposta para o cliente, geralmente esse retorno já é a página HTML que vai ser exibida. Quando invocado o método destroy(), o método service() termina, sendo que a thread morre ou retorna um para um pool de threads gerenciadas pelo Container. As referências dos objetos de solicitação acabam saindo do escopo. Com isso, é executado um processo de limpeza da memória, que são enviadas para o Garbage Collector É usado o objeto ServletConfig. Esse objeto possui os seguintes métodos para fazer a recuperação: getInitParameterNames() - Não possui argumento e retorna um Enumeration, que contém todos os nomes de parâmetro no objeto ServletConfig. getInitParameter() – Possui como argumento uma string e retorna uma string. Página 1 de 3 28/09/2013about:blank 3 Servlet Filters é um recurso do Java EE para interceptar uma requisição web antes do recurso final ser atingido, este recurso pode ser um servlet, um arquivo, entre outros. Filtros são muito úteis quando precisamos configurar o ambiente para o recurso a ser atingido, como por exemplo, abrir e fechar a sessão do hibernate (openSessionInView), verificar se o usuário está logado ou se tem permissão de fazer a requisição, permitindo ou não acessar o recurso. Um filtro é um objeto que implementa a clase javax.servlet.Filter e por isso deve definir três métodos Um filtro é um objeto que implementa a clase javax.servlet.Filter e por isso deve definir três métodos. ? void init(FilterConfig config) throws ServletException O método init é chamado uma vez antes do filtro entrar em operação pela primeira vez. Como parâmetro é passado um FilterConfig de onde se pode obter o nome do filtro, os parâmetros de inicialização, e o ServletContext. ? void destroy() O método destroy é chamado para avisar o filtro que ele está sendo desativado, e possa liberar eventuais recursos alocados. ? void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException O método doFilter é onde é feito todo o processamento do filtro. A primeira parte é executada antes de que o Servlet seja executado. A chamada chain.doFilter transfere o controle para o próximo filtro. A chamada só retorna quando o Servlet já foi processado, então, o código posterior a essa chamada será executado.Ao chamar chaind.doFilter passamos como parâmetro um request e um response, podemos facilmente alterá-los, criando Wrappers em torno de cada um deles. Esse Servlet gera um log do tempo que cada requisição levou. Para ter acesso ao log é preciso guardar o ServletContext, através do método init. Vale ressaltar também que o request recebido pelo filtro não é um HttpServletRequest, e portanto para conseguirmos a URI utilizada para chamar o Servlet precisa fazer um cast. Isso informa ao servidor que o filtro timerFilter é implementado pela classe TimerFilter 4 Um banco de dados é uma coleção organizada de dados. ● Um sistema de gerenciamento de bancos de dados (database management system – DBMS) fornece mecanismos para armazenar, organizar, recuperar e modificar dados para muitos usuários. ● SQL é a linguagem padrão internacional utilizada quase universalmente com bancos de dados relacionais para realizar consultas e para manipular dados. O JDK vem com um RDBMS puro Java chamado Java DB — a versão da Sun para o Apache Derby. Os programas Java comunicam-se com bancos de dados e manipulam seus dados utilizando a Java Database Connectivity (JDBC™) API. Um banco de dados relacional é uma representação lógica de dados que permite que os dados sejam acessados sem considerar sua estrutura física. ● Um banco de dados relacional armazena dados em tabelas. O método Connection createStatement com dois argumentos recebe o tipo e a concorrência do result set (conjunto de resultados). ● O tipo de conjunto de resultados especifica se o cursor do ResultSet é capaz de rolar em ambas as direções ou apenas encaminhar e se o ResultSet é sensível a alterações feitas nos dados subjacentes. Se um ResultSet não for sensível a alterações, a consulta que produziu o ResultSet deve ser novamente executada para refletir qualquer alteração feita. Página 2 de 3 28/09/2013about:blank 5 Java Server Pages Tudo o que vale para servlets continua valendo para Java Server Pages ? Um JSP é uma servlet durante a execução ? Escrever código em JSP é como escrever código dentro do doPost() ou doGet() de um servlet com os objetos request, response, out, session e outros já definidos ? Um JSP, depois de carregado, é tão veloz quando uma servlet (pois um JSP é uma servlet) ? JSP é mais fácil de codificar e implantar, mas é mais difícil de depurar Servlets forçam o programador a embutir código HTML dentro de código Java ? Desvantagem se a maior parte do que tem que ser gerado é texto ou HTML estático ? Mistura as coisas, o programador tem que ser um bom Designer e se virar sem ferramentas gráficas JSP é uma tecnologia padrão, baseada em templates para servlets. O mecanismo que a traduz é embutido no servidor ? Exemplo de um código em JSP Em um servidor que suporta JSP, a pagina JSP é transformada (compilada) em uma servlet ? A forma mais simples de criar documentos JSP, é: ? Mudar a extensão de um arquivo HTML para JSP ? Colocar o documento em um servidor onde suporte JSP ? Fazendo isso, o servidor gera uma servlet ? A compilação é feita no primeiro acesso ? Nos acessos subseqüentes, a requisição é redirecionada a servlet gerada mapeada para o JSP, o container : ? Verifica se a servlet correspondente à pagina é mais antigo que a pagina (ou se não existe) ? Se a servlet não existir, ou for mais antiga, a pagina JSP será compilada para gerar a nova servlet Desse ponto em diante o ciclo de vida é similar ao das servlets, mas os métodos são diferentes ? Se a servlet ainda não existir, ela será instanciada, e seu método jspInit() é chamado ? Para cada requisição, seu método _jspService(req,res) é chamado ? No fim da vida, o método jspDestroy() é chamado jspInit() e jspDestroy() permitem maior controle sobre o ciclo de vida da servlet ? Ambos são opcionais ? Úteis para inicializar conexões, obter recursos, etc... 6 Especificação desde o Java EE 5; -Comunidade ativa e muitos materiais de estudo; -Exige pouco conhecimento inicial para construção de interfaces; -ntegração com JPA, EJB, Spring; -Capacidades interativas com AJAX. -Encapsula o HTML, CSS e Javascript; Possui duas implementações bem conhecidas: -Sun Mojarra – implementação de referência -MyFaces da Apache Ambas, pode-se desenvolver um projeto JSF. Complexidade para criação de componentes; -Não tem requisições GET apenas POST, URL’s - nada amigáveis; -Não tem suporte a Ajax nativo, é necessário configuração para utilizar de terceiros; -Permite uso de JSP, scriptlets (código java na sua página web, coisa de 1990);-Configurações baseadas em XML; Paginas Declaração mais simples de páginas web; -Suporte nativo a XHTML, recursos e AJAX; -Mais eventos, facilitando ações como inicialização de página, tratamento pré e pós-validação, inicialização de aplicação; -Suporte à instrução HTTP GET; -Integração com a nova especificação Bean Validation, facilitando a validação de JavaBeans JSP era a tecnologia padrão de Java para Web, inclusive no JSF 1.x; -Vários conceitos de JSF não são suportados por JSP, e conceitos do JSP se tornam desnecessários para JSF. Suporte a tag <f:ajax>; Inclui duas bibliotecas de componentes básicos: -Biblioteca “HTML” (sigla h): possui componentes que representam diversos elementos HTML e a biblioteca. -Biblioteca “Core” (sigla f): responsável por tarefas comuns no desenvolvimento de sistemas, como internacionalização, validação e conversão de dados de entrada. Existem 4 passos básicos para iniciar o desenvolvimento em JSF: -Criação da classe Bean -Mapeamento da classe Bean (xml / @) -Criação da página JSF -Mapeamento da navegação entre páginas. (Implícita / Condicional) JSF - Backing Bean -Fornecerá as informações exibidas na página e as operações que serão executadas. -Para que uma página JSF acesse uma propriedade de um Bean, ela precisa ter um método de acesso get. O mapeamento pode ser feito de duas formas: -Através do arquivo faces-config.xml: Única forma disponível até o JSF 1.2. Ciclo 1. Restore view phase (Restaurar Visão) Esta fase visualiza a geração da página, a ligação de componentes para os seus manipuladores de eventos e validadores são executados e salvo no objeto FacesContext. O FacesContext guarda as visões na propriedade ViewRoot o qual possui todos os componentes da visão atual. 2. Apply request values phase (Aplicar valores de requisição) Suponha que um campo é obrigado a ser do tipo inteiro, e o valor é convertido para um Integer, e se a conversão falhar, então uma mensagem de erro associado com o componente é gerada e enfileira no FacesContext. 3. Process validations phase (Processar Validações) É nesta fase onde ocorrem as validações. Esta validação pode ser criada pelo desenvolvedor ou “obtida” diretamente do JSF. 4. Update model values phase (Atualizar valores do modelo) Esta é a fase onde é atualizado o valor no lado do servidor, atualizando a propriedade dentro do seu Backing Bean. 5. Invoke application phase (Invocar aplicação) Nesta fase o Controller do JSF invoca a aplicação para manipular o envio do form. O valor do componente sempre estará convertido, validado e aplicado aos objetos de modelo. 6. Render response phase (Renderizar resposta) Esta fase irá exibir a tela com todos os componentes em seu estado atual. Página 3 de 3 28/09/2013about:blank
Compartilhar