Java para Desenvolvimento Web



Documentos relacionados
Java para WEB. Servlets

Prof. Roberto Desenvolvimento Web Avançado

Java II. Sérgio Luiz Ruivace Cerqueira

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

Java na WEB Servlet. Sumário

Criando e Entendendo o Primeiro Servlet Por: Raphaela Galhardo Fernandes

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.

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

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

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

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

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

INTRODUÇÃO À TECNOLOGIA SERVLETS

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

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

Desenvolvimento Web TCC Turma A-1

Java Servlets. Leonardo Gresta Paulino Murta

Arquitetura de uma Webapp

Tutorial. Começando a Criar Aplicativos SMS

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

Autenticação e Autorização

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

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

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

Servlets e Applets, funcionamento e comparativo.

Aula 03 - Projeto Java Web

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

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

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

UNIDADE II JAVA SERVLETS

Programação Web Aula 12 - Java Web Software

Executando comandos do Sistema Operacional em uma aplicação WEB Java

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

Prática Sobre Servlets e JSP

Desenvolvimento Web com JSP/Servlets

Curso de Aprendizado Industrial Desenvolvedor WEB

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

Tecnologias Web. Java Servlets

Servlets. João Carlos Pinheiro. Julho / 2005

Prof. Fellipe Aleixo

Java II. Sérgio Luiz Ruivace Cerqueira

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

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

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

Web Services. Autor: Rômulo Rosa Furtado

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

JSP: JAVA SERVER PAGES

Alfamídia Programação: Java Web

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

J550. Helder da Rocha

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

Sistemas Distribuídos

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

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

JSP: JAVA SERVER PAGES

DarkStat para BrazilFW

PROGRAMAÇÃO SERVIDOR WEBSERVICES EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Tutorial Jogo da Velha WEB

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

Javascript Exemplos Objetos

3 SCS: Sistema de Componentes de Software

GERAÇÃO DE RELATÓRIOS

Mini-Tutorial. Como criar relatórios Java para Web com JasperReports e ireport por Roberto J. Furutani 20/07/2005

Introdução a Servlets e JSP. Prof. Samuel Martins samuellunamartins at gmail dot com Faculdade São Miguel

JSP e Servlet Princípio de MVC

Curso de Aprendizado Industrial Desenvolvedor WEB

Desenvolvimento Web TCC Turma A-1

Integração de sistemas utilizando Web Services do tipo REST

Orientada a serviços: JAX-WS SOAP API

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Servlets & JSP. Prof. Ramon Chiara

Java Server Pages. O código HTML pode indicar o método de arranque do servlet gerado por um JSP : doget ou dopost.

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Tecnologias para Web

INF1013 MODELAGEM DE SOFTWARE

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

J550 Segurança e Controle de erros

Um Driver NDIS Para Interceptação de Datagramas IP

Orientação a Objetos

JSF - Controle de Acesso FERNANDO FREITAS COSTA

Manual do PolicyKit-kde. Daniel Nicoletti Tradução: Luiz Fernando Ranghetti

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

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Entendendo como funciona o NAT

MANUAL DO USUÁRIO. AssetView FDT. AssetView FDT

Gerador de código JSP baseado em projeto de banco de dados MySQL

Transcrição:

Java para Desenvolvimento Web Servlets A tecnologia Servlet foi introduzida pela Sun Microsystems em 1996, aprimorando e estendendo a funcionalidade e capacidade de servidores Web. Servlets é uma API para construção de componentes do lado servidor com o objetivo de fornecer um padrão para comunicação entre clientes e servidores. Servlets são classes Java que são instanciadas e associadas com servidores Web, essas classes são capazes de processar requisições e respostas do protocolo HTTP, assim uma Servlet necessita de um contanier Web para ser executado, O container gerencia as instâncias dos Servlets e provê os serviços de rede necessários para as requisições e respostas. Tipicamente existe apenas uma instância de cada Servlet, no entanto, o container pode criar várias threads de modo a permitir que uma única instância Servlet atenda mais de uma requisição simultaneamente. Assim de modo simples, podemos entender que uma servlet funciona como um pequeno servidor que recebe chamadas de diversos clientes, essa servlet é um objeto Java instanciada pelo servidor. Servlets recebem requisições (request) e retornam respostas (response), respostas essas que podem ser qualquer conteúdo desde uma página HTML até arquivos de conteúdo em formato XML. Na verdade os Servlets podem trabalhar com vários tipos de servidores e não só servidores Web uma vez que a API dos Servlets não assume nada a respeito do ambiente do servidor, sendo independentes de protocolos e plataformas. Para que uma classe Java seja denominada Servlet é necessário que a mesma esteja ligada a interface javax.servlet.servlet, mais especificamente a classe javax.servlet.http.httpservlet responsável pelo uso de servlets com o protocolo HTTP.

