Programação Web 2:! Introdução a JSP! Mestrado em Engenharia Informática Universidade do Minho! 290! Deliver information, not just data

Documentos relacionados
5/10/10. Implementação. Building web Apps. Server vs. client side. How to create dynamic contents?" Client side" Server side"

Ciclo de vida; Funcionamento; Requisições e Respostas.

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais

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

Servlets, JSPs e Java Beans

Java Server Pages (JSP)

JSP (Java Server Pages)

Objetivos. Aprender o que são JavaBeans e como podem ser usados em páginas JSPs Usando ações-padrão ao invés de scripts

" # $ %&'( ) *' ( +,)+ ( - $ (+*' 0 12 ' ( %+ -12 )+3 ) (4 )) ) % 12 ) *' (

Java para WEB com Struts 2 e Hibernate

Trabalhando com Servlet

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

J550 JSP com tags padrão

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

!" # # # $ %!" " & ' ( 2

JavaServer Pages (JSP) Leonardo Gresta Paulino Murta

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

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

Unidade 6: Java Server Pages Prof. Daniel Caetano

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

AULA 03 JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS

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

Introdução. Diretivas. Scriptlets. Expressões. Declarações. JavaServer Page. Comentários. Prof. Enzo Seraphim. Pre-definições

JSP (JAVASERVER PAGES)

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

JSP e Servlet Princípio de MVC

Java II. Sérgio Luiz Ruivace Cerqueira

Prof. Roberto Desenvolvimento Web Avançado

Engenharia de Aplicações Sistemas Interactivos 2009/10! JAVASERVER FACES 1.2. Mestrado em Informática Universidade do Minho! 31!

SERVLETS. Introdução UNIDADED

Universidade São Judas Tadeu. Faculdade de Tecnologia e Ciências Exatas. Sistemas de Informação 3ASIN

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

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

programação de páginas de conteúdo dinâmico

João Carlos Pinheiro. Julho / 2004

Surgindo em 1997 a API Java Servlet proporciona ao desenvolvedor a possibilidade de adicionar conteúdo dinâmico em um servidor web usando a

Tecnologias Web. Java Enterprise Edition

Módulo IVb - JSP. Prof. Ismael H F Santos. Módulo IVb Java Server Pages - JSP

Java para WEB. Servlets

Desenvolvimento de Sistemas Corporativos Aula 1.5 Introdução a Servlets. Prof. Bruno Moreno

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

Tutorial Jogo da Velha WEB

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

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

Java na WEB Servlet. Sumário

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

J820. Testes em J2EE com. Jakarta C A C T U S. argonavis.com.br. Helder da Rocha

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

Servlets.

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

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

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

UNIDADE II Sistemas Cadastrais com acesso a Banco de Dados

Desenvolvimento Web TCC Turma A-1

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

A Primeira Aplicação Web com Servlets

JavaScript Fundamental e Servlet Fundamental

2 Criar uma Enterprise Application que num módulo EJB irá conter um ou vários Beans.

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

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

Servlets/JSP/JSF. Prof. Cedric Luiz de Carvalho INF/UFG. Desenvolvimento de Aplicações Web com Interfaces Ricas - 04 / 2010

Java II. Sérgio Luiz Ruivace Cerqueira

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

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

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

SIST706 Sistemas Distribuídos

Registo de condutor (Protótipo funcional) Página apresentada ao utilizador

Aula 7: Servlets (II)

Desenvolvimento Web TCC Turma A-1

DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I Criação de Aplicativos Web. Luiz Leão

JSP - JavaServer Pages

Servlets & JSP. Prof. Ramon Chiara

Java para Desenvolvimento Web

Desenvolvimento Web com JSP/Servlets

AULA 08. Sintaxe JSP. Prof. André Luis Schwerz.

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

Web Presentation Patterns - Controllers

Agilizando o processo de redeploy de aplicações Java

Desenvolvimento Web com Java. Sérgio Lopes Caelum -

Desenvolvimento de aplicações Web. Java Server Pages

J2EE. Projeto de Sistemas de Software

Finalidade dos formulários

Tecnologias para Web

Desenvolvimento de Sistemas Web

A figura acima mostra o script de criação do banco de dados que chamaremos de minicurso.

Programação para Internet

Java na WEB Componentes Bean

