Java II. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com



Documentos relacionados
Tecnologias para Web

Java para Desenvolvimento Web

Java para WEB. Servlets

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

Prof. Roberto Desenvolvimento Web Avançado

Java Servlets. Leonardo Gresta Paulino Murta

Arquitetura de uma Webapp

Desenvolvimento Web TCC Turma A-1

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

Java na WEB Servlet. Sumário

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

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

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

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

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

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

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

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

Tecnologias Web. Java Servlets

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

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

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

UNIDADE II JAVA SERVLETS

Prof. Fellipe Aleixo

Laboratórios 5, 6, 7 - Servlets

Aula 03 - Projeto Java Web

Java II. Sérgio Luiz Ruivace Cerqueira

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

Programação Web Aula 12 - Java Web Software

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

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

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

Servlets. João Carlos Pinheiro. Julho / 2005

Prática Sobre Servlets e JSP

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

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

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

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

Criando e Entendendo o Primeiro Servlet Por: Raphaela Galhardo Fernandes

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

Padrões de Projeto WEB e o MVC

Desenvolvimento Web com JSP/Servlets

Javascript Exemplos Objetos

Desenvolvimento Web TCC Turma A-1

Servlets e Applets, funcionamento e comparativo.

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

Criação de Servlets Name Directory Build WAR JSP/Servlet frameworks Launch URL Package Class name Generate header comments

Java para Desenvolvimento Web

Aula 8: Servlets (III)

INTRODUÇÃO À TECNOLOGIA SERVLETS

Desenvolvendo Aplicações Web com Java

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

Java ME Java Platform, Micro Edition Java SE Java Platform, Standard Edition Java EE Java Platform, Enterprise Edition

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

Autenticação e Autorização

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

JSP e Servlet Princípio de MVC

J550. Helder da Rocha

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

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

Padrões de Interação com o Usuário

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

Alfamídia Programação: Java Web

Servlets & JSP. Prof. Ramon Chiara

Desenvolvimento de aplicações Web. Java Server Pages

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

Java Beans e Servlets

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

J550 Segurança e Controle de erros

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

Servlets.

Programando em PHP. Conceitos Básicos

Jsp, Servlets e J2EE

Servlets API. Aplicações web usando recursos da Servlets API no desenvolvimento de aplicações web. Professor J. c o l u n a


Java II. Sérgio Luiz Ruivace Cerqueira

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Prova de pré-requisito

Programação Na Web. Servlets: Ciclo de Vida. Agenda. Visão geral sobre ciclo de vida. Nascimento de uma Servlet. Execução de uma Servlet

Scriptlets e Formulários

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

Desenvolvimento WEB I. Fernando de Freitas Silva

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Kassius Vargas Prestes

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web

World Wide Web e Aplicações

Sistemas para internet e software livre

Transcrição:

Java II Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Servlets

Servlet Aplicação Java que é executada no servidor que estende a capacidade do servidor Web Alternativa Java para os scripts CGI Gerenciado pelo módulo web Vantagens Melhor aproveitamento dos recursos do sistema Portável

Arquitetura cliente/servidor Arquitetura baseada na divisão do processamento em processos distintos Servidor Responsável pela manutenção da informação e oferta de lógica de negócios Clientes Responsáveis pela obtenção dos dados Envio de solicitações ao processo servidor

Servlets e a arquitetura cliente/servidor Em aplicações web, o cliente faz requisições utilizando protocolo HTTP Com Servlets, para cada requisição o servidor cria uma nova Thread GET (request) Documento HTML retorna (response) Documento HTML ( request ) Formulário Submetido via POST Servidor retorna HTML gerado pelo Servlet Cliente / Browser Servidor

Servlet requisição via HTTP GET GET (HTTP) http://localhost/servlet/servlethypermed?comando=setctxlabpornome&por=&no=apsen

Servlet requisição via HTTP POST

A API Servlet A API de Servlet é formada por 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 +----br.org.les.meuservlet

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 devem reescrever os métodos doget, dopost e podem reescrever os métodos init() e destroy()

Ciclo de vida de um Servlet Criação e inicialização Realizado uma única vez, ao criar o Servlet 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

Ciclo de vida de um Servlet (cont.) destroy() e coleta de lixo Executado somente uma vez Alguns servidores somente removem o servlet quando ocorre o shutdown Utilizado para liberar recursos

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

Requisições e respostas Os métodos doget(), dopost() recebem dois parâmetros HttpServletRequest Encapsula os parâmetros da requisição HttpServletResponse Encapsula a resposta ao cliente

Configuração Inicial

HttpServletRequest Interface que encapsula a requisição feita pelo cliente através do protocolo HTTP Possui métodos que permitem recuperar os dados da requisição Cabeçalho Dados de formulários ou parâmetros enviados Informações sobre a sessão do cliente

