Aplicao Web
JSP, Servlet, Estrutura de um WAR, web.xml (principais tags)
Java Server Pages
Declaraes, Expresses, Scriptlets, Comentrios e Diretivas
1
Java Server Pages
JSP uma tecnologia para desenvolvimento de aplicaes WEB que utiliza Java como linguagem de script. A rigor, toda a pgina jsp convertida pelo servidor para uma Servlet. Na primeira vez em que a pgina executada, o container JSP gera o arquivo .java e .class correspondente pgina jsp (por isso a primeira chamada pgina mais lenta). Nas prximas vezes o container utiliza o .class que j foi gerado para executar a pgina. Uma nova Servlet s ser gerada quando o arquivo jsp for alterado.
Organizado por Rosimeire Teixeira e Alex Nrio
Java Server Pages
Um arquivo jsp contm alm de tags HTML, cdigo java que possibilitam a criao de contedo dinmico. A organizao deste cdigo java na pgina feita atravs de delimitadores especficos divididos 5 categorias: Declaraes Expresses Scriptlets Comentrios Diretivas
Organizado por Rosimeire Teixeira e Alex Nrio
2
JSP - Declaraes
So usadas para definir atributos e mtodos especficos para a pgina jsp em questo. A sintaxe de uma declarao : O contedo deve seguir a mesma estrutura de declarao de mtodos e atributos em Java.
Organizado por Rosimeire Teixeira e Alex Nrio
Exemplo declaracao.jsp
Curso de Java 2 - JSP - Declaraes
Organizado por Rosimeire Teixeira e Alex Nrio
3
JSP - Expresses
So utilizadas para retornar um valor String a partir de um trecho de cdigo Java. A sintaxe de uma expresso : O que o servidor jsp faz de fato ao encontrar esta tag numa ) pgina substitu-la por: out.print(expresso). out.print( Por isso o contedo de uma expresso no possui ponto-evrgula no final.
Organizado por Rosimeire Teixeira e Alex Nrio
Exemplo expressao.jsp Curso Java 2 - JSP - Expresses A raiz de
Organizado por Rosimeire Teixeira e Alex Nrio
4
JSP - Scriptlets
So utilizados para escrever trechos de cdigos Java na pgina. A sintaxe de um scriptlet : Simplificando, o cdigo Java que vlido aqui o mesmo que utilizado dentro de um mtodo numa classe Java
Organizado por Rosimeire Teixeira e Alex Nrio
Exemplo scriptlet.jsp Curso Java 2 - JSP - Scriptlets Linha Par! Linha Impar!
Organizado por Rosimeire Teixeira e Alex Nrio
5
JSP - Comentrios
Existem dois tipos principais de comentrios que podem ser usados em uma pgina JSP : Comentrios de contedo, que so enviados para o cliente mas no geram uma sada visvel. S possvel v-los editando o cdigo HTML da pgina. Sintaxe: Comentrios JSP, que no so enviados para o cliente. Esto disponiveis apenas nos arquivos JSP. As sintaxes possveis so: e
Organizado por Rosimeire Teixeira e Alex Nrio
Exemplo comentarios.jsp
Curso Java 2 - JSP - Comentrios
Organizado por Rosimeire Teixeira e Alex Nrio
6
JSP - Diretivas
As diretivas so usadas para fornecer informaes especiais ao container JSP sobre a pgina JSP quando esta compilada para uma Servlet. A sintaxe de uma diretiva : Os dois tipos principais de diretivas so: page include
Organizado por Rosimeire Teixeira e Alex Nrio
JSP Diretivas - page
A diretiva page segue a seguinte sintaxe:
Dos atributos de page, o mais importante para ns neste momento o import. O atributo import funciona de maneira anloga ao import das classes. A sintaxe da diretiva page com o atributo import preenchido fica assim: Ou %> %>Organizado por Rosimeire Teixeira e Alex Nrio
7
Exemplo diretiva_page.jsp Curso Java 2 - JSP - Diretiva page ,
,
Organizado por Rosimeire Teixeira e Alex Nrio
JSP Diretivas - include
A diretiva include permite que um arquivo seja includo pagina atual. A sintaxe da diretiva include : Uma boa ilustrao de utilizao de includes quando se deseja reproduzir um cabealho padro para vrias pginas.
Organizado por Rosimeire Teixeira e Alex Nrio
8
Exemplo cabecalho.html Exemplos da Sintaxe Padro JSP Declarao. Expresses. ScriptLets. Comentrios. Diretivas: page e include.
Organizado por Rosimeire Teixeira e Alex Nrio
Exemplo diretiva_include.jsp
Curso Java 2 - JSP - Diretiva include
Organizado por Rosimeire Teixeira e Alex Nrio
9
Java Server Pages
Objetos implcitos
JSP - Objetos Implcitos
Alm do cdigo e das classes criadas pelo programador, as pginas jsp possuem uma srie de objetos implcitos que so instanciados pelo container JSP para viabilizar o acesso e a transferncia de dados durante a execuo da aplicao web. Assim como todo objeto em Java, cada objeto implcito uma instncia de uma classe ou interface. Segue uma tabela com os nove objetos implcitos disponveis nas pginas jsp
Organizado por Rosimeire Teixeira e Alex Nrio
10
JSP - Objetos ImplcitosOBJETO page config request response out session application pageContext exception CLASSE OU INTERFACE javax.servlet.jsp.HttpJspPage javax.servlet.ServletConfig javax.servlet.http.HttpServletRequest javax.servlet.http.HttpServletResponse javax.servlet.jsp.JspWriter javax.servlet.http.HttpSession javax.servlet.ServletContext javax.servlet.jsp.PageContext javax.lang.ThrowableOrganizado por Rosimeire Teixeira e Alex Nrio
DESCRIO Instncia de servlet da pgina Dados de configurao de servlet Dados de solicitao, incluindo parmetros Dados de resposta Fluxo de sada para contedo da pgina Dados de sesso especficos de usurio Dados compartilhados por todas as pginas de aplicao Dados de contexto para execuo da pgina Erros no capturados ou exceo
JSP Objetos Implcitos
Dentre estes todos estes objetos, os mais relevantes para iniciantes em JSP so: Os objetos que se referem ao contexto da pgina. request, session, application e pageContext Mtodos importantes: Object getAttribute(String key) void setAttribute(String key, Object value)
O objeto que representa um fluxo de sada para a pgina out Mtodos: print() e println()
O objeto que representa um erro inesperado exception Mtodo importante: String getMessage()
Organizado por Rosimeire Teixeira e Alex Nrio
11
Java Server Pages
Trabalhando com Formulrios
JSP Formulrios (um pouco de HTML)
Um formulrio um modelo para a entrada de um conjunto de dados. O elemento delimita um formulrio e contm uma seqncia de elementos de entrada e de formatao do documento. ... Os atributos de FORM que nos interessam agora so: ACTION Especifica a pgina para a qual sero enviados os dados do formulrio.
METHOD Seleciona um mtodo para acessar o URL de ao. Os mtodos usados atualmente so GET e POST. Ambos os mtodos transferem dados do browser para o servidor, com a seguinte diferena bsica: POST os dados entrados fazem parte do corpo da mensagem enviada para o servidor; transfere grande quantidade de dados. GET os dados entrados fazem parte do URL (endereo) associado consulta enviada para o servidor; suporta at 128 caracteres.Organizado por Rosimeire Teixeira e Alex Nrio
12
JSP Formulrios (um pouco de HTML)
Os formulrios podem conter qualquer formatao - pargrafos, listas, tabelas, imagens - exceto outros formulrios. Em especial, colocamos dentro da marcao de as formataes para campos de entrada de dados, que so trs: , e . Todos os campos de entrada de dados tm um atributo NAME, ao qual associamos um nome, que ser utilizado posteriormente para capturar estes dados em Java. O envio dos dados do formulrio para a pgina indicada no action da tag feito atravs do boto submit. Para manipular os dados vindos do formulrio esta pgina destino deve receber estes dados e trat-los em Java.Organizado por Rosimeire Teixeira e Alex Nrio
Servlets
Ciclo de vida, Principais mtodos, Requisies e respostas, Sesso
13
Servlet Introduo
Mdulos de software executados em um servidor Web para atender requisies de aplicaes cliente e prestarlhe algum servio. Protocolo utilizado: HTTP; Processa dados de um formulrio HTML e gera resposta dinmicas para o cliente. Servidor Web: Software desenvolvido de acordo a especificao de Servlet Exemplo: Apache Tomcat (http://jakarta.apache.org/tomcat)
Biblioteca necessria: servlet.jarOrganizado por Rosimeire Teixeira e Alex Nrio
Servlet Estrutura bsica
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { //Insira o codigo aqui. } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { //Insira o codigo aqui. } }
Organizado por Rosimeire Teixeira e Alex Nrio
14
Servlet Ciclo de vida
HttpServlet : init(), destroy(), service(); Mapeamento de requisies para servlets: Se no existe uma instncia para a servlet invocada: Cria-se uma instncia da servlet; Invoca o mtodo init();
Invoca o mtodo service() passando os objetos de requisio e resposta como parmetro;
Ao remover uma servlet: Invoca o mtodo destroy();
Organizado por Rosimeire Teixeira e Alex Nrio
Servlet Principais mtodos
doGet(...) Processam requisies do tipo GET;
doPost(...) Processam requisies do tipo POST;
So invocados automaticamente pelo mtodo service() da classe HttpServlet;
Organizado por Rosimeire Teixeira e Alex Nrio
15
Servlet
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class AloMundo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { PrintWriter out = response.getWriter(); out.println(Al mundo dos Servlets!); out.close; } } /* ANEXO 2 CODIGO 1 */Organizado por Rosimeire Teixeira e Alex Nrio
Servlet Executando
Copiar a classe compilada para: /webapps/ROOT/WEB-INF/classes
Para executar a servlet: http://:/servlet/AloMundo Exemplo: http://localhost:8080/servlet/AloMundo
Exerccio: Criar a servlet AloMundo e invoc-la a partir do navegador web.
Organizado por Rosimeire Teixeira e Alex Nrio
16
Servlet Contexto
Considerando a execuo de servlet demonstrada, imaginemos agora um servidor, no qual tenhamos diversas aplicaes rodando. Problemas: Teramos classes de aplicaes diferentes misturadas; Dificuldade de manuteno; Desorganizao;
Organizado por Rosimeire Teixeira e Alex Nrio
Servlet Contexto
Diretrio no servidor onde colocaremos nossa aplicao; O nome desse diretrio identificar nossa aplicao no servidor; A aplicao ser mapeada para um contexto especifico; Cada aplicao ter seu prprio contexto; Nomenclatura: /webapps/
Exemplo: /webapps/treinamento/
Organizado por Rosimeire Teixeira e Alex Nrio
17
Aplicao Web
Organizado por Rosimeire Teixeira e Alex Nrio
Aplicao Web arquivo compactado
Organizado por Rosimeire Teixeira e Alex Nrio
18
Web.xml
Arquivo de configuraes de uma aplicao web. Deployment Descriptor.
ANEXO 2 CODIGO 2.
Organizado por Rosimeire Teixeira e Alex Nrio
Configurando Servlet
A classe deve ser colocada no diretrio: //classes
Alterar o arquivo web.xml Incluir configurao referente a nova servlet
Organizado por Rosimeire Teixeira e Alex Nrio
19
Configurando Servlet
Exerccio: Criar um contexto no servidor; Criar os diretrios WEB-INF/classes; Copiar a servlet para o diretrio WEB-INF/classes; Incluir a servlet AloMundo no arquivo web.xml; Executar a servlet a partir do browser.
Organizado por Rosimeire Teixeira e Alex Nrio
Modelo Requisio e Resposta
Requisio HTTP
Resposta HTTP
Organizado por Rosimeire Teixeira e Alex Nrio
20
Modelo Requisio e Resposta
Trabalhando com requisies: Objeto HttpServletRequest request.getParameter(NOME_PARAM); Retorno: String. - NOME_PARAM: Nome do parmetro da requisio. request.setAttribute(NOME_ATTRIB, Object); request.getAttribute(NOME_ATTRIB); Retorno: Object;Organizado por Rosimeire Teixeira e Alex Nrio
Modelo Requisio e Resposta
Trabalhando com requisies: Objeto HttpServletRequest request.getParameterNames(); request.getParameterValues(NOME_PARAM); request.setAttribute(NOME_ATTRIB, Object); request.getAttribute(NOME_ATTRIB); request.getRequestDispatcher(/URL).forward(request, response);
Organizado por Rosimeire Teixeira e Alex Nrio
21
Modelo Requisio e Resposta
Trabalhando com requisies: Objeto HttpServletRequest Encaminhando a requisio para um JSP ou outra servlet: JSP: request.getRequestDispatcher("/jsp/formulario.jsp").forward( request, response); Servlet: request.getRequestDispatcher("/teste/AloMundo").forward(request, response);
Organizado por Rosimeire Teixeira e Alex Nrio
Modelo Requisio e Resposta
Exerccio: ANEXO 2 CODIGO 3 e 4 Exerccios Prticos
Organizado por Rosimeire Teixeira e Alex Nrio
22
Modelo Requisio e Resposta
Trabalhando com resposta: Objeto HttpServletResponse response.getWriter(); Retorno: PrintWriter response.getOutputStream(); Retorno: PrintStream;
Exemplo: PrintWriter writer = response.getWriter(); OutputStream out = response.getOutputStream();Organizado por Rosimeire Teixeira e Alex Nrio
Modelo Requisio e Resposta
Exerccio: Exerccio Prtico 8 ANEXO 2 CODIGO 6, 7 e 8
Organizado por Rosimeire Teixeira e Alex Nrio
23
Sesso
Em uma pgina de comrcio eletrnico, tal como Americanas.com, possvel navegar por diversas pginas e comprar diversos produtos, bastando adicion-los no carrinho de compras. Em aplicaes web desenvolvidas em Java isso pode ser implementado atravs do conceito de sesses.
Organizado por Rosimeire Teixeira e Alex Nrio
Sesso
Uma sesso um espao de memria reservado no servidor para cada usurio logado na aplicao. A sesso restrita para cada usurio. Independe de configuraes feitas pelo usurio. Diferente dos cookies.
Toda sesso tem um tempo de vida limitado. Informaes permanentes devem ser guardadas em banco de dados.
Organizado por Rosimeire Teixeira e Alex Nrio
24
Sesso
Objeto HttpSession : HttpSession session = request.getSession(); session.setAttribute(NOME_ATTRIB, Object); session.getAttribute(NOME_ATTRIB); session.getAttributeNames(); session.invalidate();
Organizado por Rosimeire Teixeira e Alex Nrio
Sesso
Exerccio: Criar uma tabela usurio com os campos: nome, login, senha. Criar a classe UsuarioDAO com o mtodo: public UsuarioVO login(UsuarioVO usuario) {} O mtodo devera retornar um objeto UsuarioVO preenchido caso o usurio seja autenticado. Caso contrarrio, lance uma AplicacaoException (Anexo 2 Cod. 9) com a mensagem: Login ou senha invlidos.
Criar um servlet para processar a requisio de login e guardar o objeto UsuarioVO na sesso. Crie uma servlet, UsuarioLogadoServlet, para obter o usurio logado da sesso e exibir seus dados numa pgina web.
Organizado por Rosimeire Teixeira e Alex Nrio
25
JSTL
Configurando: web.xml /jstl/core /WEB-INF/tlds/c.tld
JSP
/WEB-INF/lib Colocar o arquivo jstl.jar
Organizado por Rosimeire Teixeira e Alex Nrio
JSTL
Organizado por Rosimeire Teixeira e Alex Nrio
26
JSTL
Organizado por Rosimeire Teixeira e Alex Nrio
JSTL
Top Related