desenvolvimento de sistemas web - luiz...
TRANSCRIPT
DESENVOLVIMENTO DE SISTEMAS WEB
Luiz Leão – [email protected] http://www.luizleao.com
UNIDADE I – Criação de Aplicativos Web
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
Conteúdo Programático
• Revisão da Sintaxe Java • Visão Geral do Ambiente Servidor
– Tomcat – GlassFish
• Uso do NetBeans para criação de aplicativos Web • Tecnologia Servlet • Tecnologia JSP
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Java Standard Edition: Ambiente mais utilizado. Seu uso é voltado para PCs e servidores.
• Java Entreprise Edition: Plataforma voltada para redes, Internet, Intranet e afins. Contém uma série de especificações, cada uma com funcionalidades diferentes: – JDBC (Java Database Connectivity): Para acesso a BD; – JSP (Java Server Pages): Para programação front end (páginas web) e – Servlets: pPara o desenvolvimento de aplicações web (programação
back end).
Introdução
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Java Micro Edition: Ambiente de desenvolvimento para dispositivos móveis ou portáteis.
Introdução
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Tipos de Variáveis • Arrays • Estrutura Condicional • Estrutura de Repetição • Palavras Reservadas
Revisão da Sintaxe Java
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
Tipos de Dados
Tipo Valores Literaisint inteiros com sinal 32 bits 0, -7, 12345
long inteiros com sinal 64 bits -12345Lfloat vírgula-flutuante simples 1.234f, -10.5e6f
double vírgula-flutuante dupla -0.25, 1.234dboolean valores lógicos true, false
char carateres Unicode 'A', '\u2764'
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
Hello Worldclass Hello { public static void main(String args[]) { System.out.println("Hello world!"); } }
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
Variáveisint i;
int i=10;
Float total, preco;
byte mascara;
double valormedio; Valormedio = 1.5;
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
Arraysint[] aLista; // declaração aLista = new int[10]; // inicialização (zeros)
// inicialização com constantes int[] aLista = {100, 200, 300, 400, 500, 600};
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
Arrays• Os índices começam em zero (como em C/C++) • arrays em Java têm associado um atributo length (Tamanho)
int[] aLista = { 2, 3, 5, 7, 11, 13 }; for(int i=0; i< aLista.length; i++) { System.out.println(aLista[i]); }
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
Arrays• Não há arrays multi-dimensionais • Alternativa: arrays de arrays • Permite dimensões internas não homogéneas
String[][] names={{"Mr.","Mrs.","Ms."},{"Smith","Jones"}};
System.out.println(names[0][0] + names[1][0]); //Mr. Smith System.out.println(names[0][2] + names[1][1]); //Ms. Jones
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
Cadeia de Caracteres• Cadeias são objetos da classe String.
String s1 = "Hello"; // declarar e inicializar String s2 = new String("Hello"); // alternativa
• Podemos obter o comprimento e concatenar
System.out.println(s1.length()); // output: 5 // NB: length() é um método
System.out.println(s1 + " world!"); // output: "Hello world!"
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
Cadeia de Caracteres• não são arrays de carateres • mas podemos aceder aos carateres individuais usando
charAt()
String frase = "Leão Azul. Melhor do Norte"; int tam = frase.length(); for (int i = 0; i < tam; i++) { System.out.println(frase.charAt(i)); }
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
Cadeia de Caracteres• Não podemos modificar o comprimento ou os carateres duma
cadeia (é um objeto imutável)
• Mas podemos construir novas cadeias por concatenação
• Alternativa: classe StringBuilder (mais tarde)
String s1 = "Hello " + "world"; String s2 = "He" + "llo world"; // s1 == s2 dá false
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Tomcat
• GlassFish
Visão Geral do Ambiente Servidor
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• É servidor web Java, mais especificamente, um container de servlets.
• O Tomcat implementa, dentre outras de menor relevância, as tecnologias Java Servlet e JavaServer Pages (JSP)
• Não é um container EJB.
Tomcat
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• EJB (Enterprise JavaBeans): É uma especificação que faz parte da Java EE. É um componente executado em um servidor de aplicação, que simplifica o desenvolvimento de componentes distribuídos, transacionais e seguros.
• Os conteiners EJB implementam especificações JEE tais como: JDBC, RMI, JavaMail, JMS, JMX etc.
• Exemplo de servidores: – Jboss AS – Glassfish
Conteiners EJB
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• É um servidor de aplicação open source liderado pela Sun Microsystems para a plataforma Java EE.
• É um conteiner EJB
• Possui versão proprietária é chamada Sun GlassFish Enterprise Server.
• Além de suportar todas as especificações da API Java EE, ele também define como coordená-las.
Glassfish
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Suporta também servlets, portlets, JSF e diversas tecnologias de web service.
• Permite que desenvolvedores criem aplicações corporativas portáveis, escaláveis e fáceis de integrar com código legado.
Glassfish
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• São a primeira forma que veremos de criar páginas dinâmicas com Java.
• Usaremos a própria linguagem Java para isso, criando uma classe que terá capacidade de gerar conteúdo HTML.
• O nome "servlet" vem da ideia de um pequeno servidor (servidorzinho, em inglês) cujo objetivo é receber chamadas HTTP, processá-las e devolver uma resposta ao cliente.
Servlets
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• O comportamento das servlets foi definido na classe HttpServlet do pacote javax.servlet.
Servlets
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
public class HelloWorld extends HttpServlet { protected void service (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter();
// escreve o texto out.println("<html>"); out.println("<body>"); out.println(“Hello World!!”); out.println("</body>"); out.println("</html>"); } }
Servlets
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Para escrevermos uma servlet, criamos uma classe Java que estenda HttpServlet e sobrescreva um método chamado service.
• Esse método será o responsável por atender requisições e gerar as respostas adequadas.
Servlets
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... }
Servlets
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Repare que o método recebe dois objetos que representam, respectivamente, a requisição feita pelo usuário e a resposta que será exibida no final.
• Veremos que podemos usar esses objetos para obter informações sobre a requisição e para construir a resposta final para o usuário.
Servlets
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Acabamos de definir uma Servlet, mas como vamos acessá-la pelo navegador?
• Qual o endereço podemos acessar para fazermos com que ela execute?
• O container não tem como saber essas informações, a não ser que digamos isso para ele.
• Para isso, vamos fazer um mapeamento de uma URL específica para uma servlet através do arquivo web.xml, que fica dentro do WEB-INF.
Mapeando uma Servlet no web.xml
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Uma vez que chamar a servlet pelo pacote e nome da classe acabaria criando URLs estranhas e complexas, é comum mapear, por exemplo, uma servlet como no exemplo, chamada OiMundo para o nome primeiraServlet:
• Começamos com a definição da servlet em si, dentro da tag <servlet>:
Mapeando uma Servlet no web.xml
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
<servlet>
<servlet-name>primeiraServlet</servlet-name>
<servlet-class>br.com.caelum.servlet.OiMundo</servlet-class> </servlet>
Mapeando uma Servlet no web.xml
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Em seguida, mapeie nossa servlet para a URL /oi.
• Perceba que isso acontece dentro da tag <servlet-mapping> (mapeamento de servlets) e que você tem que indicar que está falando daquela servlet que definimos logo acima: passamos o mesmo servlet-name para o mapeamento.
Mapeando uma Servlet no web.xml
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
<servlet-mapping>
<servlet-name>primeiraServlet</servlet-name>
<url-pattern>/oi</url-pattern> </servlet-mapping>
Mapeando uma Servlet no web.xml
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Portanto, são necessários dois passos para mapear uma servlet para uma URL:
• Definir o nome e classe da servlet; • Usando o nome da servlet, definir a URL. • A servlet pode ser acessada através da seguinte
URL:
• http://localhost:8080/aulajsp/oi
Mapeando uma Servlet no web.xml
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• JavaServer Pages
• Tecnologia baseada em Servlet utilizada na camada WEB
• Apresenta conteúdos estáticos e dinâmicos
• Baseada em texto
• Contêm em sua maior parte template texto HTML misturado com tags especificando conteúdo dinâmico
TECNOLOGIA JSP
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• São documentos textuais muito parecidas com HTML • Código mais fácil de manter • Familiares para desenvolvedores com conhecimentos em
HTML • Dedicação dos desenvolvedores para a criação de templates
HTML • Possui suporte built-in para o uso de componentes de software
reutilizáveis (JavaBeans) • Parte da solução Java para o desenvolvimento de aplicações
WEB • Não necessita de uma compilação explícita pelo
desenvolvedor
TECNOLOGIA JSP
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
● JSP podem ser vistas como documentos HTML ou XML com scripts JSP encaixados
● Elementos de script JSP permitem inserir código Java na Servlet gerada
● A maneira mais simples de tornar a JSP dinâmica é pelo encaixe direto de elementos script no modelo de dados
● Elementos script JSP: – Scriptlets – Expressões – Declarações
Sintaxe e Semântica JSP
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
● Inserir diretamente código Java:
<% Java code; %>
– Qualquer código Java que poderia ser utilizado dentro de um método
● Útil para encaixar códigos simples
● Nenhum limite específico a respeito da complexidade de códigos
Scriptlets
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
● Fornece um meio de inserir valores Java diretamente na saída:
<%= Java Expression %>
● Note que o ponto-e-vírgula ( ; ) não aparece no final do código dentro da tag
● Desde que elas são avaliadas em tempo de execução, as expressões têm acesso completo a informação sobre a requisição
● É mais simples que escrever: out.println(Java Expression);
Expressões
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
● Objetos pré-definidos, chamados objetos implícitos, se tornam disponíveis para os desenvolvedores JSP de modo a simplificar as expressões
● Exemplos: – request: objeto da classe HttpServletRequest; – response: objeto da classe HttpServletResponse; – session: objeto da classe HttpSession associada ao request (se houver) – out: objeto da classe PrintWriter, utilizada para enviar a saída para o cliente. Exemplo: Hostname: <%= request.getRemoteHost() %>
Expressões
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
● Permite a definição de métodos ou variáveis
<%! Java Code %>
● Utilizada para encaixar código como as scriptlets ● São inseridas no corpo principal da classe servlet, fora do método _jspService() processando o request
– Vantagem: O código em uma declaração pode ser usado para declarar novos métodos e variáveis globais de classe
– Desvantagem: O código em declarações não é protegido
Declarações
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
● Lembretes ao utilizar a tag de declaração:
– Iniciado por <%! e finalizado por %>
– As instruções devem seguir a sintaxe Java padrão
– Declarações não geram saída
● Desde que as declarações não geram nenhuma saída, elas normalmente são utilizadas em conjunto com expressões JSP ou scriptlets
Declarações
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• O Exemplo é dividido em duas partes. A primeira cria a classe Pessoa e na segunda o objeto p é criado e sua manipulação se inicia passando nome e idade que posteriormente são impressos.
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• O que é um bean?
• Um componente JavaBeans, ou simplesmente bean, é uma classe Java que, quando chamada em um JSP ou Servlet, segue certas regras .
• Os beans são acionados em JSP por elementos chamados action element, executandos quando um JSP é requisitado.
• Veja a sintaxe:
<jsp:useBean id = “id_do_Bean” class = “pacote.classe_do_bean” scope = “tipo_de_escopo”>
• Temos que usar um identificador, o nome da classe e um escopo de vida do bean.
• Para definir o escopo, há quatro extensões disponíveis: page, request, session e application.
JavaBeans: Programação baseada em componentes
UNIDADE I – Criação de Aplicativos Web
DESENVOLVIMENTO DE SISTEMAS WEB
• Um bean de escopo de página (page) só está disponível dentro da página de JSP e é destruído quando a página termina de gerar sua resposta à requisição.
• Um bean de escopo de requisição (request) é destruído quando a resposta é enviada.
• Um bean de sessão (session) é destruído quando a sessão associada a ele é destruída.
• Um bean de escopo de aplicação (application) é destruído quando a aplicação web é destruída.
JavaBeans: Programação baseada em componentes