Prévia do material em texto
W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR
Visão geral Java EE + Servlets
Professor Marcelo Pacote – @professorpacote
W W W. D OMI NAND OTI .COM.B R
Acesse nosso site em
WWW.DOMINANDOTI.COM.BR
Curta o Dominando TI no
e receba nossas dicas sobre concursos!
Cursos Turmas em Brasília, na sua cidade, e cursos online
Livros Edições publicadas, lançamentos e promoções
Fórum Interação direta entre estudantes e com os professores
Simulados Questões inéditas, ranking de notas e correções em vídeo
Blog Dicas e macetes de estudo, indicações de bibliografia, etc.
Materiais Versões atualizadas de notas de aula e listas de exercícios
W W W. D OMI NAND OTI .COM.B R
Agenda
Visão Geral Java EE
Servlets
Professor Marcelo Pacote - @professorpacote 3
W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR
Visão Geral Java EE
Professor Marcelo Pacote – @professorpacote
W W W. D OMI NAND OTI .COM.B R
Introdução ao Java EE
Trata-se de um padrão para desenvolvimento de aplicações
corporativas.
“aplicações portáveis, robustas, extensíveis e seguras do
lado do servidor”.
Teve início em 1997 com a especificação de Servlets e EJB
1.0. Em 2010 foi lançada a versão Java EE 6.
Facilidade de desenvolvimento
Aprendizado com as versões anteriores
Melhorias propostas pela comunidade java
Professor Marcelo Pacote - @professorpacote 5
W W W. D OMI NAND OTI .COM.B R
Visão geral da arquitetura e contêiner Java EE
fonte: http://download.oracle.com/javaee/5/tutorial/doc/bnabo.html
Professor Marcelo Pacote - @professorpacote 6
W W W. D OMI NAND OTI .COM.B R
Principais componentes e APIs – J2EE
Fonte: http://java.sun.com/blueprints/guidelines/designing_enterprise_applications/platform_technologies/component/index.html
Professor Marcelo Pacote - @professorpacote 7
W W W. D OMI NAND OTI .COM.B R
Principais componentes e APIs – Java EE 6
fonte: http://www.theserverside.com/news/1373391/Dependency-Injection-in-Java-EE-6-Part-1
Professor Marcelo Pacote - @professorpacote 8
W W W. D OMI NAND OTI .COM.B R
Exercício [1] (TRT-1/2011/FCC)
J2EE é uma plataforma de programação para servidores na
linguagem de programação Java , que integra uma série de
especificações de containers , cada uma com funcionalidades
distintas. Nesse contexto, é correto afirmar que são integrantes do
J2EE:
a) Servlets, JCompany e JSP.
b) JDBC, JSP, EJBs.
c) EJBs, Servlets e JBoss.
d) JDBC, Hibernate e JPA.
e) JSP, JSF e Eclipse.
Professor Marcelo Pacote - @professorpacote 9
W W W. D OMI NAND OTI .COM.B R
Exercício [2] (BNDES/2009/CESGRANRIO) (1/2)
Ao estudar as especificações e frameworks Java EE, um Analista
de Sistemas concluiu que
a) o container WEB do servidor de aplicações é o responsável por
gerenciar o ciclo de vida de servlets e de EJBs utilizados numa
aplicação Java.
b) no container WEB, uma página JSP transforma-se em um
servlet, que é compilado, carregado e inicializado.
c) Enterprise JavaBeans é um modelo de componentes
padronizado, executado no lado do cliente e que facilita a
construção de aplicações distribuídas robustas.
Professor Marcelo Pacote - @professorpacote 10
W W W. D OMI NAND OTI .COM.B R
Exercício [2] (BNDES/2009/CESGRANRIO) (2/2)
d) STRUTS é um framework de persistência que permite o
gerenciamento de dados relacionais, utilizando-se de
mapeamento objeto-relacional.
e) a utilização de Java Persistent API obriga o uso de um
container EJB com Session Beans.
Professor Marcelo Pacote - @professorpacote 11
W W W. D OMI NAND OTI .COM.B R
Exercício [3] (MEC/2009/FGV) (1/2)
A respeito das tecnologias Java/J2EE, assinale a alternativa
correta.
a) JSF é uma especificação feita pela Sun que visa padronizar o
uso de transações distribuídas feitas por aplicativos Java.
b) JTA é uma API da linguagem Java que permite a componentes
baseados em Java/J2EE criar, enviar, receber e ler mensagens.
c) JPA é uma tecnologia utilizada no desenvolvimento de
aplicações para Web, similar às tecnologias Active Server Pages
(ASP) da Microsoft ou PHP.
Professor Marcelo Pacote - @professorpacote 12
W W W. D OMI NAND OTI .COM.B R
Exercício [3] (MEC/2009/FGV) (2/2)
d) JMS é um framework para desenvolver aplicações web de
forma ágil, permite que o desenvolvedor crie UIs através de um
conjunto de componentes UIs pré-definidos.
e) EJB é uma arquitetura de componentes multi-plataforma
para o desenvolvimento de aplicações Java Enterprise Edition
(Java EE), multicamadas, distribuídas, escaláveis e orientadas a
objetos.
Professor Marcelo Pacote - @professorpacote 13
W W W. D OMI NAND OTI .COM.B R
Exercício [4] (CGU/2008/ESAF) (1/2)
J2EE - Java 2 Enterprise Edition é uma plataforma de desenvolvimento de
aplicações multicamadas, baseada em componentes, largamente utilizada
em aplicações corporativas. A respeito das tecnologias envolvidas nessa
plataforma, é correto afirmar que:
a) Servlets são classes de programação Java que geram conteúdo dinâmico
(normalmente para páginas HTML) e interagem com os clientes, utilizando o
modelo challenge/request. Normalmente utilizam o protocolo HTTP, apesar
de não serem restritas a ele.
b) JSF (Java Server Faces) é um framework de interfaces para aplicações
WEB que permite a inclusão de componentes gráficos, tais como campos e
botões, não sendo possível salvá-los no servidor.
Professor Marcelo Pacote - @professorpacote 14
W W W. D OMI NAND OTI .COM.B R
Exercício [4] (CGU/2008/ESAF) (2/2)
c) JSP (Java Server Pages) é uma tecnologia que permite ao
desenvolvedor de páginas para Internet produzir aplicações que acessem
banco de dados, manipulem arquivos no formato texto e capturem
informações a partir de formulários. Dessa forma, conteúdos dinâmicos
podem ser adicionados para páginas estáticas, tais como páginas HTML.
d) Java Beans são objetos que atuam como armazenamento temporário
para as páginas de uma aplicação, sendo, portanto, localizados na
camada de banco de dados.
e) JCA (Java Cryptography Architecture) são objetos que padronizam a
ligação a aplicações legadas, disponibilizando serviços de criptografia.
Professor Marcelo Pacote - @professorpacote 15
W W W. D OMI NAND OTI .COM.B R
Exercício [5] (SADPE/2009/FGV) (1/2)
O J2EE (Java 2 Enterprise Edition) é considerado uma plataforma
Java padrão, direcionada para aplicações multi-camadas, baseadas
em componentes que são executados em um servidor de
aplicações, voltada para redes, internet e intranets e contém
bibliotecas especialmente desenvolvidas para o acesso a
servidores, a sistemas de e-mail e a banco de dados. A plataforma
J2EE contém componentes nativos, cada um com funcionalidades
distintas, sendo dois definidos a seguir:
I. permite o desenvolvimento de páginas com conteúdo dinâmico
que executam no servidor.
Professor Marcelo Pacote - @professorpacote 16
W W W. D OMI NAND OTI .COM.B R
Exercício [5] (SADPE/2009/FGV) (2/2)
II. possibilita o desenvolvimento de aplicações empresariais associadas
diretamente ao negócio do cliente e que executam no servidor.
Esses componentes são denominados, respectivamente:
a) JSP (Java Server Pages) e JTA (Java Transaction API)
b) ASP (Active Server Pages) e EJB (Enterprise Java Beans)
c) PHP (Hipertext Preprocessor) e EJB (Enterprise Java Beans)
d) JSP (Java Server Pages) e EJB (Enterprise Java Beans)
e) ASP (Active Server Pages) e JTA (Java Transaction API)
Professor Marcelo Pacote - @professorpacote 17
W W W. D OMI NAND OTI .COM.B R
Exercício [6] (MEC/2008/FGV/Arquiteto)(1/2)
A plataforma Java é constituída de um grande número de
tecnologias. a respeito das tecnologias Java/J2EE, assinale a
alternativa correta.
a) Applets são uma coleção TAGs padrões que são homologadas
pela SUN, cada uma um propósito bem definido.
b) O JNDI é a API J2EE que fornece uma interface padrão para
localizar usuários, máquinas, objetos, redes e serviços.
Professor Marcelo Pacote - @professorpacote 18
W W W. D OMI NAND OTI .COM.B R
Exercício [6] (MEC/2008/FGV/Arquiteto) (2/2)
c) JSF é uma API da linguagem Java que permite a
componentes baseados em Java/J2EE criar, enviar, receber e
ler mensagens.
d) Swing é um mecanismo simples e consistente para estender
a funcionalidade de um servidor web e para acessar existentes
sistemas de negócio.
e) A JMS fornece um padrão para utilização de POJOs (Plain Old
Java Objects) como entidades que representam dados de uma
tabela de banco de dados, através de um mapeamento objeto-
relacional.
Professor Marcelo Pacote - @professorpacote 19
W W W. D OMI NAND OTI .COM.B R
Exercício [7] (MEC/2008/FGV/Desenv.)
A arquitetura em camadas do modelo MVC (Model-View-Controller)
é amplamente utilizada no desenvolvimento de aplicações web
Java/J2EE. As opções mais frequentemente utilizadas na camada
de visão (view) do modelo MVC, são:
a) JPA, JMS, Web Services e Facelets.
b) JSP, JSTL, Facelets e Applets.
c) JPA, JTA, JMS e Servlets.
d) JSF, JMS, JSTL, JDBC.
e) JSP, EJBs, JTA, JPA.
Professor Marcelo Pacote - @professorpacote 20
W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR
Servlets
Professor Marcelo Pacote – @professorpacote
W W W. D OMI NAND OTI .COM.B R
Plataforma WEB
Baseada em HTTP (RFC 2068):
Protocolo simples
Sem estado (não mantém sessão aberta)
Funcionamento (simplificado):
Professor Marcelo Pacote - @professorpacote 22
W W W. D OMI NAND OTI .COM.B R
Cliente e Servidor HTTP
Servidor HTTP:
Gerencia sistema virtual de arquivos e diretórios
Mapeia pastas do sistema de arquivos local (ex:c:\htdocs) a diretórios
virtuais (ex:/) acessíveis remotamente
Papel do servidor HTTP:
Interpretar requisições HTTP do cliente (métodos GET,POST,...)
Devolver resposta HTTP à saída padrão
Papel do cliente HTTP:
Enviar requisições HTTP (GET,POST,...) a um servidor
Processar respostas HTTP recebidas (interpretar cabeçalhos,...)
Professor Marcelo Pacote - @professorpacote 23
W W W. D OMI NAND OTI .COM.B R
Principais métodos HTTP
GET - pede ao servidor um arquivo informando seu endereço
(relativo à raiz do servidor)
GET pode enviar dados através da URI (tamanho limitado)
<uri>?dados
POST - envia dados ao servidor (como fluxo de bytes)
Professor Marcelo Pacote - @professorpacote 24
W W W. D OMI NAND OTI .COM.B R
API Servlet
Geração de páginas com conteúdo dinâmico
API independente de plataforma
Componentes são escritos em Java
Rodam no servidor, por meio de uma JVM
Professor Marcelo Pacote - @professorpacote 25
W W W. D OMI NAND OTI .COM.B R
Execução de Servlets e JSP
Para executar Servlets e JSP é preciso implantá-los em um
Web Container
Um Web Container pode executar como parte de um servidor
HTTP que repassa as requisições destinadas a Servlets e JSPs
O Tomcat é um exemplo de Web Container, que pode tanto
funcionar conectado a outro servidor como usar seu próprio
servidor Web
O Tomcat ocupará, por padrão, a porta 8080
Professor Marcelo Pacote - @professorpacote 26
W W W. D OMI NAND OTI .COM.B R
Exercício [08] (TJ-ES/2011/CESPE)
( ) Na arquitetura J2EE, o container web Apache Tomcat
permite a execução de páginas JSP e servlets, que são classes
Java que processam dinamicamente as requisições e
constroem respostas na forma de páginas HTML.
Professor Marcelo Pacote - @professorpacote 27
W W W. D OMI NAND OTI .COM.B R
Estrutura do Tomcat
bin Executáveis
conf Arquivo de configuração (server.xml)
logs Logs das aplicações
work Servlets gerados a partir dos JSPs
webapps Contém pastas das aplicações web
Professor Marcelo Pacote - @professorpacote 28
W W W. D OMI NAND OTI .COM.B R
Exercício [09] (TRT/2010/FCC) (1/2)
Sobre o servidor web Tomcat considere:
I. É um software proprietário, desenvolvido no projeto Apache
Jakarta, oficializado pela Sun Microsystems.
II. Não deve ser confundido com o servidor web Apache HTTP
Server, que lida com qualquer tipo de solicitação na web.
III. É um container que fornece um ambiente necessário para
execução de aplicações desenvolvidas com Java Servlet e JSP.
Professor Marcelo Pacote - @professorpacote 29
W W W. D OMI NAND OTI .COM.B R
Exercício [09] (TRT/2010/FCC) (2/2)
Está correto o que consta em
a) I e II, apenas.
b) I e III, apenas.
c) II e III, apenas.
d) III, apenas.
e) I, II e III.
Professor Marcelo Pacote - @professorpacote 30
W W W. D OMI NAND OTI .COM.B R
Exercício [10] (TRE-14/2011/FCC)
Em relação ao Tomcat é INCORRETO afirmar que
a) pode atuar como servidor web/HTTP autônomo.
b) é um servidor onde são instaladas Servlets para tratar as
requisições que o servidor receber.
c) pode funcionar como parte integrante de um servidor de aplicações
como o JBoss AS.
d) pode ser classificado como um servidor de aplicações Java EE
completo.
e) é configurável para efetuar autenticação em um servidor LDAP.
Professor Marcelo Pacote - @professorpacote 31
W W W. D OMI NAND OTI .COM.B R
Exercício [11] (TRT-GO/2008/FCC)
Um conjunto de Servlets, páginas JSP, classes Java,
bibliotecas, ícones, páginas HTML e outros elementos, que
podem ser empacotados juntos pelos desenvolvedores, deve
ser instalado no Tomcat sob o diretório
a) bin.
b) conf.
c) logs.
d) webapps.
e) work.
Professor Marcelo Pacote - @professorpacote 32
W W W. D OMI NAND OTI .COM.B R
Exercício [12] (TRE-ES/2011/Cespe)
( ) O Tomcat, servidor de aplicações Java para Web, é
um software livre de código aberto, que surgiu do conceituado
projeto Apache Jakarta, com o apoio e endosso oficial da Sun
Microsystems como implementação de referência para as
tecnologias Java Servlet e JavaServer Pages (JSP).
Professor Marcelo Pacote - @professorpacote 33
W W W. D OMI NAND OTI .COM.B R
Exercício [13] (MEC/2008/FGV/Analista SO) (1/2)
Devido a popularização da plataforma Java, o termo servidor de aplicação
é frequentemente uma referência a "Servidor de aplicação J2EE". Acerca
de Servidores de Aplicações, analise as seguintes afirmativas:
I. O servidor WebSphere Application Server da IBM e o WebLogic Server da
BEA Systems são dois conhecidos servidores J2EE comerciais.
II. Os módulos web podem ser implementados usando servlets e JSP e a
lógica de negócio por meio de EJBs.
III. A plataforma J2EE disponibiliza padrões para os containers web e EJB.
O Tomcat é um exemplo de container de software livre, onde os módulos
web podem ser publicados.
Professor Marcelo Pacote - @professorpacote 34
W W W. D OMI NAND OTI .COM.B R
Exercício [13] (MEC/2008/FGV/Analista SO) (2/2)
Assinale:
a) se somente a afirmativa I estiver correta.
b) se somente as afirmativas I e II estiverem corretas.
c) se somente as afirmativas I e III estiverem corretas.
d) se somente as afirmativas II e III estiverem corretas.
e) se todas as afirmativas estiverem corretas.
Professor Marcelo Pacote - @professorpacote 35
W W W. D OMI NAND OTI .COM.B R
Exercício [14] (TJ-ES/2011/CESPE)
( ) O Tomcat e o Glassfish, servidores de aplicações Java
(conteinerservlet), são open source e compatíveis com
aplicações escritas na arquitetura JEE 6; no entanto, ao
contrário do Tomcat, o Glassfish não suporta executar
aplicações escritas em JSP (Java server pages).
Professor Marcelo Pacote - @professorpacote 36
W W W. D OMI NAND OTI .COM.B R
Ciclo de Vida de Servlets
Professor Marcelo Pacote - @professorpacote 37
W W W. D OMI NAND OTI .COM.B R
Ciclo de Vida
Professor Marcelo Pacote - @professorpacote 38
W W W. D OMI NAND OTI .COM.B R
Exercício [15] (TRE-SE/2007/FCC)
Quando um servlet é carregado pela primeira vez para a
máquina virtual Java do servidor
a) ocorre um destroy() no processo cliente.
b) o seu método init() é invocado.
c) o método service() é definido.
d) ocorre a execução do método getOutputStream().
e) o seu método stream() é invocado.
Professor Marcelo Pacote - @professorpacote 39
W W W. D OMI NAND OTI .COM.B R
Exercício [16] (TRE-CE/2012/FCC) (1/2)
No contexto do ciclo de vida de um servlet, considere:
I. Quando o servidor recebe uma requisição, ela é repassada para o
container que, por sua vez, carrega a classe na memória e cria uma
instância da classe do servlet.
II. Quando um servlet é carregado pela primeira vez para a máquina
virtual Java do servidor, o método init() é invocado, para preparar recursos
para a execução do serviço ou para estabelecer conexão com outros
serviços.
III. Estando o servlet pronto para atender as requisições dos clientes, o
container cria um objeto de requisição (ServletRequest) e de resposta
(ServletResponse) e depois chama o método service(), passando os
objetos como parâmetros.
Professor Marcelo Pacote - @professorpacote 40
W W W. D OMI NAND OTI .COM.B R
Exercício [16] (TRE-CE/2012/FCC) (2/2)
IV. O método destroy() permite liberar os recursos que foram
utilizados, sendo invocado quando o servidor estiver concluindo
sua atividade.
Está correto o que se afirma em:
a) I, II e III, apenas.
b) I, II e IV, apenas.
c) I, III e IV, apenas.
d) II, III e IV, apenas.
e) I, II, III e IV.
Professor Marcelo Pacote - @professorpacote 41
W W W. D OMI NAND OTI .COM.B R
Servlets HTTP
Professor Marcelo Pacote - @professorpacote 42
W W W. D OMI NAND OTI .COM.B R
Exercício [17] (DPE-SP/2010/FCC)
Servlets são projetadas para fornecer aos desenvolvedores uma
solução JAVA para criar aplicações web. Para criar Servlets é
necessário importar as classes padrão de extensão dos pacotes
a) javax.servlet e javax.servlet.http.
b) javax.servlet e javax.http.servlet.
c) javax.servlet.html e javax.servlet.http.
d) servlet.javax e servlet.javax.http.
e) javax.servlet.smtp e javax.servlet.html.
Professor Marcelo Pacote - @professorpacote 43
W W W. D OMI NAND OTI .COM.B R
Servlets
Professor Marcelo Pacote - @professorpacote 44
W W W. D OMI NAND OTI .COM.B R
Exemplo de Servlet (1/2)
import java. io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletSimples extends HttpServlet {
public void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html");
(...)
Professor Marcelo Pacote - @professorpacote 45
W W W. D OMI NAND OTI .COM.B R
Exemplo de Servlet (2/2)
PrintWriter out = response.getWriter();
String user = request.getParameter("usuario");
out.println("< HTML>< HEAD>< TITLE>");
out.println(" Servlet Simples");
out.println("</ TITLE></ HEAD>< BODY>");
out.println("< H1> Saída da Servlet</ H1>");
out.println("< p> Olá, " + user);
out.println(“<p> Seu endereço IP é “ + request.getRemoteAddr());
out.println("</ BODY></ HTML>");
out.close();
}
}
Professor Marcelo Pacote - @professorpacote 46
W W W. D OMI NAND OTI .COM.B R
Página recebida no Browser
Url da requisição:
http://servidor:8080/ServletSimples?usuario=Package
Professor Marcelo Pacote - @professorpacote 47
W W W. D OMI NAND OTI .COM.B R
Exercício [18] (TRANSPETRO/2012/CESGRANRIO) (1/2)
Suponha que uma aplicação WEB construída com a linguagem Java
contém uma variável de sessão que faz referência a um objeto da
classe Usuario.
Suponha, também, que haja nessa aplicação uma função de nome
doGet, cuja assinatura é apresentada a seguir.
Note que esse método possui um parâmetro denominado request,
cuja classe é HttpServletRequest, componente da API (Application
Programing Interface) de Servlets.
protected void doGet(HttpServletRequest
request, HttpServletResponse esponse)
throws ServletException, IOException
Professor Marcelo Pacote - @professorpacote 48
W W W. D OMI NAND OTI .COM.B R
Exercício [18] (TRANSPETRO/2012/CESGRANRIO) (2/2)
Suponha ainda que existe uma variável de sessão cuja referência é feita pela
cadeia de caracteres "usuario".
Qual instrução usa corretamente o parâmetro request para atribuir o objeto
armazenado na variável de sessão a uma variável de referência do tipo
Usuario e denominada usr, definida no corpo da função doGet?
a) usr = (Object) request.getSession().getParameter("usuario");
b) usr = (Usuario) request.getSession().getAttribute("usuario");
c) usr = (Usuario) request.getSession().getParameter("usuario");
d) usr = request.getSession().getAttribute("usuario");
e) usr = request.getSession().getParameter("usuario");
Professor Marcelo Pacote - @professorpacote 49
W W W. D OMI NAND OTI .COM.B R
Servlets HTTP
Professor Marcelo Pacote - @professorpacote 50
W W W. D OMI NAND OTI .COM.B R
Métodos doGet() e doPost()
Professor Marcelo Pacote - @professorpacote 51
W W W. D OMI NAND OTI .COM.B R
Exercício [19] (PETRO/2012/CESGRANRIO/INFRA) (1/4)
Seja o código a seguir.
public class Servlet1 extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html><body>Meu Servlet</body></html>");
} finally {
out.close();
}
}
Professor Marcelo Pacote - @professorpacote 52
W W W. D OMI NAND OTI .COM.B R
Exercício [19] (PETRO/2012/CESGRANRIO/INFRA) (2/4)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
processRequest(request, response);
}
}
Professor Marcelo Pacote - @professorpacote 53
W W W. D OMI NAND OTI .COM.B R
Exercício [19] (PETRO/2012/CESGRANRIO/INFRA) (3/4)
Sobre esse código, do qual foram omitidas as declarações de
importação e o método getServletInfo por concisão, considere
as afirmativas a seguir.
I - Como o método service() não foi redefinido, o container não
saberá qual método chamar para cada tipo de pedido, gerando
uma exceção.
II - Como o método init() não foi redefinido, o construtor padrão
da classe mãe será chamado.
III - Como o método destroy() não foi redefinido, o container
gerará um erro registrando-o no arquivo de logs ao terminar
este aplicativo.
Professor Marcelo Pacote - @professorpacote 54
W W W. D OMI NAND OTI .COM.B R
Exercício [19] (PETRO/2012/CESGRANRIO/INFRA) (4/4)
É correto APENAS o que se afirma em
a) I
b) II
c) III
d) I e III
e) II e III
Professor Marcelo Pacote- @professorpacote 55
W W W. D OMI NAND OTI .COM.B R
Estrutura de uma aplicação Web
Professor Marcelo Pacote - @professorpacote 56
W W W. D OMI NAND OTI .COM.B R
Exemplo de web.xml (1/2)
Professor Marcelo Pacote - @professorpacote 57
W W W. D OMI NAND OTI .COM.B R
Exemplo de web.xml (2/2)
Professor Marcelo Pacote - @professorpacote 58
W W W. D OMI NAND OTI .COM.B R
Servlet 3.0
@WebServlet(
name = “SvlInicio",
urlPatterns = {"/ServletInicio"},
initParams =
{@WebInitParam(name="webInitParam1“,value=“Oi"),
@WebInitParam(name="webInitParam2", value=“Mundo")})
public class MinhaServlet extends HttpServlet {
Professor Marcelo Pacote - @professorpacote 59
W W W. D OMI NAND OTI .COM.B R
Exercício [20] (TJ-RO/2008/CESGRANRIO)
Aplicações web são empacotadas em um arquivo WAR para serem
disponibilizadas em servidores de aplicações como o Tomcat e o Oracle
Application Server. Sobre a estrutura de um arquivo WAR, é correto afirmar que:
a) o código fonte dos servlets fica em WEB-INF/src.
b) o arquivo web.xml (deployment descriptor) fica na pasta META-INF.
c) os servlets compilados e as classes de domínio ficam em subpastas de WEB-
INF/classes.
d) arquivos JSP, imagens e outros conteúdos diretamente acessíveis aos clientes
web da aplicação ficam em subpastas de WEB-INF/web.
e) arquivos JAR ficam em META-INF/lib.
Professor Marcelo Pacote - @professorpacote 60
W W W. D OMI NAND OTI .COM.B R
Exercício [21] (AGECOM/2010/IC) (1/2)
Um servlet é um objeto java que recebe requisições
respondendo-as conforme cada solicitação, como uma página
HTML gerada dinamicamente. O gráfico abaixo ilustra isso:
Professor Marcelo Pacote - @professorpacote 61
W W W. D OMI NAND OTI .COM.B R
Exercício [21] (AGECOM/2010/IC) (2/2) - adaptada
Com base em servlet, julgue os itens:
( ) Para escrevermos um Servlet, criamos uma classe java que estenda
HttpServlet e sobrescreva ao menos um método chamado doGet ou doPost.
( ) A interface Servlet possibilita o uso apenas do protocolo HTTP.
( ) Diversas requisições podem ser feitas à mesma servlet, em tempos
diferentes, em um único servidor.
( ) A tag <www-pattern> possibilita flexibilidade de disponibilizar uma
servlet através de várias URLs de um caminho.
( ) O tratamento de erros em uma servlet é configurado no arquivo
www.xml.
Professor Marcelo Pacote - @professorpacote 62
W W W. D OMI NAND OTI .COM.B R
Métodos associados ao buffering da resposta
public void setBufferSize (int tamanho)
define, em bytes, o tamanho do buffer de resposta
public boolean isCommitted ()
verifica se o conteúdo da resposta já foi enviado ao cliente
public void reset()
Limpa o conteúdo do buffer
public void flushBuffer()
Força o envio do conteúdo do buffer ao cliente.
Professor Marcelo Pacote - @professorpacote 63
W W W. D OMI NAND OTI .COM.B R
Exercício [22] (MPU/2010/CESPE) (1/3) - adaptada
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MpuServlet2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html> <head> <title>Concurso MPU</title> </head>");
out.println("<body>");
out.println("<h1>Concurso do MPU- Tela 2</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
Professor Marcelo Pacote - @professorpacote 64
W W W. D OMI NAND OTI .COM.B R
Exercício [22] (MPU/2010/CESPE) (2/3) - adaptada
( ) Em um contêiner Servlet, a execução do programa MpuServlet1 a seguir
implica, também, a execução do programa MpuServlet2.
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class MpuServlet1 extends HttpServlet {
protected void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html> <head> <title>Concurso MPU</title> </head> <body>");
out.println("<h1>Concurso do MPU- Tela 1</h1>");
response.flushBuffer();
RequestDispatcher rd = request.getRequestDispatcher("MpuServlet2");
rd.forward(request,response);
out.println("</body> </html>");
out.close();
}
}
Professor Marcelo Pacote - @professorpacote 65
W W W. D OMI NAND OTI .COM.B R
Exercício [22] (MPU/2010/CESPE) (3/3) - adaptada
“out.println("<h1>Concurso do MPU- Tela 1</h1>");
response.flushBuffer();
RequestDispatcher rd = request.getRequestDispatcher("MpuServlet2");”
De acordo com a especificação da Oracle:
“The forward method of the RequestDispatcher interface may be called by
the calling servlet only when no output has been committed to the client. If
output data exists in the response buffer that has not been committed, the
content must be cleared before the target servlet’s service method is
called. If the response has been committed, an IllegalStateException must
be thrown.”
Professor Marcelo Pacote - @professorpacote 66
W W W. D OMI NAND OTI .COM.B R
Exercício [23] (MPU/2010/CESPE) (1/2) - adaptada
import java.io.*; (…)
public class MpuMultServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
int cont;
try {
(vide próximo slide)
} catch (Exception e){}
out.close();
}
}
Professor Marcelo Pacote - @professorpacote 67
W W W. D OMI NAND OTI .COM.B R
Exercício [23] (MPU/2010/CESPE) (2/2) - adaptada
BufferedReader ler = new BufferedReader(new FileReader("c:/temp/contador.txt"));
cont = Integer.parseInt(ler.readLine());
ler.close();
Thread t = new Thread();
t.sleep(6000);
cont++;
BufferedWriter grava = new BufferedWriter( new FileWriter("c:/temp/contador.txt"));
grava.write(Integer.toString(cont));
grava.close();
out.println("número exibido: " + cont);
( )Na tecnologia Servlet versão 2.4 ou superior, a execução do programa
apresentado a seguir, em dois browsers distintos e com diferença de tempo de
acesso inferior a 5 segundos permite fornecer o mesmo número para essas duas
solicitações.
Professor Marcelo Pacote - @professorpacote 68
W W W. D OMI NAND OTI .COM.B R
Gabarito dos Exercícios
[01] b
[02] b
[03] e
[04] c
[05] d
[06] b
[07] b
[08] certo
[09] c
[10] d
[11] d
[12] certo
[13] e
[14] errado
[15] b
[16] e
[17] a
[18] b
[19] b**
[20] c
[21] cecee
[22] e
[23] c*
* Diverge do gabarito oficial
** gabarito a ser comentado
Professor Marcelo Pacote - @professorpacote 69
W W W. D OMI NAND OTI .COM.B R WWW.DOMINANDOTI .COM.BR
Anexo I
Exercícios Complementares
Professor Marcelo Pacote – @professorpacote
W W W. D OMI NAND OTI .COM.B R
O tipo de conteúdo de respostas para o navegador Web,no
contexto de servlets, é definido no método
a) HttpServletResponse.setContentType().
b) HttpServlet.doOptions().
c) HttpServletRequest.getSession().
d) Servlet.service().
e) Servlet.level().
Exercício [01] (ANA/ESAF/2009)
Professor Marcelo Pacote - @professorpacote 71
W W W. D OMI NAND OTI .COM.B R
A tecnologia mais adequada para sistemas deobjetos
distribuídos que compreendem o suporte a diferentes
linguagens de programação e plataformas de execução é
a) CORBA.
b) DCOM.
c) Java RMI.
d) DCE.
e) RPC.
Exercício [02] (STN/ESAF/2008)
Professor Marcelo Pacote - @professorpacote 72
W W W. D OMI NAND OTI .COM.B R
Exercício [03] (PRODAM-AM/2010/FUNCAB) (1/2)
Sejam as seguintes assertivas sobre o Tomcat 5.5:
I. Caso se queira apenas executar aplicações sobre o Tomcat,
não é necessário instalar o JDK, pois o JRE é suficiente.
II. Essa versão implementa um container EJB.
III. Pode ser classificado como um container Servlet/JSP.
Marque a alternativa correta em relação às assertivas acima.
Professor Marcelo Pacote - @professorpacote 73
W W W. D OMI NAND OTI .COM.B R
Exercício [03] (PRODAM-AM/2010/FUNCAB) (2/2)
a) Apenas as assertivas I e II são verdadeiras.
b) Apenas as assertivas I e III são verdadeiras.
c) Apenas as assertivas II e III são verdadeiras.
d) Todas as assertivas são verdadeiras.
e) Todas as assertivas são falsas.
Professor Marcelo Pacote - @professorpacote 74
W W W. D OMI NAND OTI .COM.B R
Exercício [04] (TRT-4/2011/FCC) (1/2)
Considere:
I. Cobre parte da especificação JEE porém não as tecnologias
servlet e JSP e nem as tecnologias Realms e JDBC
DataSources.
II. Tem a capacidade de atuar como servidor web, ou pode
funcionar integrado a um servidor web dedicado como o Apache
ou até mesmo o IIS.
III. É distribuído pela Sun como software proprietário e é
referência para as tecnologias Java Servlet e JavaServer Pages.
Professor Marcelo Pacote - @professorpacote 75
W W W. D OMI NAND OTI .COM.B R
Exercício [04] (TRT-4/2011/FCC) (2/2)
Quanto ao Tomcat, é correto o que consta em
a) I, somente.
b) II, somente.
c) III, somente.
d) I e II, somente.
e) I, II e III.
Professor Marcelo Pacote - @professorpacote 76
W W W. D OMI NAND OTI .COM.B R
Exercício [05] (PREVIC/2011/CESPE)
Acerca de plataforma Java EE e de JSP, julgue o seguinte item.
( ) O container JSP provê uma lista de objetos instanciados,
chamados de objetos implícitos. É através do objeto aplicação
(application object) que são rastreadas as informações de um
cliente específico entre múltiplas requisições.
Professor Marcelo Pacote - @professorpacote 77
W W W. D OMI NAND OTI .COM.B R
Exercício [06] (TCU/2010/CESPE)
Com relação às tecnologias para desenvolvimento web em Java
que podem ser empregadas no sistema descrito no texto, julgue
o item a seguir.
( ) No desenvolvimento de conteúdos para apresentação, o uso
de facelets traz vantagens em relação ao uso de JSP. Uma
delas é a maior modularidade, com o uso de templates e
componentes compostos (composite).
Professor Marcelo Pacote - @professorpacote 78
W W W. D OMI NAND OTI .COM.B R
Exercício [07] (TRE-ES/2011/CESPE)
Julgue os itens que se seguem, referentes a fundamentos de
computação e a linguagens de programação.
( ) Um servlet é uma classe Java utilizada para ampliar a
capacidade de acesso dos servidores a aplicações por meio do
modelo requisição-resposta. Embora os servlets possam responder
a um tipo específico de requisição hospedada em servidores web,
os servlets não respondem a requisições genéricas.
Professor Marcelo Pacote - @professorpacote 79
W W W. D OMI NAND OTI .COM.B R
Exercício [08] (COFEN/2010/CONSULPLAN) (1/2)
Com base em Containers ou API de uma plataforma de programação para
servidores na linguagem de programação Java Enterprise Edition analise:
I. Servlets são utilizados para o desenvolvimento de aplicações Web com
conteúdo dinâmico. Ele contém uma API que abstrai e disponibiliza os
recursos do servidor Web de maneira simplificada para o programador.
II. EJBs (Enterprise Java Beans) são utilizados no desenvolvimento de
componentes de software. Eles permitem que o programador se concentre
nas necessidades do negócio do cliente, enquanto questões de
infraestrutura, segurança, disponibilidade e escalabilidade são
responsabilidade do servidor de aplicações.
Professor Marcelo Pacote - @professorpacote 80
W W W. D OMI NAND OTI .COM.B R
Exercício [08] (COFEN/2010/CONSULPLAN) (2/2)
III. JPA (Java Persistence API) é utilizado para conexão
persistente com base de dados e aplicações com
desenvolvimento em plataformas paralelas.
Está(ão) correta(s) apenas a(s) afirmativa(s):
a) I, II, III
b) I, II
c) I, III
d) II, III
e) I
Professor Marcelo Pacote - @professorpacote 81
W W W. D OMI NAND OTI .COM.B R
Exercício [09] (TRE-MT/2010/CESPE) (1/2)
Quanto às tecnologias Java, assinale a opção correta.
a) Clientes J2EE são necessariamente páginas web dinâmicas
que normalmente não fazem acessos a banco de dados, nem
executam regras de negócio complexas.
b) Em uma aplicação J2EE típica, um EJB é criado, controlado e
destruído pela aplicação cliente.
c) JSP pode ser usado para desenvolvimento de páginas web
dinâmicas. A lógica que gera o conteúdo dessas páginas é
descrita utilizando-se a linguagem Java.
Professor Marcelo Pacote - @professorpacote 82
W W W. D OMI NAND OTI .COM.B R
Exercício [09] (TRE-MT/2010/CESPE) (2/2)
d) Um componente J2EE é uma unidade funcional de software
autocontida, escrito na linguagem de programação Java e
executado exclusivamente em servidores.
e) JPA lida com a forma como dados relacionais são mapeados
para objetos Java e com a forma como esses objetos são
armazenados em um banco de dados relacional.
Professor Marcelo Pacote - @professorpacote 83
W W W. D OMI NAND OTI .COM.B R
Exercício [10] (SENADO/2008/FGV)
Ao desenvolver uma aplicação sob a plataforma Java EE 5, isso
implica que:
a) a aplicação será compatível com as versões anteriores do Java
Enterprise Edition J2EE 1.4.
b) a aplicação deverá usar o JavaServer Faces.
c) a aplicação poderá usar menos arquivos XML do que se fosse
desenvolvida na plataforma J2EE 1.4.
d) a aplicação será compatível com a versão 6.0 do Apache Tomcat.
e) o desenvolvedor poderá utilizar o J2EE 1.4 SDK para testar a
aplicação.
Professor Marcelo Pacote - @professorpacote 84
W W W. D OMI NAND OTI .COM.B R
Exercício [11] (STJ/2008/CESPE)
( ) Na plataforma J2EE, uma aplicação web para a Internet
pode ser composta por servlets, Java Server Pages (JSP) e
páginas HTML. Nessas aplicações, a apresentação dos dados
pode ser separada da lógica do negócio, adotando-se o estilo de
arquitetura model view controller (MVC). Nesse caso, pode-se
usar servlets operando como controladoras que recebem as
solicitações dos usuários e providenciam o processamento das
mesmas. Em uma mesma aplicação, entretanto, só pode existir
um servlet operando como controladora.
Professor Marcelo Pacote - @professorpacote 85
W W W. D OMI NAND OTI .COM.B R
Exercício [12] (DATAPREV/2012/QUADRIX)
O componente que faz parte do Java EE e que permite aos
desenvolvedores gerenciar os dados utilizando mapeamento objeto-
relacional que define a forma como os dados são mapeados das
classes de entidade para tabelas do banco de dados e vice-versa é
conhecido como:
a) JPA
b) JDBC
c) JSF
d) JTA
e) JMS
Professor Marcelo Pacote - @professorpacote 86
W W W. D OMI NAND OTI .COM.B R
Exercício [13] (DATAPREV/2012/QUADRIX)
Um servidor de aplicações Java EE completo possui contêiner:
a) web, apenas.
b) EJB, apenas.
c) web, contêiner JDBC e contêiner Bean.
d) web e contêiner EJB.
e) de persistência, contêiner web e contêiner EJB.
Professor Marcelo Pacote - @professorpacote 87
W W W.D OMI NAND OTI .COM.B R
Exercício [14] (TRT-PR/2010/FCC)
NÃO se trata de uma afirmativa correta sobre o servidor web
Tomcat:
a) Executa as mesmas funções que o servidor web Apache
HTTP Server.
b) Cuida basicamente de processamento de aplicações Java.
c) É escrito em Java.
d) Necessita da plataforma Java SE instalada.
e) Necessita de uma JVM para ser executado.
Professor Marcelo Pacote - @professorpacote 88
W W W. D OMI NAND OTI .COM.B R
Exercício [15] (Serpro/2013/Cespe/Desv./77)
( ) No Tomcat 7, o uso de log hierárquico depende de
implementações específicas.
Professor Marcelo Pacote - @professorpacote 89
W W W. D OMI NAND OTI .COM.B R
Exercício [16] (Serpro/2013/Cespe/Desv./103)
( ) RMI (remote method invocation) é o protocolo de
programação que, utilizando WAP (wireless application
protocol), permite a construção de interface homem-máquina
em dispositivos móveis.
Professor Marcelo Pacote - @professorpacote 90
W W W. D OMI NAND OTI .COM.B R
Gabarito
[01] a
[02] a
[03] b
[04] b
[05] errado
[06] certo
[07] errado
[08] b
[09] e
[10] c
[11] errado
[12] a
[13] d
[14] a
[15] errado
[16] errado
Professor Marcelo Pacote - @professorpacote 91