Ciclo de Vida e Arquitetura das Servlets A tecnologia Servlet foi projetada para contornar problemas do antigo CGI, Servlets são carregadas na memória uma única vez quando o servidor é inicializado ou quando a Servlet é requisitada. Como o servlet é instanciado uma única vez, o contanier é responsável por criar trheads para atender requisições simultâneas que cheguem as Servlets. Uma servlet segue um ciclo de vida composto de 3 fases: inicialização, atendimento de requisições e finalização. A inicialização ocorre quando o contanier é iniciado, ou quando a Servlet recebe a primeira requisição. A segunda fase é o atendimento de requisições que ocorre quando qualquer requisição é feita a servlet e a fase de finalização ocorre quando o servidor é parado, liberando da memória a instância da servlet. Para construir uma servlet é necessário que a classe extenda javax.servlet.http.httpservlet onde a classe será capaz de receber requisições dos métodos HTTP como GET e POST. Dessa forma a classe servlet se torna capaz de processar requisições sendo possível reescrever métodos java referentes aos tipos de requisições GET e POST do HTTP. No código a seguir existe ainda um terceiro método da API servlet capaz de processar ambas requisições HTTP. package br.ac.actions; import java.io.ioexception; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class PrimeiraServlet extends HttpServlet { protected void doget (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

protected void dopost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { protected void service (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrimeiraServlet.java Os métodos reescritos da classe HttpServlet fornecem dois parâmetros do tipo HttpServletRequest e HttpServletResponse. HttpServletRequest fornece acesso a todas as informações de requisições feitas por clientes. Na tecnologia JSP o conhecíamos por Objeto Implícito request, já o HttpServletResponse é responsável por produzir respostas que vão desde um coneteúdo HTML até um Cookie para máquina cliente. Em JSP o Objeto Implícito response o representava. Para ter acesso a todas as fases do ciclo de vida de uma servlet, utilizamos a reescrita de método de inicialização denominado init(), com ele podemos fazer leitura de parâmetros de configuração do web.xml, inicialização de variáveis de classe (variáveis estáticas), inicialização de conexões com banco de dados e etc. Veja as assinaturas do método de inicialização em uma classe Servlet. public void init(){ System.out.println("Servlet Iniciada..."); É possível ainda outra assinatura, passando um objeto javax.servlet.servletconfig, é através desse parâmetro que o servlet pode obter os parâmetros contidos no web.xml.

public void init( javax.servlet.servletconfig config ){ System.out.println("Servlet Destruída..."); A finalização de uma Servlet é tratada pela implementação do método destroy(), esse método é disparado no instante em que a Servlet é destruída, seja pelo servidor ou pela própria aplicação. Nesse método podem ser executadas rotinas de finalização, como encerramento de conexões com banco de dados, finalização de threads e etc. A assinatura do método destroy é a seguinte. public void destroy(){ Além dos métodos citados anteriormente existem alguns outros que não são muito comuns e necessitam de um contexto especifico e conhecimento avançado sobre o protocolo HTTP. public void dodelete(httpservletrequest request, javax.servlet.http.httpservletresponse response) { public void doput(httpservletrequest request, javax.servlet.http.httpservletresponse response) { public void dooptions(httpservletrequest request, javax.servlet.http.httpservletresponse response) { public void dotrace(httpservletrequest request, javax.servlet.http.httpservletresponse response) {

Servlets e suas Hierarquias Figura 1 : Hierarquia de uma Classe Servlet Como sabemos, uma Servlet é uma classe java capaz de receber e enviar requisições, para isso a classe javax.servlet.servlet fornece uma hierarquia de classes capazes de receber requisições de vários protocolos, a classe javax.servlet.genericservlet é capaz de atender requisições genéricas de qualquer protocolo, já a classe javax.servlet.httpservlet, sub-classe de GenericServlet atende requisições em HTTP. Mapeamento de Servlets Para que seja possível uma Servlet atender requisições, além do que já foi mostrado, é necessário também fazer o que chamamos de Mapeamento de Servlets. A especificação de Servlet define um arquivo chamado web.xml que será o responsável por conter esses mapeamentos, além de várias outras configurações de uma aplicação web. O arquivo web.xml é um arquivo construído sobre as regras da tecnologia XML. Para mapear uma servlet é necessário dois elementos, o <servlet> e o <servlet-mapping>, veja quais outros elementos os mesmo podem possuir.

<servlet> <servlet-name> deve conter o nome da Servlet escolhido pelo desenvolvedor. <servlet-class> deve conter o nome da classe (incluindo a informação sobre o pacote, se existir). <init-param> deve conter um parâmetro de inicialização do Servlet; pode haver nenhum, somente um, ou mais de um elemento deste tipo para cada Servlet. <load-on-startup> deve conter um inteiro positivo indicando a ordem em que a Servlet será carregada em relação a outras existentes na aplicação. Inteiros menores são carregados primeiro; se este elemento não existir, ou seu valor não for um inteiro positivo, fica a cargo do Servlet Container decidir quando o Servlet será carregado (possivelmente, no instante em que for feita a primeira requisição a esse Servlet). Dessa forma poderíamos iniciar um mapeamento do elemento <servlet> para uma servlet da seguinte forma: <servlet> <servlet-name>servlet</servlet-name> <servlet-class>br.ac.action.servlet</servlet-class> </servlet> web.xml <servlet-mapping> <servlet-name> Nome que faz a ligação com o elemento <servletname> da tag <servlet>. <url-pattern> URL pela qual a Servlet será acessada. É possível ainda definir alguns caracteres especiais como *, com o valor /* nesta tag toda requisição feita ao servidor será redirecionada para a servlet

mapeada, ou ainda mapear utilizando o valor /*.jsp onde qualquer página.jsp requisitada, a Servlet receberá a requisição. O Mapeamento do elemento <servlet-mapping> pode ser construído como abaixo. <servlet-mapping> <servlet-name>servlet</servlet-name> <url-pattern>/primeiraservlet</url-pattern> </servlet-mapping> web.xml Após o mapeamento reiniciando o servidor, para que as configurações do mapeamento sejam carregadas podemos obter um resultado como este: Figura 2 Resultado de Acesso a uma Servlet Toda e qualquer servlet só receberá requisições caso a mesma esteja mapeada corretamente. Alguns erros comuns no mapeamento de Servlets são:

Esquecer da barra inicial no URL pattern Figura 3 Erros comuns em Servlets Assim o servidor não encontrará o recurso solicitado e o mesmo retornará um erro 404, indicando que o recurso não está disponível. Digitar errado o nome do pacote da sua servlet ou esquecer de colocar o nome da classe no mapeamento da servlet Figura 4 Erros comuns em Servlets

Dessa forma o servidor não encontrará uma Servlet no mapeamente indicado. Servlets e Objetos Implícitos do JSP Como já sabemos um JSP ao ser compilado no servidor torna-se uma servlet, assim os recursos que temos na tecnologia JSP também estão disponíveis em Servlets. Vejamos agora como encontrar os objetos implícitos do JSP na tecnolgia Servlet. out O objeto implícito out serve para imprimir respostas em Java dentro de um JSP, este objeto é uma instância da classe java.io.printwriter. Podemos então acessar sua instância em uma servlet através de um método do objeto response que encapsula um stream de saída para um conteúdo do tipo texto. Esse stream é utilizado para enviar resposta para o cliente que enviou a requisição. protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getwriter(); out.print("minha Primeira Servlet!"); É possível o retorno do conteúdo da servlet ser HTML, XML, JSON e várias outras tecnologias que descrevem dados, assim podemos criar Web Services com a tecnologia Servlets. Veja o exemplo que retorna uma página HTML.

protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getwriter (); out.print("<html><body>"); out.print("<h1> Seja Bem Vindo! </H1>"); out.println("</body>< /HTML>"); request e response Os objetos implícitos request e response em uma página JSP são instâncias das classes HttpServletRequest e HttpServletResponse, portanto é possível invocar qualquer método anteriormente usados em páginas JSP. A forma para acessar estes objetos é através dos parâmetros dos métodos reescritos na Servlet. protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { //Aqui é possível invocar os métodos do objeto //HttpServletRequest request //HttpServletResponse response session O objeto implícito session é do tipo HttpSession, para acessar este objeto através de uma servlet, basta invocar o método getsession do objeto HttpServletRequest que pode ter duas assinaturas: HttpSession getsession() Este método retornará a sessão associada a requisição que está sendo feita.

HttpSession getsession(boolean arg0) Este método retornará a sessão associada à requisição que está sendo feito, porém caso a sessão não exista passando o argumento true, ela será criada. protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getsession(true); session.setattribute("usuario", "João");