Programação Distribuída em Java Aula 10 Na aula passada vimos: • TomCat – Instalação e configuração – Criação de contexto • JSP... uma introdução – – – – – – – Expressões Scriptlet’s Diretivas Declarações Tags Sessões Formulários 2 O que você deve ter fixado: • Instalar e configurar um ServletContainer • Compreender as características principais de uma JSP • Diferenciar as estruturas da JSP e perceber o melhor momento de se utilizar de cada uma delas • Ter noção de “o que são beans” 3 Na aula de hoje veremos: • Servlet 4 Servlets • Framework para desenvolvimento de servidores baseados em IP • Tornam os servidores extensíveis • Alternativa para geração de conteúdo dinâmico 5 Servlet x CGI • Fica na memória, não precisa ser reinstanciado • Em CGI cada cliente é representado por um processo • Nível de segurança configurável • Baixo custo 6 Servlet x CGI • São executados em ambiente seguro • Versatilidade e simplicidade • Um passo em direção aos agentes móveis • Servlets podem trocar informações direto com o webserver ou outros servlets 7 ServletContainers • Servlets (assim como JSP) necessitam de um ServletContainer; escolha um em: – http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/ • Não deixe dever o tutorial sobre seu primeiro servlet em: – http://www.mhavila.com.br/topicos/java/tomcat.html 8 javax.HttpServlet • Um servlet é um mini-servidor • Servlet’s surgiram como alternativa ao uso das aplicações CGI • Servlet depende da utilização de um servidor assim como applet necessita de um browser Ex.: AloMundoServ 9 javax.HttpServlet • Todo servlet é uma subclasse de HttpServlet ou GenericServlet • Todo servlet deve sobrescrever pelo menos um dos métodos abaixo: – – – – – – doGet() doPost() doPut() doDelete() init() e destroy() getServletInfo() 10 Servlet template import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ServletTemplate extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Use "request" to read incoming HTTP headers // (e.g. cookies) and HTML form data (e.g. data the user // entered and submitted). String info = request.GetParameter(“info”); // Use "response" to specify the HTTP response status // code and headers (e.g. the content type, cookies). PrintWriter out = response.getWriter(); // Use "out" to send content to browser } } 11 javax.HttpServlet • Servlet’s agem como uma camada intermediária entre um web browser ou outro cliente HTTP e bancos de dados ou outras aplicações instaladas no servidor. • Na verdade apenas doGet() e doPost() são essenciais; recebem dois argumentos do tipo: 12 package javax.servlet.http • Pacote que contém as classes: • HttpServletRequest – Possui métodos para a recuperação da informação que chega ao servidor • HttpServletResponse – Permite obter um objeto PrintWriter que é usado para o envio de informação ao cliente 13 Gerando HTML • A maioria dos servlet’s gera conteúdo HTML, mas isso deve ser especificado • Devemos comunicar ao browser cliente que a resposta vai no formato HTML • Modificamos as sentenças com println() para gerar HTML válido. Ex.: HelloWWW.java 14 Gerando HTML • Note que, diferente das JSP’s, a variável out não é predefinida para os servlets • Recomenda-se o uso dos cabeçalhos específicos para HTML HelloWWW2.java 15 Tratamento de formulários • Gerenciado automaticamente pelo Java • Uso: – Chamar getParameter( param ) da classe HTTPServletRequest – Podemos capturar todos os valores de um formulário usando getParametersName() ShowParameters.java 16 RequestHeaders • São informações de cabeçalho que acompanham uma solicitação do cliente • Se você pensa em implementar HTTP não deixe de ver: – http://www.w3.org/Protocols/ • Servlets podem facilmente obter informações sobre uma solicitação ShowRequestHeaders.java 17 Gerenciamento de sessão • Cookies e URLRewriting são duas boas soluções • Java implementa sessão automaticamente sobre uma das duas políticas acima • Os detalhes são escondidos do programador ShoeSession.java 18 O que você precisa saber: 19 Para saber mais 20