Tecnologias para Web



Documentos relacionados
Java II. Sérgio Luiz Ruivace Cerqueira

Java II. Sérgio Luiz Ruivace Cerqueira

Tecnologias Web. Java Enterprise Edition

Java para WEB. Servlets

Java para Desenvolvimento Web

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

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

Aula 03 - Projeto Java Web

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

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

Desenvolvimento Web TCC Turma A-1

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

Desenvolvimento Web TCC Turma A-1

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

Servlets & JSP. Prof. Ramon Chiara

Arquitetura de uma Webapp

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

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

Desenvolvimento de aplicações Web. Java Server Pages

JavaServer Pages (JSP) Leonardo Gresta Paulino Murta

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

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

Programação Web Aula 12 - Java Web Software

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets

Java na WEB Servlet. Sumário

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

Java Servlets. Leonardo Gresta Paulino Murta

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

Prof. Roberto Desenvolvimento Web Avançado

JSTL: Uma forma padrão de desenvolver página WEB dinâmica Plácido Antonio de Souza Neto

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

JavaServer Pages. Também são conhecidas pela sigla correspondente (JSP). Representam mais uma tecnologia da plataforma JEE.

UNIDADE II JAVA SERVLETS

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

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

JSP - JavaServer Pages

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

Java para Desenvolvimento Web

JSP: JAVA SERVER PAGES

Prática Sobre Servlets e JSP

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

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

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Aula 4. Objetivos. Conteúdo dinâmico na internet.

Desenvolvimento WEB I. Fernando de Freitas Silva

Fundamentos de Servlets. Conceitos e ciclo de vida Classes e Interfaces da API Exemplos de Servlets

UNIDADE III JAVA SERVER PAGES

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

Criando e Entendendo o Primeiro Servlet Por: Raphaela Galhardo Fernandes

Java II. Sérgio Luiz Ruivace Cerqueira

Scriptlets e Formulários

20/08/14 JAVA SERVLETS CONCEITOS CONTEÚDO ARQUITETURA DE UMA APLICAÇÃO WEB ARQUITETURA DA APLICAÇÃO WEB

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

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

Desenvolvimento Web com JSP/Servlets

Servlets e Applets, funcionamento e comparativo.

JSP: JAVA SERVER PAGES

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

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

UFG - Instituto de Informática

INTRODUÇÃO À TECNOLOGIA SERVLETS

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

Javascript Exemplos Objetos

J2EE TM Java 2 Plataform, Enterprise Edition

JSP (Java Server Pages)

Tecnologias Web. Java Servlets

JSP (Java Server Pages)

Java para WEB JSTL. JavaServer Pages Standard Tag Library

Relatório referente a compreensão da programação JSP. Realizado do dia de 22 abril de 2010 a 03 de maio de 2010.

Autenticação e Autorização

Programando em PHP. Conceitos Básicos

Conhecendo um pouco mais o servidor Apache TomCat

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600

Curso de Aprendizado Industrial Desenvolvedor WEB

Introdução ao PHP. Prof. Késsia Marchi

Servlets, JSPs e Java Beans

Programação Web Prof. Wladimir

Grade da Formação Java

World Wide Web e Aplicações

Servlets. João Carlos Pinheiro. Julho / 2005

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

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

Sessões. Cookies HTTP Sessões Atributos de sessão

Criação de uma aplicação usando Servlets

Sistemas para internet e software livre

Prof. Fellipe Aleixo

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

Programação para Internet II

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

J550 Tag Libraries e JSTL

Laboratórios 5, 6, 7 - Servlets

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Transcrição:

Tecnologias para Web Carlos Lucena lucena@inf.puc-rio.br Vitor Pellegrino vitorp@gmail.com Cidiane Lobato cidianelobato@yahoo.com.br Andrew Diniz andrew@les.inf.puc-rio.br

Agenda Servlets MVC JSP Taglibs Boas Práticas 2

Arquitetura J2EE

Arquitetura J2EE Plataforma para desenvolvimento Java Enterprise (Java EE) Voltada para aplicações Multi-Camadas baseadas em componentes. Executada em um Application Server Glassfish Weblogic JBOSS Etc.. 4

