JSP e Servlets ISEP – LP2 Filipe Costa – 1020525 2003/2004 Introdução JSP (JavaServer Pages) permite tal como PHP, ASP e ColdFusion o desenvolvimento de páginas dinâmicas que poderão ser automaticamente actualizáveis segundo uma base de dados, ficheiros de texto ou outros meios tal como outras páginas de Internet; JSP apareceu como uma extensão da tecnologia Servlets; Packages reservados ao JSP: Package javax.servlet.jsp Package javax.servlet.jsp.tagext Funcionamento 1. 2. 4. 6. É enviado um pedido do servidor para o cliente do hello.jsp; O servidor processa o pedido. Como tem código JSP, esse é separado do código html, e transformado em ficheiro Servlet.class; Servlet.class (código JSP) é compilado e executado no próprio servidor; No final o resultado é o html original com o resultado da execução do código JSP que estava no meio do código html. JSP vs. Applets Código JSP é compilado e executado no servidor, o cliente que visualiza a página.jsp não necessita de um compilador Java ou JSP ao contrário das Applets; As Applets são assim executadas no cliente, sendo a resposta ao utilizador instantânea quando esse está carregado; Applets permitem desenvolvimento gráfico com awt e swing, ao contrário JSP não o permite pelo motivo acima e por ser executado como html. JSP vs. Servlets O JSP pode conter elementos html ou não, o Servlet terá de ter apenas código Java/JSP; Usar Servlets é conveniente para servir de apoio a um ficheiro JSP (principal) e não para ser ficheiro principal pois para cada linha html que se pretenda introduzir terá de se fazer System.out.println, tornando o código pesado e ilegivel; Normalmente todos os servidores que suportam JSP suportam também Servlets. Exemplo de JSP <html> <head> <title>JSP page </title> </head> <body> <%@ page language="java" %> <% System.out.println("Hello World"); %> </body> </html> JavaBeans Para a reutilização de código eficaz foram criados os JavaBeans que mais não são do que classes de Java com determinadas regras: Deve existir um construtor público e sem parâmetros; Nenhum atributo pode ser público; Os atributos são acedidos através de métodos públicos setXxx, getXxx e isXxx. Exemplo de JavaBean class Hora { private int hora, minuto, segundos; public Hora() { hora = minuto = 0; } public int getSegundos() { return hora*3600+60*minuto; } public void setSegundos(int s) { segundo=s; } } Sessões 1 Possibilitam que se salve em cookies informações relativamente ao utilizador; Permite que o site disponibilize conteúdos personalizáveis, que armazene objectos e variáveis como passwords e usernames; Os cookies são codificados o que possibilita um uso com alguma segurança da informação; O site JSP tenta abrir sessão, se existir o cookie correspondente ele retoma as informações lá armazenadas disponibilizando-as para o servidor. Sessões O uso de Sessões é efectuado por defeito no JSP (ao contrário do PHP onde é necessário definir) e como tal é simples armazenar qualquer informação em sessão: <% Foo foo = new Foo(); session.putValue("foo",foo); %> 2 Retornar o valor da sessão: <% Foo myFoo = (Foo) session.getValue("foo"); %> Conclusão 1 Vantagens: Possibilita a fácil reutilização de código com a utilização de classes, JavaBeans etc. possuindo todas as vantagens de uma linguagem orientada por objectos; Sendo Java uma linguagem corrida por cima de uma Máquina Virtual, torna-se mais fácil a adaptação da linguagem aos mais diversos sistemas; Fácil implementação de sessões; Fácil de usar para quem já tem noções de Java. Conclusão 2 Desvantagens: Pouca flexibilidade a nível formal; A implementação deste tipo de tecnologia é pouco divulgada não existindo tantos servidores JSP como ASP ou PHP; Apesar da linguagem orientada por objectos ser bastante útil em aplicações, em Server Pages perde um pouco o sentido pois normalmente são aplicações muito simples que não necessitam necessariamente o uso deste tipo de linguagens, favorecendo o uso de PHP que é mais facilitado em aspectos como declarações de variáveis e o seu uso muito mais flexível. Fim