Programação Web Aula 12 - Java Web Software

Propaganda
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
Download