Arquitetura J2EE Composta por várias outras especificações JDBC (Java Database Connectivity) : utilizado no acesso a bancos de dados; Servlets: são utilizados para o desenvolvimento de aplicações Web com conteúdo dinâmico. JSP (Java Server Pages) : um 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 : utilizados no desenvolvimento de componentes de software, contendo as regras de negócio da aplicação. 5

Arquitetura J2EE 6

Modelos de Componente J2EE A plataforma J2EE define quatro tipos diferentes de componentes de aplicação: Aplicações cliente aplicação Java mantidos e executados no cliente GUI Applets Normalmente executados dentro do browser Mantidos pelo servidor e executados no cliente 7

Modelos de Componente J2EE Servlets e Java Server Pages (JSPs) (componentes Web) Servlet Objetos java que respondem requisições em HTTP Resposta normalmente é Html gerado dinamicamente Mantidos e executados no servidor JSP Linguagem de script adequada para escrita de servlets de apresentação Enterprise JavaBeans (EJBs) Mantidos e executados em um ambiente gerenciado pelo servidor Provê: Monitoramento transacional. Persistência. Distribuição de objetos. Segurança. Não são JavaBeans! 8

Java Servlets

O que é um Servlet? Resposta da comunidade Java ao CGI. Módulo Java executado em servidores orientados a request/response, como servidores web (TomCat, JBoss). Vantagens Melhor aproveitamento dos recursos do sistema Fácil de programar Em aplicações web, o cliente faz requisições utilizando protocolo HTTP 10

O que é um Servlet? Com Servlets, para cada requisição o servidor cria uma nova Thread Conteúdo dinâmico Camada intermediária entre a lógica da aplicação e a interface Web. 11

Arquitetura Cliente-Servidor GET (request) Documento HTML retorna (response) Documento HTML Formulário Submetido via POST (request) Cliente / Browser Servidor retorna HTML gerado pelo Servlet Servidor 12

Requisitando um Servlet via GET GET (HTTP) http://localhost/servlet/servlethypermed?comando=setctxlabpornome&no=apsen 13

Requisitando um Servlet via POST 14

A API de Servlet A API de Servlet é um conjunto de classes Java que define uma interface padrão entre o cliente web e o servidor web. java.lang.object +----javax.servlet.genericservlet +----javax.servlet.http.httpservlet +----com.teccomm.pss.meuservlet 15

HttpServlet Tratador de requisições HTTP Trata métodos HTTP específicos: doget(httpservletrequest req, HttpServletResponse resp) dopost(httpservletrequest req, HttpServletResponse resp) doget e dopost são chamados pelo método service() Subclasses reescrevem os métodos doget, dopost e podem reescrever os métodos init() e destroy() 16

Ciclo de Vida do Servlet Criação e inicialização Realizado uma única vez. init(servletconfig config) Sempre chama o método da super classe primeiro super.init(config) Pode sinalizar a exceção UnavailableException caso ocorra algum erro durante o processo de inicialização Os métodos service(), doget(), dopost() são chamados para atender requisições de clientes Cada requisição é atendida por uma nova thread 17

Ciclo de Vida do Servlet destroy() e Coleta de lixo Executado somente uma vez Alguns servidores somente removem o servlet quando ocorre o shutdown. Utilizado para liberar recursos. 18

Recapitulando... Para criar um Servlet é necessário: Estender a classe HttpServlet pacote javax.servlet.http do JSDK Implementar os métodos doget ou dopost 19

Request e Response Os métodos doget(), dopost() recebem dois parâmetros: HttpServletRequest encapsula os parâmetros da requisição HttpServletResponse encapsula a resposta ao cliente 20

HttpServletRequest Interface que encapsula a requisição feita pelo cliente através do protocolo HTTP Possui métodos que recuperam dados da requisição: cabeçalho dados de formulários ou parâmetros enviados informações sobre a sessão do cliente 21

HttpServletRequest Alguns métodos definidos em HttpServletRequest Manipulação de Parâmetros java.util.enumeration getparameternames() Obtém listagem, contendo nomes de parâmetros da requisição java.lang.string[] getparametervalues(java.lang.string name) Obtém valores do parâmetro name da requisição java.lang.string getparameter(java.lang.string name) Obtém valor do parâmetro name da requisição 22

