Baixe o app para aproveitar ainda mais
Prévia do material em texto
MATERIAL DO CURSO Introdução ao JavaWeb APOSTILA 01 Tópicos ● Introdução ● Aplicação Web ● Tecnologia Java Servlet ● Custom Tags ● JavaServer Pages ● JavaServer Faces Aplicação Web Aplicação web é a extensão dinâmica da web ou application server, e são divididas em dois tipos: ● Presentation-oriented: Cria páginas interativas contendo HTML, XML, e outros, e conteúdos dinâmicos em resposta a uma requisição. ● Service-oriented: Implementa a parte final de um web service. Aplicações presentation-oriented são frequentemente clientes de uma aplicação service- oriented web. Aplicação web (continuação) Interação entre um cliente e uma aplicação web: Aplicação web (continuação) ● Servlets: são classes java que dinamicamente processam requisições e constroem respostas. ● Paginas JSP: são documentos textos que são executados como servlets e são apropriados para geração de markup language tais com HTML, SVG, WML, e XML. Aplicação web (continuação) Relação entre as tecnologias de aplicação java web ●Ciclo de vida da aplicação Web ● Desenvolvimento do código do componente web. ● Desenvolvimento do descritor de implantação. ● Compilar componentes da aplicação web e classe auxilares. ● Opcionalmente empacotar a aplicação em uma unidade de implantação. ● Implantar a aplicação em um web container. ● Acessar a URL que referência a aplicação web. Módulo Web Empacotando Módulos Web Um módulo web pode ser empacotado num arquivo *.war que é simplesmente um arquivo *.jar renomeado, para ser implantado em um web container. Mas pode se implantar o módulo diretamente. Implantando Módulo Web Pode-se implantar o módulo de duas forma: 1. Copiando o módulo web para o diretório de implantação do web container. 2. Copiando o pacote do módulo web (arquivo *.war) no diretório de implantação do web container. Obs1: Pode-se ainda no caso do Tomcat configurar o descritor server.xml para que identifique o módulo web. Obs2: Um context root identifica a aplicação web num JEE server (ex: http://host:port/context_root/alias). Tecnologia Java Servlet Um servlet é uma classe java que extende as capacidades do servidor que acessam aplicações num modelo de programa requisição e resposta. Todos os servlets podem responder qualquer tipo de requisição, para cada aplicação a tecnologia java servlet define classes servlet especificas para HTTP. vicente Realce Tecnologia Java Servlet (cont.) Os pacotes javax.servlet e javax.sservlet.http provem interfaces e classes para escrever servlets. Todos servlets devem implementar a interface Servlet, a qual define os métodos de ciclo de vida Ciclo de Vida do Servlet O ciclo de vida de um servlet é controlado pelo container no qual o servlet tenha sido implantado. Quando uma requisição é mapeada para o servlet, o container performa os seguintes passos. 1. Se uma instância do servlet não existe, o web container : a. Carrega a classe do servlet. Ciclo de Vida do Servlet (cont.) b. Cria uma instância da classe do servlet. c. Inicializa a instância do servlet chamando o método init. 2. Invoca o método service, passando os objetos request e response . Obs: Se o container necessitar remover o servlet , ele finaliza o servlet chamando o método destroy. vicente Realce vicente Realce Custom Tags numa página JSP É o elemento da linguagem JSP definida por um Usuário. <%@ taglib uri="/tlt" prefix="tlt" %> <html> <body bgcolor="white"> <tlt:iterator var="departmentName" type="java.lang.String" group="${myorg.departmentNa mes}"> </body> </html> Tecnologia JavaServer Pages JavaServer Pages (JSP) permite fácil criação de conteúdos web sendo ambos componentes dinâmicos e estáticos. Página JSP é um documento texto que contém dois tipos de textos: dados estáticos (HTML, SVG, WML, XML, e outros), e elementos JSP, para construir conteúdos dinâmicos (recomenda-se a extensão *.jsp). Ciclo de vida da Pagina JSP São determinadas pela tecnologia Java Servlet. Quando um request é mapeado para uma página JSP, o web container primeiro checa se o servlet da pagina JSP é mais velha do que a pagina JSP. Se for o web container traduz a pagina JSP para uma classe servlet e a compila. Durante o desenvolvimento , uma das vantagens das paginas JSP sobre o servlet é que o processo de construção é feito automáticamente Ciclo de vida da Pagina JSP (Cont.) Tradução e compilação Durante a fase de tradução cada tipo de dado na pagina JSP é tratado diferentemente. Dados estáticos são transformados em código que emitirão dados para o stream de resposta. ● Ciclo de vida da Pagina JSP (Cont.) Os elementos JSP são tratados como a seguir: • Diretivas são usadas para controlar como o web container traduz e executa a pagina JSP. • Elementos scripts são inseridos no servlet da pagina JSP. Ciclo de vida da Pagina JSP (Cont.) ● Expressões Expression Language são passadas comparâmetros para as chamadas para o JSP expressionevaluator. ● jsp:[set|get]Property elemento é convertido numa chamada para método no componente JavaBeans. Ciclo de vida da Pagina JSP (Cont.) • O jsp:plugin elemento é convertido num específico browser markup para ativação num applet. • Custom tags são convertidas em chamadas para o tag handler que implementa a custom tag. • jsp:[include|forward] elemento é convertido numa invocação da API Java Servlet. Scripts nas paginas JSP Elementos scripts são usados tipicamente para criar e acessar objetos, definir métodos, e gerenciar fluxo de controle. Muitas tarefas que usam scripts podem ser eliminadas usando custom tag library. Scripts nas paginas JSP (cont.) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>JSP Expressions</TITLE> <META NAME="author" CONTENT="Marty Hall"> <META NAME="keywords" CONTENT="JSP,expressions,JavaServer,Pages,servlets"> <META NAME="description" CONTENT="A quick example of JSP expressions."> <LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css"> </HEAD> Scripts nas paginas JSP (cont.) <BODY> <H2>JSP Expressions</H2> <UL> <LI>Current time: <%= new java.util.Date() %> <LI>Your hostname: <%= request.getRemoteHost() %> <LI>Your session ID: <%= session.getId() %> <LI>The <CODE>testParam</CODE> form parameter: <%= request.getParameter("testParam") %> </UL> </BODY> </HTML> Sintaxe básica - JSP • Texto HTML – <H1>Blah</H1> – Passado para o cliente. Transformado em código servlet: • out.print("<H1>Blah</H1>"); • Comentários HTML – <!-- Comentário --> – Mesmo que um outro HTML: Passado para o cliente • Comentário JSP – <%-- Comment --%> – Não envia para o cliente vicente Realce Tipos de elementos scripts • Expressões – Formato: <%= expression %> – Avaliada e inserida na saída do servlet: out.print(expression) • Scriptlets – Formato: <% code %> – Incorporado ao método do servlet _jspService • Declarações – Format: <%! code %> – Inserido no corpo de uma classe servlet, fora de qualquer método. Expressões JSP • Formato – <%= Java Expression %> • Result – Expressão avaliada, convertida para String, e colocada na página HTML no local onde ocorre na páginaJSP. – Expressão colocada no método _jspService dentro do out.print • Exemplos – Data: <%= new java.util.Date() %> – Hostname: <%= request.getRemoteHost() %> • Sintaxe XML – <jsp:expression>Expressão Java</jsp:expression> – Versão XML não suportada pelo TomCat 3. Deste JSP 1.2 os servidores não eram obrigados a suportá-la. Correspondência JSP/Servlet • JSP Original <H1>A Random Number</H1> <%= Math.random() %> • Código do servlet public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); HttpSession session = request.getSession(true); JspWriter out = response.getWriter(); out.println("<H1>A Random Number</H1>"); out.println(Math.random()); ... } JavaServer Faces (JSF) • Introdução • Ciclo de vida • Usando JSF em paginas JSP • Usando tags JSF • Usando dados localizados • Conversores e validadores. • Backing Bean JSF – Introdução É um framework do lado servidor baseado em aplicações WEB. JSF – Introdução (cont.) JSF contém: • JavaBeans • Event Listener • Páginas JSP • Classes auxiliares do lado do servidor • Biblioteca de componentes UI • Biblioteca de event handlers, validators, e etc... JSF – Introdução (cont.) • Backing Beans • Arquivo de configuração da aplicação JSF – Ciclo de vida JSF – Usando JSF em páginas JSP • Definir entrada para JSF HTML render kit • Definir entrada para JSF Core tag lib <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> Usando JSF em páginas JSP (cont.) As tags suportam os seguintes atributos: • Id: Único identificador do componente. • Imediate: Se true, indica que qualquer evento, validação, e conversão associado a um componente será aplicada na fase request value ou nas próximas fases. Usando JSF em páginas JSP (cont.) • Style: Especifica um cascading style sheet (css) para a tag. • styleClass: Especifica um css styleshet que contém definições de estilo. • Value: Identifica uma fonte de dados externa e associa seu valor a ele. Usando JSF em páginas JSP (cont.) • Binding: identifica um bean property e associa o componente instanciado por ele. Usando dados localizados • Textos estáticos(labels, textos alternativos,etc) • Mensagens de erro • Dados dinâmicos Para carregar dados localizados temos que: 1. Registrar o resource bundle 2. Carregar o resource bundle <f:loadBundle var=“b1” basename=“m.mens” /> Conversores e Validadores (cont.) Para registrar conversores padrões: • Associar value do componente para o backing bean do mesmo tipo. • Referenciar o converter pela classe ou pelo atributo ID da tag do componente. • Usar tag converterId ou tag binding aninhado no componente. Conversores e Validadores (cont.) • Via backing bean Integer age = 0; public Integer getAge(){ return age;} public void setAge(Integer age) {this.age = age;} • Via atributo converter <h:inputText converter="javax.faces.convert. IntegerConverter" /> Conversores e Validadores (cont.) • BigDecimalConverter, BigIntegerConverter, BooleanConverter, ByteConverter,CharacterConverter DateTimeConverter, DoubleConverter, FloatConverter, IntegerConverter, LongConverter,NumberConverter, ShortConverte Conversores e Validadores (cont.) • DataTimeConverter <h:outputText value="#{cashier.shipDate}"> <f:convertDateTime dateStyle="full" /> </h:outputText> • NumberConverter <h:outputText value="#{cart.total}" > <f:convertNumber type="currency" </h:outputText> Conversores e Validadores (cont.) • Registrando value-change listener <h:inputText value="#{c.name}"> <f:valueChangeListener type="l.NameChanged" /> </h:inputText> • Registrando action listener no componente <h:commandLink action="bookstore"> <f:actionListener type="listeners.LocaleChange" /> </h:commandLink> Conversores e Validadores (cont.) • Validadores padrão DoubleRangeValidator LengthValidator LongRangeValidator • Exemplo: <h:inputText id="q" size="4" value="#{item.quantity}" required=“true”> <f:validateLongRange minimum="1"/> </h:inputText> <h:message for="quantity"/> Backing Bean Suas propriedades devem referenciar: • Um valor do componente • Uma instância do componente • Uma instância do converter • Uma instância do listener • Uma instância do validator Backing Bean (cont.) private Integer userNumber = null; public void setUserNumber(Integer user_number) { userNumber = user_number; } public Integer getUserNumber() { return userNumber; } public String getResponse() { ... } Backing Bean (cont.) Configuração: <managed-bean> <managed-bean- name>UserNumberBean</managed-bean- name> <managed-bean- class>g.UserNumBean</managed-bean-class> <managed-bean-scope>session</managed- bean-scope> </managed- bean> Fórmula p/ usar JSF 1. Criar um bean representando os dados de um formulário 2. Usar as tags do JSF para criar o formulário 3. Especificar na tag h:commandButton um método a ser chamado quando o formulário for enviado (ActionController) Fórmula p/ usar JSF (cont.) 4.Criar o Action Controller - suas responsabilidades são: ●Ler os dados do formulário ●Chamar a lógica de negócio ●Popular os beans que contém os resultados ●Devolver uma condição Fórmula p/ usar JSF (cont.) 5. Declarar o form bean e as regras de navegação no descritor faces-config.xml 6. Criar as páginas JSP para cada condição devolvida Exemplo Formulário de cadastro, onde os dados fornecidos pelo usuário farão com que o JSF tome a de qual pagina será mostrada a seguir. Exemplo (cont.) <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <f:view> … <h:form> Nome: <h:inputText value=“#{bean.nome”/><BR> Exemplo (cont.) Sobrenome: <h:inputText value=“#{bean.sobrenome}”/><BR> ... <h:commandButton value=“Cadastrar Dados" action="#{bean.cadastrar}"/> </h:form>… </f:view> Exemplo (cont.) Criando um action controller package exemplo; public class CadastroBean { private String nome = “”; private String sobrenome = “”; // getters e setters ... Exemplo (continuação) public String cadastrar() { if (nome.trim().equals(“”) || sobrenome.trim().equals(“”) ) { return(“rejeitado"); } else { return(“aceito"); } } } Exemplo (cont.) Declarando o action controller <faces-config> <managed-bean> <managed-bean-name> bean </managed-bean-name> <managed-bean-class> exemplo.CadastroBean </managed-bean-class> Exemplo (cont.) <managed-bean-scope> request </managed-bean-scope> </managed-bean> … </faces-config> Exemplo Especificando regras de navegação <faces-config> <navigation-rule> <from-view-id>/cadastro.jsp</from-view-id> <navigation-case> <from-outcome> aceito </from-outcome> <to-view-id>Exemplo (continuação) /WEB-INF/result/aceito.jsp </to-view-id> </navigation-case> <navigation-case> <from-outcome> rejeitado </from-outcome> <to-view-id> /WEB-INF/results/rejeitado.jsp Exemplo (continuação) </to-view-id> </navigation-case> </navigation-rule> … </faces-config> Exemplo (cont.) <HTML> <HEAD>…</HEAD> <BODY> Cadastro do usuário ${bean.nome} ${bean.sobrenome} aceito. Parabéns. </BODY></HTML> Exemplo (cont.) <HTML> <HEAD>…</HEAD> <BODY> Cadastro rejeitado.<br/> <A HREF=“cadastro.faces">Tente de novo</A>. </BODY></HTML> Produção, Edição, Elaboração e Revisão de Texto: ESCON - Escola de Cursos Online Proibida a reprodução total ou parcial sem permissão expressa da ESCON. (Lei 9.619/98)
Compartilhar