HttpServletRequest Alguns métodos definidos em HttpServletRequest 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

HttpServletResponse Interface que encapsula a resposta ao cliente Possui um método responsável por recuperar o canal de resposta com o cliente (retorna um PrintWriter) getwriter() Ex: PrintWriter out = response.getwriter(); out.println("escrevendo no cliente");

HttpServletResponse 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

Servlet - HelloWorld

Outro exemplo

Inicialização de um Servlet - parâmetros Muitas vezes existem valores que são constantes durante a execução do servlet, mas que podem mudar durante o ciclo de vida da aplicação Exemplos Localização de recursos Mensagens padrão Principais métodos Classes Servlet e ServletConfig public java.util.enumeration getinitparameternames() public String getinitparameter(string name) getinitparameternames() e getinitparamater(string name) são usados para obter parâmetros do web.xml

Inicialização de um Servlet - exemplo

Inicialização de um Servlet - exemplo

Gerenciamento de Sessão

Gerenciamento de sessão 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 através de várias requisições HTTP e recuperar suas informações Dados do estado do cliente

Gerenciamento de sessão Para obter uma sessão HttpSession getsession() Obtém sessão existente, caso não exista retorna uma nova sessão HttpSession 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

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

Gerenciamento de sessão 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()

Gerenciamento de sessão exemplo (carrinho de compras)

Gerenciamento de sessão exemplo (carrinho de compras)

Gerenciamento de sessão exemplo (carrinho de compras)

Gerenciamento de sessão exemplo (carrinho de compras)

Servlets e Aplicações Multicamadas

Servlets e o modelo de objetos de negócio Modelo de classes implementa o negócio da aplicação Servlets implementam o módulo Web da camada lógica Como fazer para os dois funcionarem juntos? NewClass7 NewClass3 NewClass8?? NewClass NewClass2 browser HTTP Servlet NewClass9 NewClass10 NewClass5 NewClass6 NewClass4

Padrão arquitetural MVC MVC Model-View-Controller Surgiu nos anos 80 com SmallTalk Sugere a divisão de uma aplicação visual em 3 partes fundamentais Model View Representa o modelo da sua aplicação, com as regras de negócio (business logic) e todo o processamento da aplicação Representa a informação e recolhe os dados fornecidos pelo usuário Controller Recebe as informações da entrada e as transmite para o modelo

Padrão arquitetural MVC O modelo será uma aplicação Java 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 responsáveis no modelo A apresentação será representada por páginas HTML ou JSP

Padrão arquitetural MVC Browser Controlador Objetos de Negócio JavaBean de Resposta JSP

Padrão arquitetural MVC Uso de padrão Command Atributo hidden

Padrão arquitetural MVC Implementando o padrão Command Atributo hidden + Comando abstrato + Hashtable

Padrão arquitetural MVC HttpServlet MeuServlet comandos : Hashtable doget() dopost() init() ComandoAbstrato processacomando() ComandoA ComandoB ComandoC processacomando() processacomando() processacomando()

Padrão arquitetural MVC Comando abstrato HttpServletRequest Passa o comando a ser instanciado (input do formulário) HttpServletResponse Contém o PrintWriter que deverá receber as respostas do Comando

Padrão arquitetural MVC O Servlet deve possuir um atributo HashTable com todos os Commands Ao ser iniciado, cada Comando deve ser instanciado e inserido na HashTable

Padrão arquitetural MVC

Padrão arquitetural MVC

Padrão arquitetural MVC

Implantação da Aplicação

Aplicação no contêiner Web Primeiro, é preciso criar uma aplicação web Cria-se um empacotamento WAR com a seguinte estrutura:

Aplicação no contêiner Web Relembrando Além dessa estrutura, as classes são colocadas no diretório: 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 DIRETÓRIO_APLICAÇÃO\WEB-INF\lib As classes de Servlets precisam ser registradas em web.xml

Aplicação no contêiner Web Registrando Servlets <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>

Aplicação no contêiner Web Exemplo de chamada de Servlet URL para apontar o servlet que processará este formulário. Parâmetro passado para a Servlet como parâmetro da requisição

Aplicação no contêiner Web Geração do WAR no Eclipse Uma vez criado um projeto no Eclipse, é necessário seguir os seguintes passos:

Aplicação no contêiner Web Geração do WAR no Eclipse

Aplicação no contêiner Web O empacotamento WAR deve ser colocado em /<TOMCAT_HOME>/webapp/ para ser implantado no servidor de aplicação automaticamente, ao inicializá-lo O servlet poderá ser acessado através da URL http://<host>:<porta>/diretório_aplicação/servlet/servletses localhost:8080