Java Java Web Software Servlets JSP MVC Programação Web Aula 12 - Java Web Software Bruno Müller Junior Departamento de Informática UFPR 25 de Maio de 2015 Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC 1 Java 2 Java Web Software 3 Servlets Modelo de Trabalho Funcionamento API Java Código Java Código html Exemplos de Servlets Criação de Servlets no Netbeans Projeto Greet Servlet Containers Projeto Survey Projeto voteCounter 4 JSP Modelo Exemplos EL JSTL Bruno Müller Junior JavaBeans Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Java Sun - 1995 Linguagem OO compilada em bytecode. Máquina virtual executa bytecode. Multiplataforma (só precisa da MVJ na máquina hospeira). Projeto de uma MV que opera em navegadores (plugin). Segurança: MV não permite acesso a infos locais. Usada inicialmente só no lado cliente, porém também foi estendida para operar no servidor. Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Java Web Software Esta aula aborda as tecnologias existentes no lado do servidor usando a linguagem Java. A ferramenta utilizada para exemplificar é Netbeans. Exemplos de ferramentas: Tomcat, JBoss, etc; Foco principal: Servlets; Ferramenta utilizada para exemplos: Netbeans; Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Servlets Servlet: objeto java executado no servidor Web que responde requisições HTML; Utilizado para gerar respostas dinâmicas às requisições dos navegadores. normalmente instanciado quando uma requisição HTML é enviada à URL. Servlet Container ou Servlet Engine: é o dispositivo de software no servidor que gerencia Servlets. Ao receber uma requisição, o servidor Web verifica se é para um servlet. Se for, despacha a req. para o Servlet Engine. Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Modelo de Trabalho Modelo de Trabalho Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Funcionamento Funcionamento 1 Web server recebe uma requisição HTTP, e a examina. 2 Se a requisição envolve um servlet, o Web Server passa a requisição ao Servlet Container. 3 O Container analisa qual Servlet deve ser executado, o instancia (se necessário) e o chama. 4 A chamada passa dois parâmetros: o objeto da request e o objeto da response. 5 O objeto request pode conter dados de formulário (form) e identidade do cliente (por exemplo, cookies). 6 O Servlet pode conter código para gerar dinamicamente o documento HTML de response. Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC API Java API Java Há uma pacote java chamado Servlet (em javax.servlet) que contém interfaces para implementar servlets. Exemplos: ServletRequest e ServletResponse. Para criar um novo Servlet é necessário estender HttpServlet, que contém vários métodos, como por exemplo doGet, doPost, doPut, doDelete. public classe Exemplo extends HttpServlet { protected void doGet (HttpServletRequest request, HttpServletRequest response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter (); out.println("<html><head><title>"); out.println("Exemplo Simples"); out.println("</title></head><body></body></html>"); } } Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Código Java Código Java Código Java: Figura : Programming The WWW (Robert Sebesta) Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Código html Código html Código html: Figura : Programming The WWW (Robert Sebesta) Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Exemplos de Servlets Exemplos de Servlets A parte mais “complexa” da criação de um Servlet está na implantação dele. Por exemplo, no Tomcat, bastava criar um subdiretório abaixo do diretório principal e colocar lá o código compilado do Servlet. Com a criação de mais Servlet Containers (GlassFish, BEA entre outros), foram criado padrões para a implantação e da organização dos diretórios onde: A aplicação é empacotada em arquivos WAR (Web application ARchive), que tem estrutura semelhante a arquivos .zip contém descritor da implantação chamado web.xml na raiz. Por ser complexo, raramente codifica-se um Servlet sem o uso de um ambiente próprio como por exemplo Eclipse e Netbeans. Por esta razão, a criação do Servlet exemplo dos próximos slides utiliza o ambiente Netbeans. Departamento de Informática Bruno Müller Junior Programação Web Aula 12 - Java Web Software UFPR Java Java Web Software Servlets JSP MVC Criação de Servlets no Netbeans Criação de Servlets no Netbeans Arquivo -> Novo Projeto Java Web -> Aplicação Web (<Próximo>) Dar nome (<Próximo>) Sem Framework <Finalizar> Novo -> Servlet <Finalizar> Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Projeto Greet Projeto Greet Cria página com um botão que ativa o servlet. É necessário criar dois arquivos: 1 2 documento html para a primeira interação (index.html); documento java que é o servlet (Greet.java). Observações: 1 Veja o projeto greetn: a forma de indicar o servlet a ser executado quando o button for ativado é a seguinte: <form action="Greet" method="get"> Observe como a resposta é criada (response object) 3 Observe os métodos doGet e doPost; 2 Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Servlet Containers Servlet Containers São os programas responsáveis por responder a requisição do cliente (docto html ou servlet). Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Projeto Survey Projeto Survey Usa um servlet para responder um formulário com radio input. Aspectos a serem observados: 1 Como é a associação entre a propriedade name com o código java: <input type="radio" name="gender" value="female" /> gender = request.getParameter("gender"); Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Projeto voteCounter Projeto voteCounter Mostra como utilizar cookies: Criar um cookie: newCookie=new Cookie("iVoted","true"); Especificar duração: newCookie.setMaxAge(50); Enviar cookie: response.addCookie(newCookie); Verificar cookies da requisição: cookies = request.getCookies(); Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC JSP Servlets misturam código HTML com código java println, por exemplo. Grande parte das organizações utiliza duas equipes: projetistas web (markup) e programadores web (lógica do negócio). Ambos tem de trabalhar nos mesmos arquivos, gerando problemas previsíveis. O objetivo de JSP (Java Servlet Pages) é permitir a criação de projetos com uma distinção clara entre markup e lógica do negócio. Em alguns casos, permite que os projetistas web contruam toda a aplicação. Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Modelo Modelo JSP inclui uma camada acima de servlet. Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Exemplos Exemplos Como JSP inclui várias possibilidades de implementação, serão apresentados vários versões para uma mesma aplicação: converter uma temperatura de Celsius para Fahrenheit: Usando Expression Language (EL); Usando JSTL Control Action Statements; Posteriormente a mesma aplicação será implementada usando JavaBeans. Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC EL EL As expressões a serem executadas são colocadas no documento de resposta (.jsp) usando o formato ${expressão EL} Projeto tempConvertEl: index.html tempConverterEL2.jsp Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC JSTL JSTL Inclui tags para executar condicionais. Úteis por exemplo para analisar se o usuário digitou um número. Projeto tempConvertEl1: index.html tem um condicional que verifica se a mensagem contém uma requisição com dados (requisição contém POST). Atenção à inclusão e uso das tags condicionais (JSP) <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ... <c:if test = "${pageContext.request.method != ’POST’}"> </c:if> Projeto MoreJSP: Usa radio, e JSTL <c:choose> (switch). Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC JavaBeans JavaBeans A arquitetura JavaBeans apresenta uma série de regras para construir classes especiais java projetados para serem usados como componentes reusáveis de software. Estes componentes são chamados beans. Há uma série de convenções rígidas. Exemplo: é obrigatória a existência de getter e setter começando com get e set. Assim, se a bean contém um inteiro chamado celsius, então os nomes são getCelsius e setCelsius Em JSP, são normalmente usados como recipientes para dados da aplicação Web. Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Acesso Acesso Dados armazenados em um bean é chamado propriedade; Nomes de propriedades são como variáveis em java, mas começam sempre com minúscula e são privadas (com métodos públicos para acesso); o elemento JSP abaixo inclui a classe java contendo um bean: <jsp:useBean id="mybean" class="org.mypackage.convert.Converter" /> Existem duas ações padrão para acessar um bean: <jsp:setProperty name="mybean" param="celsius" property="celsius" /> (equivalente a) <jsp:setProperty name="mybean" property="celsius" /> <jsp:getProperty name="mybean" property="celsius" /> Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC Exemplo Exemplo projeto tempConvertB arquivo index.jsp arquivo response.jsp arquivo Converter.java (em Pacotes de código-fonte), atenção ao org.mypackage.convert. Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR Java Java Web Software Servlets JSP MVC MVC Existem basicamente três formas de criar MVC usando JSP: JSP = {Controlador, View}, Beans = {Model}; Servlet = {aceitar requisições, lógica }, Beans = {manipulação de dados}, JSP = {View}; 3 Servlet = {Controlador}, JSP = {View}, EJB1 = {Model} 1 2 1 Enterprise Java Beans, componentes java distribuídos Bruno Müller Junior Programação Web Aula 12 - Java Web Software Departamento de Informática UFPR