UNIDADE II JAVA SERVLETS
INTERNET É uma rede de redes, reunindo computadores do Governo, de universidades e empresas fornecendo infra-estrutura para uso de bancos de dados, correio eletrônico, servidores de arquivos, etc. É uma vasta coleção de redes de computadores que formam e agem como uma única rede, transportando dados e mensagens tanto dentro de um escritório quanto em outro ponto no mundo
INTERNET
INTERNET - ARQUITETURA Baseada na Arquitetura Cliente/Servidor Componentes: Software Hardware» Computador Cliente» Computador Servidor» Redes (LAN e WAN)» Roteador» Programa Cliente» Programa Servidor» Protocolo Aplicação» Protocolo TCP/IP
INTERNET - SERVIÇOS WWW E-MAIL USENET NEWS MBONE CHAT TELEFONIA IP
WEB É: um Sistema de Hipertexto/Hipermídia gráfica e fácil de navegar multi-plataforma distribuída dinâmica interativa Permite: web browsers acessarem formas diferentes de informação
MODELO WEB Cliente WWW Servidor WWW HTTP Internet TCP/IP (melhor-esforço) Serv. HTTP Páginas HTML
EXPLOSÃO DA WEB 1994 - Netscape (Andreesen + Clark) extensões de HTML (frames, etc) linguagem de scripts (depois chamada Javascript) 1995 - Microsoft Intenet Explorer 1996 - outras novidades browsers com Java plug-ins para tipos de dados especiais
PADRÕES WEB Criação de Sites SGML e suas especializações (HTML, XML e SMIL) CSS Envio / Recebimento de Conteúdo HTTP (WebDav / RTSP / SOAP), TCP/RTP(UDP)
CLIENTES WEB Softwares Clientes (Web browsers) Netscape Communicator Internet Explorer Opera Amaya
SERVIDORES WEB Softwares Servidores (Web Servers) IIS Apache iplanet Websphere
PORTAIS WEB Divulgar informações concisas e atualizadas Oferecer serviços Exemplo de Serviços em Portais Institucionais Inscrição no vestibular Simulados on-line Consulta de notas Cadastro em estágio e emprego
PORTAIS WEB Mercado estimado de 200 milhões de usuários (2005) e de 1 bilhão de usuários (2010) 10 milhões de Portais (1999) 200 milhões de Portais (2005)
PORTAIS WEB Não é possível desenvolver serviços utilizando (somente) os padrões W3C especificados. Solução Utilizar linguagens de programação para WWW Java Framework.NET Framework Independentes (JavaScript, Jscript, PHP, Flash, CGI, ColdFusion, etc.)
PORTAL UNAMA Solução Adotada: Java Framework (J2EE)
MODELO J2EE
MODELO J2EE SERVLET JSP EJB JDBC
JAVA SERVLETS Servlets são módulos que estendem servidores orientados a requisição/resposta, como servidores Web habilitados para Java. Um Servlet é similar a extensão proprietária de um servidor, sendo executado na JVM do mesmo.
JAVA SERVLETS Tecnologia surgiu em 1997, com objetivo de ser o novo paradigma de programação para servidores (versão atual 2.4). Ser mais eficiente que CGI (um dos primeiros mecanismos a permitir que um servidor WWW criasse conteúdo de forma dinâmica).
CGI Cria um processo para cada requisição Web. Requisição para CGI1 Servidor WWW baseado em CGI Processo Principal Processo Filho para CGI1 Requisição para CGI2 Processo Filho para CGI2 Requisição para CGI1 Processo Filho para CGI1
JAVA SERVLETS Cria threads para cada requisição Web. Requisição para Servlet1 Servidor WWW baseado em Java Servlet thread Processo Principal JVM Servlet1 Requisição para Servlet2 thread thread Requisição para Servlet1 Servlet2
MODELO JAVA SERVLETS
INTERAÇÃO WEB SERVER SERVLETS ServletRequest Web Server Servlet ServletInputStream BufferedReader ServletResponse Request Servlet Response Servlet Web Server ServletOutputStream PrintWriter Web server
Arquitetura da API Servlets Pacote javax.servlet Interface Servlet Classe GenericServlet Pacote javax.servlet.http Classe HttpServlet
Arquitetura da API Servlets Todo Servlet é sub-classe de HttpServlet. GenericServlet service(servletrequest, ServletResponse)() Ht tpservlet service(httpservletrequest, HttpServletResponse)() doget(httpservletrequest, HttpServletResponse)() dopost(httpservletrequest, HttpServletResponse)() dodelete(httpservletrequest, HttpServletResponse)() SeuServlet javax.servlet.* javax.servlet.http.*
Necessário Utilizar: J2SDK 1.3.1 J2EE SDK INSTALAÇÃO Estrutura de Diretório e arquivo de Configuração Servidor de Aplicação J2EE com container Web Documentação da API Servlet
ESTRUTURA DE DIRETÓRIO Necessário criar uma pasta base para todos os arquivos servlets (...\j2ee) Para toda aplicação Web em Java, deverá existir a pasta WEB-INF contida na pasta base. Esta pasta possuirá todas as aplicações Servlet, JSP e EJB.
A pasta WEB-INF possui: /WEB-INF/web.xml /WEB-INF/classes /WEB-INF/lib/*.jar WEB-INF
WEB.XML O arquivo web.xml é o descritor de aplicação WEB (deployment descriptor). Utilizado para configurar uma aplicação web. Utiliza tags pré-definidas para identificar os recursos da aplicação web. Todos web severs J2EE compatible deverão interpretar este arquivo de configuração.
WEB.XML <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>ola</servlet-name> <servlet-class>ola</servlet-class> </servlet> <servlet-mapping> <servlet-name>ola</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app>
CLASSES e LIB O diretório CLASSES contem todas as classes Java servidor (Java Servlets, JSP, EJB, JB). O diretório LIB contem todos os arquivos Java que serão usados pela aplicação WEB. Estes arquivos estão no formato JAR (Java ARchive).
SERVIDOR DE APLICAÇÃO J2EE Caucho Technology Resin 3.0 (JavaServlets 2.4 e JSP 2.0) Disponível para download no Site Caucho (www.caucho.com) Jakarta Tomcat 5.0 (JavaServlets 2.4 e JSP 2.0) Disponível para download no Site Jakarta (http://jakarta.apache.org/) Também disponível no Portal Unama (www.unama.br)
CONFIGURANDO RESIN Descompactar o arquivo resin-2.1.3.zip Criar atalho para o arquivo resin-2.1.3\bin\httpd.exe Editar o arquivo resin-2.1.3\conf\resin.conf
CONFIGURANDO RESIN Alterar o conteúdo da tag (doc-dir) do arquivo resin-2.1.3\conf\resin.conf, incluindo a localização da pasta de arquivos Java Servlets.
EXECUTANDO RESIN
CRIANDO O PRIMEIRO SERVLET import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Ola extends HttpServlet{ public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); out.println("<html>"); out.println("<title>ola Mundo</TITLE>"); out.println("<body><h1>bem vindo a Unama </h1></body></html>"); } }
EXECUTANDO O SERVLET Um Servlet pode ser invocado de três formas: Através de um Browser Através de uma página HTML Através de outro Servlet / JSP
EXECUTANDO O SERVLET Servlets podem ser chamados diretamente digitando-se suas URLs na janela de localização do browser. A URL para um servlet possui a seguinte forma geral: http://nome-máquina:porta/servlet/nomeservlet
EXECUTANDO O SERVLET Onde: nome-máquina - nome do servidor ou localhost se o servidor estiver na sua própria estação; porta - o servidor utiliza a porta 8080; servlet - diretório onde ficam armazenados os servlets. nome-servlet - nome do servlet a ser chamado. Salvar o servlet Ola.java na pasta Classes.
EXECUTANDO O SERVLET
ANATOMIA DO PROGRAMA Importação dos Pacotes Todo Servlet deve utilizar classes dos seguintes pacotes: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; Definição da Classe Todo Servlet é sub-classe de HttpServlet. public class Ola extends HttpServlet{
ANATOMIA DO PROGRAMA Definição de Métodos Diferente do que ocorre com um programa comum Java, um Servlet não possui o método main( ). Pode definir os métodos: service(), doget() e dopost().
ANATOMIA DO PROGRAMA Definição de Métodos public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { O método doget() recebe uma requisição GET HTTP solicitando o envio de um documento HTML.
ANATOMIA DO PROGRAMA Assinatura do Método Os objetos que representam a requisição do web-server e a resposta do servlet são, respectivamente: HttpServletRequest - encapsula dados dos clientes. HttpServlet Response - encapsula a resposta do servlet para o cliente. Os métodos sempre chamam as exceções do tipo ServletException e IOException.
ANATOMIA DO PROGRAMA Corpo do Método O método setcontenttype especifica o tipo de resposta (padrão MIME) a ser enviado pelo servlet. res.setcontenttype("text/html"); O padrão MIME para páginas HTML é text/html.
ANATOMIA DO PROGRAMA Corpo do Método O método getwriter( ) deve ser utilizado para retornar dados de texto para o usuário. PrintWriter out = res.getwriter(); Posteriormente, o objeto padrão de saída out envia as respostas do servlet utilizando o método println(). out.println("<html>");
EXERCÍCIOS 1- Alterar o servlet do exemplo anterior, incluindo novas mensagens a serem apresentadas ao usuário. 2- Criar um servlet que mostre quantas vezes o mesmo foi acessado pelos usuários desde que foi carregado na memória.