HttpServletResponse Interface que encapsula a resposta ao cliente Possui o método getwriter() responsável por recuperar o canal de resposta com o cliente retorna um PrintWriter Ex: PrintWriter out = response.getwriter(); out.println( Escrevendo no cliente ); Também é possível configurar qual é o tipo dos dados que estão sendo enviados de volta ao cliente setcontenttype( String type ) Os tipos mais comuns são text/html, text/xml O método setcontenttype deve ser chamado antes do método getwriter 23

Hello World! Hello World! 24

Segundo Exemplo 25

Gerenciamento de sessão (I) O protocolo HTTP é um protocolo sem estado Não é possível a princípio conhecer o estado do cliente anterior à uma requisição O gerenciamento de sessão provê uma maneira de identificar usuários e recuperar suas informações Dados do estado do cliente Para obter uma sessão: HttpSession session = request.getsession() Obtém sessão existente, caso não exista retorna uma nova sessão. HttpSession session = request.getsession(boolean create) Obtém sessão existente ou cria uma nova sessão dependendo do valor de o parâmetro create. Funciona a base de cookie ou reescrita de URL 26

Gerenciamento de sessão (II) Principais métodos para manipulação de objetos em sessão void removeattribute(java.lang.string name) Retira objeto da sessão void setattribute(java.lang.string name, java.lang.object value) Coloca ou sobreescreve objeto na sessão identificado por name java.lang.object getattribute(java.lang.string name) Obtém objeto da sessão java.util.enumeration getattributenames() Obtém os nomes de todos os objetos armazenados na sessão 27

Gerenciamento de sessão (III) Tempo de duração da sessão As sessões em geral têm intervalo máximo de tempo que podem ficar inativas public int getmaxinactiveinterval() public void setmaxinactiveinterval(int interval) As sessões também podem ser encerradas explicitamente pelo programador: public void invalidate() 28

Colocando para Funcionar Para que o servlet funcione é preciso um servidor web/aplicação com suporte a java que escute as requisições do cliente Ex: IBM WebSphere Application Server, Jakarta Tomcat, Java Web Server, etc. 29

Jakarta Tomcat Servidor gratuito baseado em java Configurável de maneira simples via XML Oferece suporte a Java (Servlets e JSP) 30

Jakarta Tomcat e Jboss Tomcat Pode ser gratuitamente obtido em http://www.apache.org Utilizem a versão 5.x VM j2sdk 1.5.x Jboss Servidor web similar ao Tomcat, mas com mais recursos Na prática, ele é compatível com mais recursos da especificação J2EE 31

Publicação de Servlets Imagine que você implementou um Servlet, gerou o.java e compilou para ter o.class. E agora? Como o Servlet é publicado no servidor? Na verdade, existe um local para colocar as classes de sua aplicação. 32

Configurando o Tomcat Onde colocar as classes dos Servlets? Primeiro, é preciso criar uma aplicação web Cria-se um diretório em %TOMCAT_HOME%\webapps\, sem espaços no nome. Dentro do diretório do projeto, cria-se a pasta WEB-INF Dentro de WEB-INF, criam-se 2 pastas: lib e classes Dentro de WEB-INF, cria-se o arquivo web.xml (deployment descriptor web) 33

Configurando o Tomcat As classes são colocadas no diretório: %TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEB- INF\classes A partir deste diretório devem ser colocadas em seus próprios pacotes As libs (arquivos.jar) devem ser colocadas no diretório: %TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEB- INF\lib 34

Configurando o Tomcat Registrando os Servlets Os servlets devem ser chamados com seu nome completo (pacotes e classe) Muitas vezes o nome se torna grande demais Pode-se então dar um nome ao servlet através do qual o servidor redirecionará a chamada à classe específica 35

Configurando o Tomcat Registrando Servlets (1) O arquivo web.xml localizado no diretório: %TOMCAT_HOME%\webapps\DIRETÓRIO_APLICAÇÃO\WEB-INF 36

Configurando o Tomcat Registrando Servlets (2) <web-app> <servlet> <servlet-name>servletsistema</servlet-name> <servlet-class>controller.login</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletsistema</servlet-name> <url-pattern>/servlet/servletses</url-pattern> <servlet-mapping> </web-app> 37

Chamada do servlet 38

