Tutorial JSP1

Embed Size (px)

Citation preview

  • Java Server Pages

    JSP

    Roneclei Campos dos Santos

    [email protected]

    Eduardo Manuel de Freitas Jorge

    [email protected]

    2008

  • Java Server Pages JSP

    2

    Sumrio: 1 Introduo...........................................................................................................3 2 Arquitetura JSP...................................................................................................4 3 Objetos Instanciados JSP...................................................................................5 4 Scripts.................................................................................................................5 4.1 Declaraes utilizadas..............................................................................5 4.2 Diretivas utilizadas....................................................................................6 5 Sesso de Aplicao..........................................................................................6 6 Sesso de Usurio.............................................................................................8 7 Objeto Request...................................................................................................9 8 Conceitos bsicos de formulrios HTML..........................................................10 8.1 HTML......................................................................................................10 8.2 Formulrios HTML..................................................................................10 9 Tabela...............................................................................................................12 10 Link.................................................................................................................14 11 - Exemplo prtico Aplicao Login..................................................................14 11.1 Configurao do Ambiente de Desenvolvimento JSP..........................15 11.1.1 Recursos necessrios........................................................................15 11.1.2 instalao do JDK em ambiente Windows.........................................16 11.1.3 Instalao do Tomcat.........................................................................16 11.2 Criando Estrutura de Diretrios...................................................................18 11.2.1 Editando o arquivo web.xml..............................................................19 11.3 Implementando as Classes..........................................................................20 11.4 Implementando as pginas JSP..................................................................23 12 - Concluso........................................................................................................29 13 - Referncias.....................................................................................................29

  • Java Server Pages JSP

    3

    1 Introduo

    JSP Java Server Pages uma tecnologia utilizada no desenvolvimento de aplicaes Web, desenvolvida pela Sun microsystem, similar s tecnologias Active Server Pages (ASP) da Microsoft e PHP. Estas tecnologias esto fundamentadas na arquitetura SSI Server Side Includes que so comandos extensivos linguagem HTML, os quais podem conter contedo esttico (HTML) e dinmico (ASP, PHP, JSP, etc.). Esses comandos dinmicos so processados pelo servidor Web antes da pagina HTML ser enviada. No lugar do comando enviado apenas o resultado deste comando no formato HTML.

    Por ser baseada na linguagem de programao Java, tem a vantagem da portabilidade de plataforma, que permite a sua execuo em diversos sistemas operacionais, como o Windows e o Linux. Esta tecnologia permite ao desenvolvedor web produzir aplicaes que acessem o banco de dados, manipulem arquivos no formato texto, capturem informaes a partir de formulrios e captem informaes sobre o visitante e sobre o servidor. Para desenvolver aplicaes JSP necessrio um conhecimento prvio sobre a especificao J2EE que um conjunto de padres e especificaes responsvel por receber as requisies do cliente, entend-las e direcion-las aos responsveis pelas respostas s aes solicitadas. Uma das especificaes contidas em J2EE a definio de um container Web. O container Web o servidor de aplicao compatvel com a especificao J2EE que d suporte aos JSPs, e disponibiliza uma API com 9 objetos instanciados, que facilitam a implementao, isto possibilita ao programador focar o desenvolvimento na lgica da aplicao.

    Este Tutorial tem como objetivo apresentar conceitos bsicos sobre a tecnologia Java Server Pages (JSP) desenvolvida pela Sun. Ser abordado um exemplo prtico de uma aplicao de Login, contendo conceitos de sesso de aplicao, sesso de usurio, requisies, configurao de ambiente de desenvolvimento,

  • Java Server Pages JSP

    4

    alm da instalao e configurao das ferramentas utilizadas. Ser mostrado tambm conceitos bsicos de HTML necessrios para o desenvolvimento da aplicao de Login.

    2 Arquitetura JSP

    Figura 1 O Cliente faz uma requisio a uma pgina. O browser web efetua o pedido

    atravs da Internet. O pedido JSP enviado para o servidor web. O servidor web reconhece o pedido especial (extenso .jsp) e entrega o

    arquivo JSP ao JSP Engine.

  • Java Server Pages JSP

    5

    3 Objetos Instanciados JSP

    O ambiente de uma pgina JSP disponibiliza 9 objetos instanciados, para ser usado na implementao:

    request javax. servlet. ServletRequest response javax. servlet. ServletResponse pageContext javax. servlet. jsp. PageContext session javax. servlet. http. HttpSession application javax. servlet. servletContext out javax. servlet. jsp. JspWriter config javax. servlet. ServletConfig page java. lang. Object exception java. lang. Throwable

    4 Scripts

    Os Scripts so trechos de cdigo embutidos no cdigo HTML do JSP. No confundir com Java Scripts. Os scripts em uma pgina JSP so interpretados no servidor, enquanto que os Java Scripts so interpretados pelo browser (lado cliente).

    4.1 Declaraes utilizadas As declaraes so usadas para definir variveis e mtodos especficos para uma pgina JSP.

    Declarao de expresso - o resultado retornado como um String Exemplo: O seu endereo IP : // Ser retornado o String 4

  • Java Server Pages JSP

    6

    Declarao de sintaxe: -.declarao livre. Exemplo:

    4.2 Diretivas utilizadas

    Diretiva page import : importa pacotes de classes. Exemplo:

    Diretiva page language: informa a linguagem utilizada. Exemplo:

    Diretiva Forward: usada para redirecionar uma pgina Exemplo: pageContext.forward("index.jsp");

    5 Sesso de Aplicao

    A primeira vez que uma das pginas JSP da aplicao chamada pode ser criada a referncia ao objeto na sesso de aplicao. Atravs do objeto implcito pageContext possvel recuperar os atributos de qualquer escopo, utilizando o mtodo getAttribute(String name, intScope) da classe PageContext a qual tem variveis static final para cada escopo.

    Se eu desejar recuperar os atributos da sesso de aplicao:

    Para setar o atributo na sesso utilizado o mtodo setAttribute

  • Java Server Pages JSP

    7

    pageContext.getAttribute(); public abstract java.lang.Object getAttribute(java.lang.String name, int scope)

    Retorna o objeto associado com o nome no scopo especificado ou retorna null se o objeto no for encontrado.

    pageContext.setAttribute(); public abstract void setAttribute(java.lang.String name, java.lang.Object value, int scope)

    Registra o nome e o valor especificado com o escopo definido.

    No exemplo abaixo, possvel acessar o objeto gl em qualquer pgina que contenha este cdigo: GerenciaLogin gl = (GerenciaLogin) pageContext.getAttribute("gerenciaLogin",PageContext.APPLICATION_SCOPE); if (gl==null){ gl = GerenciaLogin.getInstancia(); pageContext.setAttribute("gerenciaLogin",gl,PageContext.APPLICATION_SCOPE); }

    Fonte: http://www.novatec.org/emjorge/pasi/modulo4_JSP.ppt Figura 2

  • Java Server Pages JSP

    8

    Ao lado esquerdo tem-se uma pgina JSP fazendo referncia sesso de aplicao. Ao lado direito. Ao lado direito est descrito a Sesso de Aplicao provendo acesso a diversas pginas JSP.

    6 Sesso de Usurio

    o mecanismo utilizado para prover o controle de usurios dentro de uma aplicao web. Como o protocolo http no armazena informaes de estado. necessrio tratar estes dados com sesso de usurio. Por exemplo: em uma aplicao web que necessite de autenticao, desejvel que o login seja solicitado em uma pgina de login, e os recursos das outras pginas do site devem estar disponveis aps a autenticao. Alm disso, o usurio no poder acessar diretamente certas pginas sem ter efetuado o login e somente o usurio autenticado com o mesmo browser que poder obter um referncia para o objeto da sesso. Mais adiante, ser mostrado um exemplo prtico do uso de sesso de usurio.

    Para setar o atributo de um usurio: Session. SetAttribute public void setAttribute(java.lang.String name, java.lang.Object value)

    Liga um objeto a essa sesso, usando o nome especificado. Se um objeto do mesmo nome limitado j sesso, o objeto renomeado.

    Exemplo: session.setAttribute("login", l);

    Para recuperar o atributo de um usurio. Session. GetAttribute public java.lang.Object getAttribute(java.lang.String name)

    Retorna o objeto com o especifico nome na sesso corrente, ou nulo se nenhum objeto possuir o mesmo nome.

    Exemplo: session.getAttribute("login")

  • Java Server Pages JSP

    9

    7 Objeto request

    Solicitao que aciona o processamento da pgina e busca por valores de parmetros ou cookies.

    - REQUEST.GETPARAMETER() ; javax. servlet. ServletRequest

    Passando parmetros

    Index.jsp

    Recebendo Parmetros

    Verifica.jsp

  • Java Server Pages JSP

    10

    String login_ = request.getParameter("login"); String senha_ = request.getParameter("senha");

    out.println("" + "login: " + login_);

    %>

    Obs.: OUT.PRINTLN(); javax. servlet. jsp. JspWriter Mtodo utilzado para imprimir na tela do browser. Pode conter variveis, constantes, nmeros, arrays, Tags html, etc.

    Exemplo: out.println("" + "login: " + login_);

    8 Conceitos bsicos de formulrios HTML

    A seguir sero apresentados conceitos bsicos de formulrios HTML necessrio realizao desde tutorial.

    8.1 HTML

    HTML (acrnimo para a expresso inglesa HyperText Markup Language, que significa Linguagem de Marcao de Hipertexto) uma linguagem de marcao utilizada para produzir pginas Web estticas. Documentos HTML podem ser interpretados por navegadores. Fonte: http://pt.wikipedia.org/wiki/HTML

    8.2 Formulrios HTML

    Os formulrios constituem-se numa matria de extrema importncia no HTML, uma vez que so responsveis pela interao entre um usurio e o servidor, possibilitando a troca de dados ou informaes.

  • Java Server Pages JSP

    11

    Principais Tags utilizadas em um Formulrio

    : inicia e termina um formulrio. Ex: O atributo method especifica a forma de envio dos dados do formulrio. Os mais utilizados so GET e POST. No mtodo GET os dados de entrada do script fazem parte do URL associado consulta enviada para o servidor - por exemplo: mydoc.jsp?var1=valor1&var2=valor2... etc. J no mtodo POST, os dados de entrada do formulrio so enviados pelo corpo da mensagem para o servidor, sendo invisvel para o usurio, alm de ser possvel transferir grande quantidade de dados.

    O atributo action define o tipo de ao a realizar com o formulrio. O formulrio pode ser enviado para um programa ou script que processa seu contedo ou enviado a um endereo de e-mail.

    : text (linha nica para texto), password, checkbox, radio, submit (button) e reset (button);

    Qualquer que seja o tipo de entrada de dados (Input, checkbox, radiobutton, ComboBox, etc). Cada um destes campos deve possuir um atributo name associado a um nome, de tal forma que o parmetro action possa receber uma varivel com o valor digitado pelo usurio.

    Exemplos:

  • Java Server Pages JSP

    12

    Parmetros opcionais:

    value - atribui um valor inicial para o campoo;

    size - especifica o tamanho do campo;>

    maxlenght - especifica o nmero mxximo de caracteres aceitos pelo campo. Um boto do tipo reset pode ser usado para restaurar o valor padro de todos os campos de um formulrio:

    Exemplo:

    Um boto do tipo submit enviar as opes ou informaes digitadas ao servidor:

    Exemplo:

    So opcionais os parmetros value que especifica o texto a ser exibido no boto e o parmetro name que determinar a transmisso do valor contido em value, permitindo inserir de vrios botes.

    9 TABELA

    As tabelas so definidas pelas Tags e . Dentro dessas duas etiquetas so colocadas todas as outras etiquetas, textos e imagens que daro forma e contedo tabela.

    As tabelas so descritas por linhas da esquerda para direita. Cada uma destas linhas definida por outra tag e seu fechamento: e . Ainda assim, dentro de cada linha, haver diferentes clulas. Cada uma dessas clulas ser definida por outro par de etiquetas: e . Dentro desta etiqueta ser colocado o contedo.

  • Java Server Pages JSP

    13

    Exemplo de estrutura de tabela:

    Clula 1, linha 1 Clula 2, linha 1

    Clula 1, linha 2 Clula 2, linha 2

    O resultado ser:

    Clula 1, linha 1 Clula 2, linha1 Clula 1, linha 2 Clula 2, linha 2

    Parmetros opcionais:

    align: Justifica o texto da clula da mesma forma que se fosse o de um pargrafo. border: especifica a espessura da borda da tabela. Se colocado 0 a tabela criada sem borda. Valign: Podemos escolher se queremos que o texto aparea acima (top), no centro (middle) ou abaixo (bottom) da clula. bgcolor: D cor clula ou escolha de linha. bordercolor: Define a cor da borda. Outros atributos que podem ser unicamente atribudos a uma clula e no ao um conjunto de clulas de uma linha so: background: Permite-nos colocar um fundo para a clula a partir de um link a uma imagem. height: Define a altura da clula em pixels ou porcentagem.

  • Java Server Pages JSP

    14

    width: Define a largura da clula em pixels ou porcentagem colspan: Expande um clula horizontalmente. rowspan: Expande um clula verticalmente.

    10 LINK

    Para colocar um link, utilizaremos as etiquetas e . Dentro da etiqueta de abertura devemos especificar o destino do link. Este destino ser introduzido sob a forma de atributo, no qual leva o nome href.

    A sintaxe geral de um link portanto da seguinte forma:

    contedo

    Sendo o contedo um texto ou uma imagem. a parte da pgina que se colocar ativa e onde deveremos clicar para acessar o link.

    E o destino por sua vez, ser uma pgina, um correio eletrnico ou um arquivo.

    11 Exemplo prtico Aplicao Login

    Como dito na introduo deste tutorial, para exemplificar os conceitos vistos acima ser abordado um exemplo prtico de uma aplicao de Login. O desenvolvimento da aplicao de login ser feito atravs de um Passo-a-Passo, pois esta foi a forma mais simples encontrada para a implementao da aplicao.

    Segue abaixo a estrutura de funcionamento da aplicao mostrada na figura 3:

  • Java Server Pages JSP

    15

    index.jsp verfica.jsp cadastrar.jsp

    Figura 3

    11.1 Configurao do Ambiente de Desenvolvimento JSP

    11.1.1 Recursos necessrios

    A seguir os recursos necessrios para este tutorial e como consegu-los:

    Recursos URL Verso

    Kit JDK http://www.sun.com 6.0 Tomcat http://tomcat.apache.org/download-55.cgi 5.5.16

    Para instalar o Tomcat necessrio possuir o kit de desenvolvimento Java JDK instalado em sua mquina.

  • Java Server Pages JSP

    16

    11.1.2 instalao do JDK em ambiente Windows

    O JDK pode ser baixado no site da Sun, http://www.sun.com , na guia Java - Download the lastest JDK. Para configurar o JDK, defina a varivel de ambiente JAVA_HOME apontando para seu local de instalao (Ex: JAVA_HOME=C:\Arquivos de programas\Java\jdk1.6.0_05) . Esta varivel de ambiente padro usada pelo Tomcat e vrios outros sistemas baseados em Java, para determinar a JVM preferencial. Isto muito importante se houver mais de uma instalao de J2SE no computador, mas a varivel JAVA_HOME deve ser definida mesmo se houver apenas uma verso instalada.

    11.1.2 Instalao do Tomcat

    Aps instalar e configurar o JDK, baixe o Apache Tomcat do site http://tomcat.apache.org, Para instalar o Tomcat basta clicar em Next, Next,... , Finish e o Tomcat estar instalado. Caso o servio no rode da primeira vez, execute o arquivo startup.bat localizado na pasta bin do Tomcat. Neste tutorial ser utilizada a verso 5.0.16 do Tomcat. Para maiores informaes sobre verses, acesse o site Apache Tomcat, na Apache Software Foundation.

    Para testar se o Tomcat est funcionando corretamente, abra o seu browser e digite http://localhost:8080. Dever aparecera seguinte pgina:

  • Java Server Pages JSP

    17

    Figura 4 Na home-page padro do Tomcat, possvel acessar ferramentas de interface Web para administrar e gerenciar o servidor, sem a necessidade de editar arquivos de configurao.

    Para utilizar as ferramentas solicitado o login de usurio (padro admin) e a senha, cadastrados durante a instalao do tomcat, para acesso a estes recursos.

    Tomcat Manager - Permite gerenciar as aplicaes iniciar, parar, re-iniciar, fazer deploy (distribuio) e undeploy bem como monitorar o estado do servidor.

    Tomcat Administration - Permite criar, excluir e configurar Servios e seus elementos internos (Connector, Host, Alias, Context, Logger, Valve) do

  • Java Server Pages JSP

    18

    Servidor Tomcat, bem como Recursos (Data Source etc.) e Autorizaes (User, Group, Role). Estes itens correspondem aos elementos e atributos disponveis no arquivo de configurao server.xml.

    11.2 Criando Estrutura de Diretrios

    Para rodar os seus arquivos JSP necessrio montar uma estrutura de diretrios dentro da pasta onde o Tomcat foi instalado da seguinte forma:

    Figura 5 loginWeb: local onde ficaro os arquivos *.html, *.jsp, e as imagens. WEB-INF (respeitando maisculas): deve conter o arquivo web.xml. classes: arquivos de classes (*.class) que sero utilizadas pelas pginas

    JSP. fib: classes utilizadas na aplicao que esto no pacote fib. lib: pacotes *.jar de bibliotecas utilizadas devem ficar armazenados aqui.

  • Java Server Pages JSP

    19

    Esta estrutura de diretrios universal, e interpretada por qualquer servidor, sem a necessidade de alterao. Alm disso, facilita a organizao do contedo de desenvolvimento, bem como a segurana da aplicao, deixando visvel apenas o contedo necessrio.

    11.2.1 Editando o arquivo web.xml

    Segundo a especificao Java Servlet/J2EE, o arquivo web.xml o descritor do contexto de aplicao web, contm as configuraes especficas da aplicao.

    web.xml:

    Aplicao Login

    LoginWeb

    index.jsp

    404 /error.jsp

  • Java Server Pages JSP

    20

    11.3 Implementando as Classes

    Classe Login:

    package fib;

    /** * @author emjorge *

    * TODO To change the template for this generated type

    comment go to

    * Window - Preferences - Java - Code Generation - Code and

    Comments

    */ public class Login { private String nome;

    private String senha;

    /** * @return Returns the nome.

    */ public String getNome() { return nome;

    } /** * @param nome The nome to set.

    */ public void setNome(String nome) { this.nome = nome;

    } /** * @return Returns the senha.

  • Java Server Pages JSP

    21

    */ public String getSenha() { return senha;

    } /** * @param senha The senha to set.

    */ public void setSenha(String senha) { this.senha = senha;

    } public boolean equals(Object o){ Login l = (Login)o; if

    ((this.nome.equals(l.getNome()))&&(this.senha.equals(l.getSenha()))){ return true;

    }else { return false;

    } } }

    Classe GerenciaLogin:

    package fib;

    import java.util.*;

    /** * @author emjorge *

  • Java Server Pages JSP

    22

    * TODO To change the template for this generated type

    comment go to

    * Window - Preferences - Java - Code Generation - Code and

    Comments

    */ public class GerenciaLogin { private ArrayList listaLogin = new ArrayList(); private static GerenciaLogin gl = new GerenciaLogin();

    private GerenciaLogin(){ try{ Login l = new Login(); l.setNome("emjorge"); l.setSenha("123"); this.addLogin(l); }catch(Exception e){

    }

    } public static GerenciaLogin getInstancia(){ return GerenciaLogin.gl;

    } public void addLogin(Login l) throws Exception{ if (!(this.existeLogin(l))){ this.listaLogin.add(l);

    }else { throw new Exception("Login duplicado"); } }

  • Java Server Pages JSP

    23

    public boolean existeLogin(Login l){ Iterator it = this.listaLogin.iterator(); while (it.hasNext()){ Login l1 =(Login) it.next(); if (l.equals(l1)){ return true;

    } } return false;

    } public ArrayList getListaLogin(){ return this.listaLogin;

    } public static void main(String args[]){ Login l = new Login(); l.setNome("emjorge"); l.setSenha("123");

    System.out.println(GerenciaLogin.getInstancia().existeLogin(l)); }

    }

    11.4 Implementando as pginas JSP

    index.jsp

  • Java Server Pages JSP

    24

    Login JSP

    Login:

  • Java Server Pages JSP

    25

    Senha:

    LoginSenha

    verifica.jsp

  • Java Server Pages JSP

    26

    if (gl==null){ gl =GerenciaLogin.getInstancia(); pageContext.setAttribute("gerenciaLogin",gl,PageContext.APPLICATION_SCOPE); } Login l = new Login(); l.setNome(request.getParameter("login")); l.setSenha(request.getParameter("senha")); if (gl.existeLogin(l)){ session.setMaxInactiveInterval(1800); session.setAttribute("login", l); out.println(" Login efetuado com sucesso"); }else{ session.invalidate(); request.setAttribute("msg","Login Invlido"); pageContext.forward("index.jsp"); } %>

    Login Verificado JSP

    cadastrar Login

    cadastrar.jsp

  • Java Server Pages JSP

    27

    GerenciaLogin gl = (GerenciaLogin) pageContext.getAttribute("gerenciaLogin",PageContext.APPLICATION_SCOPE); if (gl==null){ gl =GerenciaLogin.getInstancia(); pageContext.setAttribute("gerenciaLogin",gl,PageContext.APPLICATION_SCOPE); }

    Login sl = (Login)session.getAttribute("login"); if (sl == null){ request.setAttribute("msg", "Efetue o login"); pageContext.forward("index.jsp"); } if (!(request.getParameter("cadastrar")==null) && sl != null){ try{ Login l = new Login(); l.setNome(request.getParameter("login")); l.setSenha(request.getParameter("senha")); gl.addLogin(l); }catch(Exception e){ out.println("Ateno: Login j existe"); } }

    %>

    Login JSP

    Login:

  • Java Server Pages JSP

    28

    Senha:

    LoginSenha

  • Java Server Pages JSP

    29

    12 Concluso

    JSP permite o desenvolvimento de aplicaes do lado do servidor e baseado em Java, uma linguagem OO, podendo ser aplicados todos os conceitos de reutilizao de componentes, desacoplamento e encapsulamento. JSP possibilita separar a programao lgica (parte dinmica) da programao visual (parte esttica), facilitando o desenvolvimento de aplicaes mais robustas, onde programador e designer podem trabalhar no mesmo projeto, mas de forma independente. Alm disso, outra vantagem das aplicaes Java a segurana e a portabilidade. Uma desvantagem que pode ser apontada do JSP que, quando comparada com outras ferramentas de desenvolvimento web, como ASP, por exemplo, JSP considerada mais difcil de se aprender porque orientada a objetos e a maneira de escrever os programas mais rgida.

    13 Referncias:

    JAVA PARA A WEB COM SERVLETS, JSP E EJB o Autor: Budi Kurniawan o Editora: Cincia Moderna

    Sun o http://java.sun.com/products/jsp/docs.html

    Tutorial Tomcat - Instalao e Configurao Bsica o http://www.mhvila.com.br/topicos/java/tomcat.html

    NovaTec Eduardo Jorge o http://www.novatec.org/emjorge/pasi/modulo4_JSP.ppt

    CriarWeb o http://www.criarweb.com/artigos/93.php o http://www.criarweb.com/artigos/88.php