DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web Luiz Leão – [email protected] http://www.luizleao.com 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 Introdução UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Introdução • 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). UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Introdução • Java Micro Edition: Ambiente de desenvolvimento para dispositivos móveis ou portáteis. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Revisão da Sintaxe Java • • • • • Tipos de Variáveis Arrays Estrutura Condicional Estrutura de Repetição Palavras Reservadas UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Tipos de Dados Tipo Valores Literais int inteiros com sinal 32 bits 0, -7, 12345 long inteiros com sinal 64 bits -12345L float vírgula-flutuante simples 1.234f, -10.5e6f double vírgula-flutuante dupla -0.25, 1.234d boolean valores lógicos true, false char carateres Unicode 'A', '\u2764' UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Hello World class Hello { public static void main(String args[]) { System.out.println("Hello world!"); } } UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Variáveis int 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 Arrays int[] 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 Palavras Reservadas UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Palavras Não Reservadas UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Operadores Aritméticos UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Operadores Relacionais UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Operadores Lógicos UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Estruturas Condicionais UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Estruturas de Repetição UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Exemplo if UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Exemplo switch UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Exemplo for UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Exemplo While UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Exemplo do while UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Visão Geral do Ambiente Servidor • Tomcat • GlassFish UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Tomcat • É 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. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Conteiners EJB • 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 UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Glassfish • É 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. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Glassfish • 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. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Servlets • 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. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Servlets • O comportamento das servlets foi definido na classe HttpServlet do pacote javax.servlet. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Servlets 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>"); } } UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Servlets • 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. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Servlets protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... } UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Servlets • 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. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Mapeando uma Servlet no web.xml • 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. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Mapeando uma Servlet no web.xml • 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>: UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Mapeando uma Servlet no web.xml <servlet> <servlet-name>primeiraServlet</servlet-name> <servlet-class>br.com.caelum.servlet.OiMundo</servlet-class> </servlet> UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Mapeando uma Servlet no web.xml • Em seguida, mapeie nossa servlet para a URL /oi. • Perceba que isso acontece dentro da tag <servletmapping> (mapeamento de servlets) e que você tem que indicar que está falando daquela servlet que definimos logo acima: passamos o mesmo servletname para o mapeamento. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Mapeando uma Servlet no web.xml <servlet-mapping> <servlet-name>primeiraServlet</servlet-name> <url-pattern>/oi</url-pattern> </servlet-mapping> UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Mapeando uma Servlet no web.xml • 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 UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB TECNOLOGIA JSP • 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 UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB TECNOLOGIA JSP • 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 UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Sintaxe e Semântica JSP ● 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 UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Scriptlets ● 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 UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Expressões ● 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); UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Expressões ● 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() %> UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Declarações ● 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 UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Declarações ● 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 UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB 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 UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Condicional if UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB While UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Looping For UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB JavaBeans: Programação baseada em componentes • 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. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB JavaBeans: Programação baseada em componentes • 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. UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB UNIDADE I – Criação de Aplicativos Web DESENVOLVIMENTO DE SISTEMAS WEB Resumindo • • • • • Sintaxe Java Servidores Servlet JSP JavaBeans UNIDADE I – Criação de Aplicativos Web