Configurando o Tomcat Agora, o servlet poderá ser acessado através da URL: http://<host>:<porta>/diretório_aplicação/servlet/servletses localhost:8080 39

Configurando o Tomcat Outras configurações O arquivo server.xml localizado no diretório: %TOMCAT_HOME%\conf Configuração da porta do servidor: <Connector port="8080" maxthreads="150" minsparethreads="25" maxsparethreads="75" enablelookups="false" redirectport="8443" acceptcount="100" debug="0" connectiontimeout="20000" disableuploadtimeout="true" /> 40

JSP

Arquitetura HTML de resposta montado a partir de sucessivos comandos out.println(...). Browser Controlador Objetos de Negócio JavaBean de Resposta JSP 42

O que é JSP JSP é uma tecnologia que permite combinar informações estáticas com informações geradas dinamicamente. Script executado no servidor: Combinação de sintaxe JSP e tags de marcação Tags estáticas HTML, XML Conteúdo dinâmico gerado pelo código do script Java Exemplo: <HTML><HEAD><TITLE>Primeiro JSP</TITLE></HEAD> <BODY><H1>Data e hora: <%= new java.util.date() %></H1> </BODY></HTML> 43

Passos requisição para xxx.jsp xxx.jsp Geração de Código Java resposta xxx.java (servlet) 44

Escopo dos Atributos O JSP pode acessar objetos em tempo de execução em quatro escopos diferentes: Página Objeto PageContext corrente (pagecontext) Requisição Objeto HttpServletRequest corrente (request) Sessão Objeto HttpSession corrente (session) Aplicação Objeto ServletContext corrente (servletcontext) Para armazenar informações: setattribute(string, Object) Para recuperar informações: getattribute(string) 45

Tags JSP Diretivas Configuração do processador JSP Inclusão estática de conteúdo Encaminhamento de requisições para outros servidores Comandos de script Inserção de código para a programação de conteúdo dinâmico Ações Tags de alto nível que encapsulam padrões de programação mais corriqueiros 46

Diretivas <%@ nome-da-diretiva [nome-atributo = valor-do-atributo ]* %> Diretivas disponíveis: <%@ include file= url-relativa %> <%@ taglib uri= url-relativa-da-biblioteca-de-tags prefix= prefixo-das-tags %> <%@ page lista-de-atributos %> 47

Atributos da Diretiva Page language= nome-da-linguagem-de-script contenttype= mime-type mime-type; charset=nomecharset errorpage= url-página-de-erro iserrorpage= true false buffer= none tamanho-em-kb auto-flush= true false import= lista-de-pacotes extends= nome-da-classe-base session= true false isthreadsafe= true false info= texto-informativo 48

Exemplos de Diretivas Diretiva Include Diretiva Taglib 49

Exemplos de Diretivas Diretiva Page Ou 50

Tags de Script Declarações <%! declaração %> Scriptlets <% comandos %> Expressões <%= expressão %> Comentários <!-- comentário html --> <%-- comentário jsp --> 51

Declarações <%! declarações %> Exemplos: <%! int i = 0; public void metodo {...} %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %> Declara variáveis ou métodos a serem utilizados no código JSP. 52

Scriptlets <% fragmento_de_código_válido %> Exemplo: <% String name = null; if (request.getparameter( nome") == null) { %> <%@ include file="error.html" %> <% } else { foo.setname(request.getparameter( nome")); } %> Um scriptlet pode conter qualquer número de instruções, variáveis, métodos, declarações ou expressões válidos. 53

Expressão <%= expressão %> Exemplo: O mapa tem <font color="blue"><%= mapa.getcount() %></font> entradas. Esta tag contém uma expressão que é avaliada e convertida para string, depois de processada. 54

Comentários <!-- comentário [ <%= expressão %> ] --> Exemplo: <!-- Comentário --> <!-- Esta página foi carregada em <%= (new java.util.date()).tolocalestring() %> --> O processador JSP trata um comentário como texto HTML não interpretado, retornando-o ao cliente. Uma expressão pode ser incluída em um comentário, sendo avaliada e seu resultado é retornado ao usuário juntamente com o HTML de resposta. 55