PROGRAMAÇÃO SERVIDOR RECURSOS ADICIONAIS EM SISTEMAS WEB DOS SERVLETS. Prof. Dr. Daniel Caetano

PROJETO WEB: Java. Prof Fernando Gomes

Desenvolvimento Web TCC Turma A-1

Faculdades Integradas Santa Cruz. Tutorial de Java MVC WEB Criando uma tela de Login com Banco de Dados

PHP. Hypertext Pre-Processor

Estrutura do Projeto - Trabalhando com Banco de Dados

Configurando uma aplicação Struts

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

UNIDADE III JAVA SERVER PAGES

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

if( document.dados.tx_ .value=="" document.dados.tx_ .value.indexof('.

Transcrição:

Aula 8 Programação Web 2:! Introdução a JSP! Mestrado em Engenharia Informática Universidade do Minho! 289! First principles (7) Deliver information, not just data!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(johnson, 2008)!! Design displays cerfully, get professional help! - Visual order and user focus; scannability; match the medium; attention to detail.!! The screen belongs to the user! - minimise interference with the GUI controls (mouse, )!! Preserve display inertia! - small, incremental changes to the display! Mestrado em Engenharia Informática Universidade do Minho! 290!

Programação Web! JSP Mestrado em Engenharia Informática Universidade do Minho! 291! Common Gateway Interface (CGI)! Early form of server side scripting!! Protocol for interfacing external applications with a web server!! When request received, corresponding program called!! The protocol defines! - how information about the server and the request is passed to the command (arguments and environment variables)! - how the command can pass back extra information about the output (headers)!! Low-tech approach! - inefficient from time and memory perspective! - if CGI used often, can quickly overwhelm web servers! Mestrado em Engenharia Informática Universidade do Minho! 292!

Direct execution! Applications run on web server instead of OS! - Apache modules (PHP, )! - ASP.NET! - Internet Server Application Programming Interface (ISAPI)!! Application servers! - Move back towards mainframe computing! - Server stores business logic and user interface! - Client side runs on a browser! Mestrado em Engenharia Informática Universidade do Minho! 293! Application Servers Mestrado em Engenharia Informática Universidade do Minho! 294!

Servlets! Tecnologia Java!! Geração de HTML on the fly!! Nova vista (página) gerada a cada pedido! - Vista é programada, não desenhada! - Não encorajam separação entre apresentação e negócio/conteúdo! Mestrado em Engenharia Informática Universidade do Minho! 295! Servlets example import java.io.*;! import javax.servlet.http.*;! import javax.servlet.*;! public class HelloServlet extends HttpServlet {!!public void doget (HttpServletRequest req, HttpServletResponse res)!!!!!!!!!!throws ServletException, IOException {!!!PrintWriter out = res.getwriter();!!!out.println("hello, world!");!!!out.close();!!}! }! <web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4!! xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"!!! xsi:schemalocation="http:/java.sun.com/dtd/web-app_2_3.dtd">!!<servlet>!!!!<servlet-name>hello</servlet-name>!!<servlet-class>test.helloservlet</servlet-class>!!</servlet>!!<servlet-mapping>!!!<servlet-name>hello</servlet-name>!!!<url-pattern>/hello</url-pattern>!!</servlet-mapping>! <web-app>! Mestrado em Engenharia Informática Universidade do Minho! 296!

JSP (Java Server Pages)! Um salto de abstracção em relação às Servlets!! Permite incluir código Java nas páginas HTML!! Ficheiros.jsp compilam para Java! - ou directamente para bytecode! - on interpretados on the fly!! Código Java compilado e executado para gerar HTML! Mestrado em Engenharia Informática Universidade do Minho! 297! JSP Expressões! <%= expressão Java %>! Hello! The time is now <%= new java.util.date() %>! Expressão avaliada em run time! Mestrado em Engenharia Informática Universidade do Minho! 298!

JSP Scriptlets! <% bloco de código Java %>! <% System.out.println( "Evaluating date now" ); java.util.date date = new java.util.date(); %> Hello! The time is now <%= date %>! Por si só uma Scriptlet não produz HTML! - mas podemos programá-la para isso! Mestrado em Engenharia Informática Universidade do Minho! 299! JSP Gerar HTML <% out.println("<table border=1>"); for ( int i = 1; i <= 5; i++ ) { out.println("<tr>"); out.println("<td>número</td>"); out.println("<td>"+i+"</td>"); } out.println("</table>"); %>! o mesmo que uma servlet?!! Mestrado em Engenharia Informática Universidade do Minho! 300!

JSP Misturar HTML e Java! Melhor que utilizar out é misturar HTML e Java! <table border=2> <% for ( int i = 1; i <= 5; i++ ) { %> <tr> <td>number</td> <td><%= i %></td> </tr> <%}%> </table> Mestrado em Engenharia Informática Universidade do Minho! 301! JSP: Declarações! <%! declarações Java %>! <%@ page import="java.util.*" %> <%! Date thedate = new Date(); Date getdate() { System.out.println( "Evaluating date now" ); return thedate; } %> Hello! The time is now <%= getdate() %>! Mas agora não funciona!! Mestrado em Engenharia Informática Universidade do Minho! 302!

JSP Algumas variáveis (out)! out: javax.servlet.jsp.jspwriter! - subclasse de java.io.writer! - permite escrever na página! out.print( Evaluating date now ); out.println("evaluating date now ); out.newline(); Mestrado em Engenharia Informática Universidade do Minho! 303! JSP Algumas variáveis (request)! request: javax.servlet.http.httpservletrequest! - informação sobre o pedido enviado pelo browser! request.getremotehost(); request.getparameter( parametername ); request.getparameternames(); request.getparametervalues(); request.getrequesturi(); request.getattribute( attributename ); request.setattribute(); request.removeattribute( attributename ); request.getcookies(); Mestrado em Engenharia Informática Universidade do Minho! 304!

JSP request example OlaMundo.jsp! <FORM METHOD=POST ACTION="dizOla.jsp"> Como se chama? <INPUT TYPE= TEXT NAME= username SIZE= 20 > <BR /> <INPUT TYPE=SUBMIT> </FORM> dizola.jsp! <%@ page contenttype="text/html;charset=utf-8"%> Olá, <%= request.getparameter("username"); %> <br /> <a href="olamundo.jsp">back</a> Mestrado em Engenharia Informática Universidade do Minho! 305! JSP Algumas variáveis (response)! response: javax.servlet.http.httpservletresponse! - manipulação da resposta a enviar ao browser! response.setcontenttype( text/html ); response.addcookie(acookie); response.containsheader( headername ); response.setheader( headername, value ); response.sendredirect( anurl ); Mestrado em Engenharia Informática Universidade do Minho! 306!

JSP response example dizola.jsp! <%@ page contenttype="text/html; charset=utf-8"%> <% String nome = request.getparameter("username"); if (nome==null nome.equals("")) response.sendredirect("erro.html"); %> Olá, <%= nome %> <br /> <a href="olamundo.jsp">back</a> erro.html! <HEAD> <META http-equiv="content-type" content="text/html; charset=utf-8"> </HEAD> Ops! Não se esqueça do nome... <br /> <a href="olamundo.jsp">back</a> Mestrado em Engenharia Informática Universidade do Minho! 307! JSP Algumas variáveis (session)! session: javax.servlet.http.httpsession! - um(a espécie de) Map! - permite guardar informação de página para página! session.isnew(); session.invalidate(); session.setattribute("thename", name); session.getattribute("thename ); session.getattributenames(); session.removeattribute( thename ); Mestrado em Engenharia Informática Universidade do Minho! 308!

JSP session example erro.jsp! <%@ page contenttype="text/html; charset=utf-8"%> <% if (session.getattribute("erro")==null) { %> Ops! Não se esqueça do nome... <% session.setattribute("erro", ""); %> <% } else { %> Tem que indicar um nome na caixa de texto antes de premir o botão submit. <br /> Tente novamente. <% } %> <br /> <a href="olamundo.jsp">back</a> dizola.jsp! <%@ page contenttype="text/html; charset=utf-8"%> <% String nome = request.getparameter ("username"); if (nome==null nome.equals("")) response.sendredirect("erro.jsp"); else session.removeattribute("erro"); %> Olá, <%= nome %> <br> <a href="olamundo.jsp">back</a> Mestrado em Engenharia Informática Universidade do Minho! 309! JSP Algumas variáveis (application)! session: javax.servlet.servletcontext! - um(a espécie de) Map! - permite guardar informação global a todas as sessões! application.log( amessage ); application.setattribute("thename", name); application.getattribute("thename ); application.getattributenames(); application.removeattribute(); Mestrado em Engenharia Informática Universidade do Minho! 310!

JSP application example dizola.jsp! <%@ page contenttype="text/html; charset=utf-8"%> <%@ page import="java.util.*"%> <% String nome = request.getparameter("username"); int c=0; if (nome==null nome.equals("")) { response.sendredirect("erro.jsp"); } else { session.removeattribute("erro"); if (application.getattribute("conta")!= null) c = (Integer)application.getAttribute("conta"); application.setattribute("conta", ++c); } %> Olá, <%= nome %> (é o <%= c %>. a passar por cá) <br /> <a href="olamundo.jsp">back</a> Mestrado em Engenharia Informática Universidade do Minho! 311! JSP resumo de objectos implícitos Objecto Classe/Interface Descrição out jsp.jspwriter out stream para a página request http.httpservletrequest os dados enviados com o pedido response http.httpservletresponse a resposta http session http.httpsession dados da sessão do utilizador application ServletContext dados partilhados por todas as sessões page jsp.httpjsppage a servlet da página (atributos, namespaces) pagecontext jsp.pagecontext o contexto da página config ServletConfig configuração da servlet Mestrado em Engenharia Informática Universidade do Minho! 312!

JSP Directivas! <%@ tipo atributo%>! - tipo: page/include/taglib/!! Directiva page: informação sobre a servlet a gerar! - import/contenttype/pageencoding/session/errorpage/! <%@ page import="java.util.*" errorpage= error.jsp %> Hello! The time is now <%= new Date() %> Mestrado em Engenharia Informática Universidade do Minho! 313! JSP tags (ctd.)! Directiva include:! <%@ include file="relativeurl" %>! Directiva taglib! - tags de bibliotecas externas (taglibs)! <%@ taglib uri="uriforlibrary" prefix="tagprefix" %> Mestrado em Engenharia Informática Universidade do Minho! 314!

JSP acções! tags pré-definidas! - <jsp:tag> </jsp:tag>! - text/include/forward/usebean/getproperty/ setproperty/plugin!! include! <jsp:include page="url" flush= true /> <jsp:include page="url" flush="true" > <jsp:param name= param" value= valor" /> </jsp:include> Mestrado em Engenharia Informática Universidade do Minho! 315! JSP include: directiva vs. acção! acção (<jsp:include />)! - inclusão do resultado (recompilação automática)! - classes mais pequenas! - flexível (parâmetros/qualquer fonte)!! directiva (<%@ include %> )! - inclusão do texto! - páginas partilham variáveis! - um pouco melhor em termos de desempenho! Mestrado em Engenharia Informática Universidade do Minho! 316!

JSP acções (ctd.)! forward! - semelhante a sendredirect! - o browser não é notificado!! include! <jsp:include page="url" flush= true /> <jsp:include page="url" flush="true" > <jsp:param name= param" value= valor" /> </jsp:include> Mestrado em Engenharia Informática Universidade do Minho! 317! JSP: Beans e Forms <FORM METHOD=POST ACTION= ShowName.jsp"> What's your name? <INPUT TYPE=TEXT NAME=username SIZE=20><BR> What's your e-mail address? <INPUT TYPE=TEXT NAME=email SIZE=20><BR> What's your age? <INPUT TYPE=TEXT NAME=age SIZE=4> <P><INPUT TYPE=SUBMIT> </FORM> <jsp:usebean id="user" class="user.userdata" scope="session"/> <jsp:setproperty name="user" property="*"/> You entered<br> Name: <%= user.getusername() %><BR> Email: <%= user.getemail() %><BR> Age: ${user.age} <BR> Mestrado em Engenharia Informática Universidade do Minho! 318!

JSP cliclo de vida http://www.myhomepageindia.com/index.php/2009/04/15/jsp-life-cycle.html Mestrado em Engenharia Informática Universidade do Minho! 319! JSP: Arquitecturas! Model 1 architecture!! Model 2 architecture (MVC-like)! Mestrado em Engenharia Informática Universidade do Minho! 320!

Links Úteis! http://www.jsptutorial.net/!! http://java.sun.com/products/jsp/pdf/card11.pdf! Mestrado em Engenharia Informática Universidade do Minho! 321!