Comentários para Desenvolvimento <%-- comentário --%> Exemplo: <%@ page language="java" %> <html> <head><title>um teste - comentário</title></head> <body> <h2>um teste - comentário</h2> <%-- Este comentário não estará disponível para o cliente --%> </body> </html> O processador JSP simplesmente ignora este tipo de comentário e não processa nenhum código ou expressão contida entre os delimitadores. Este tipo de comentário não será enviado para o cliente. 56

Objetos Pré-Definidos Disponíveis para scriplets e expressões request response session out exception (somente em páginas de erro) page 57

58

Model View Controller (MVC) O que é MVC? Padrão arquitetural em três camadas para desenvolvimento de sistemas, surgido nos anos 80. NewClass7 NewClass3 NewClass8 NewClass NewClass2 browser HTTP Servlet NewClass9 NewClass10 NewClass5 NewClass6 NewClass4 59

Arquitetura MVC Sugere a divisão de uma aplicação visual em 3 partes Model: Modelo da sua aplicação, com as regras de negócio (business logic) e todo o processamento da aplicação View: Apresenta a informação e recolhe os dados fornecidos pelo usuário Controller: Recebe as informações da entrada e as transmite para o modelo 60

Arquitetura MVC Em Java: O modelo será uma aplicação orientada a objetos. O controlador será alguma tecnologia de implementação (padrão comando) que juntamente com o Servlet redirecionará as chamadas feitas pelo cliente aos objetos no modelo. A apresentação será representada pelo JSP. 61

Taglibs

Ações jsp:usebean jsp:setproperty jsp:getproperty jsp:include jsp:forward 63

jsp:usebean Cria ou recupera uma instância de um bean. <jsp:usebean lista_de_atributos> A lista_de_atributos pode ser id: nomedainstânciadobean scope: page request session application class: com.teccomm.nomeclasse type: com.teccomm.nomedotipo Exemplo: 64

jsp:include e jsp:forward Ações utilizadas para o encadeamento de páginas jsp. <jsp:include page= url-relativa-da-página /> suspende o processamento da página chamadora; repassa o controle para a página chamada até que o retorne. <jsp:forward page= url-relativa-da-página /> o processamento da página chamadora é terminado; controle repassado sem espera de retorno para a página chamada. 65

jsp:include <jsp:include page="{urlrelativa <%=expressão%>}"/> Exemplo 66

jsp:forward <jsp:forward page="{urlrelativa <%=expressão%>}"/> Exemplo: A tag <jsp:forward> repassa o objeto request enviado para o arquivo JSP para que seja processado por outra aplicação. O processador JSP não executa o restante das instruções contidas após a tag. 67

JSP Standard Tag Library Versão JSTL (Java 1.4) lançada em meados de 2002 impulsionou o desenvolvimento com JSP. Requer servlet container que suporte Servlet 2.4 and JSP 2.0 (tomcat 5.x) Provê 4 standard Tag Libs: core, internationalization/format, XML, and SQL Provê uma Expression Language (EL). 68

JSTL EL 69

JSTL Core Tag Lib 70

JSTL - Format tag lib 71

Boas Práticas

O padrão Comando (I) Como implementar? Atributo hidden 73

O padrão Comando (II) Como implementar? Atributo hidden Ex: Atributo hidden + Comando abstrato + Hashtable 74

O padrão Comando (III) O Comando Genérico: HttpServletRequest Passa o comando a ser instanciado (input do formulário) HttpServletResponse Contém o PrintWriter que deverá receber as respostas do Comando 75

O padrão Comando (IV) O Servlet deve possuir um atributo HashTable com todos os Commands Ao ser iniciado, cada Comando deve ser instanciado e inserido na HashTable 76

O padrão Comando (V) 77

O padrão Comando (VII) HttpServlet MeuServlet comandos : Hashtable doget() dopost() init() ComandoAbstrato processacoma ndo() ComandoA ComandoB ComandoC processacomando() processacomando() processacomando() 78

Dicas de Modelagem 79

J2EE no Eclipse É possível utilizar o Eclipse como ambiente de desenvolvimento Plug-in Eclipse 3.x: Lomboz: Instalação e Configuração Execução do Exemplo no Eclipse Lomboz + Tomcat 80

Ferramentas Eclipse 3.x Jakarta Tomcat 5.x http://jakarta.apache.org/ Lomboz para eclipse 3.x http://www.objectlearn.com/projects/download.jsp 81