0% acharam este documento útil (0 voto)
315 visualizações126 páginas

Aula14-Java EE - COMENTADO

Este documento apresenta conceitos sobre a plataforma Java EE, incluindo sua arquitetura de aplicações multicamadas e suas principais APIs.

Enviado por

Fernando Manolo
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
315 visualizações126 páginas

Aula14-Java EE - COMENTADO

Este documento apresenta conceitos sobre a plataforma Java EE, incluindo sua arquitetura de aplicações multicamadas e suas principais APIs.

Enviado por

Fernando Manolo
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 126

Aula 14

Engenharia de Software e Desenv. de Sistemas p/ TST (Analista Judiciário - Análise de


Sistemas)

Professor: Diego Carvalho


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 1 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

AULA 14

SUMÁRIO PÁGINA
Apresentação 01
- Java EE 03
- JSP 20
- Servlet 52
- EJB 78
Lista de Exercícios Comentados 97
Gabarito 124

Engenharia e Desenvolvimento de Software: Princípios de engenharia de software. Ciclo de vida de sistemas.


Processos de software. Modelos de desenvolvimento de sistemas. Métodos ágeis (eXtreme Programming -
XP, Scrum, Kanban). Engenharia de requisitos. Testes de software. Modelagem orientada a objetos.
Conceitos sobre orientação a objetos (classes, atributos, objetos, métodos, herança, interfaces e outras
hierarquias). Análise e projeto orientados a objetos (UML). Conceitos de linguagens orientadas a objetos.
(Parte I), Modelagem orientada a objetos. Conceitos sobre orientação a objetos (classes, atributos, objetos,
métodos, herança, interfaces e outras hierarquias). Análise e projeto orientados a objetos (UML). Conceitos
de linguagens orientadas a objetos. (Parte II). Conceitos de Web Services SOAP e REST. Padrões de Projeto
(design patterns). Estruturas de dados e de controle de fluxo. Funções e procedimentos. Conceitos de
linguagens estruturadas. Análise e projeto estruturados de sistemas. Modelagem funcional. HTML5, CSS3.
Aspectos gerais das linguagens PHP, XML, JUnit. Conceitos sobre desenvolvimento Web e cliente/servidor.
Web Standards, W3C; Javascript (ECMAScript 6), bootstrap, jquery. Controle de versões com Git e SVN.
Java SE. Java EE.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 2 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

JAVA ENTEPRISE EDITION (JAVA EE)

Bem, galera... nosso foco aqui é Java EE1! Empresas de tecnologia da informação
sofrem atualmente com a altíssima competitividade. Não é raro ver uma gigante,
que todo mundo achava que seria eterna, desmoronando-se por conta de uma
nova tecnologia que surgiu ou paradigma que apareceu! Ou alguém aí ainda usa
IRC, ICQ, MSN para se comunicar?

É verdade, professor! As empresas de Tecnologia da Informação têm vida curta! Não


são só elas! Hoje em dia, empresas de quaisquer áreas precisam de aplicações para
satisfazer as suas necessidades de negócio, que estão se tornando cada vez mais
complexas. E tudo isso se torna mais complicado com a globalização – as empresas
estão cada vez mais espalhadas por cidades, países e continentes.

E, ainda assim, realizam seus negócios 24/7 por meio da internet, com um bocado
de data centers e sistemas internacionalizados para lidar com diferentes línguas,
moedas, fusos-horários, etc. E elas param de trabalhar em algum momento? Não!
Estão sempre tentando diminuir seus custos, tempo de resposta de seus serviços,
armazenar mais dados de maneira confiável e segura, entre outros.

E tudo isso de forma transparente para o cliente, que simplesmente acessa uma
interface gráfica amigável achando que isso tudo é muito simples (mal sabem o que
ocorre por trás). Pessoal, tudo tem que funcionar para o usuário não reclamar ou
trocar de prestadora de serviço – e, claro, sem perder dinheiro, i.e., tem que haver
prevenção de falhas, alta disponibilidade, redundância, escalabilidade e segurança.

Além disso, as corporações têm de enfrentar constantes mudanças de requisitos,


tecnologias, políticas, leis, etc. Em 2014, grande parte do que citamos é oferecido
pelo Java Enterprise Edition (Java EE). Mas, então, o que é de fato o Java EE? É um
conjunto de especificações destinadas ao desenvolvimento de aplicações
distribuídas, robustas, potentes, escaláveis, multicamadas e de alta disponibilidade.

Rapaziada, vamos ver agora algumas novidades trazidas pela Plataforma Java EE 6:
conceito de profiles ou perfis; Java API for RESTful Web Services (JAX-RS); Managed
Beans; Contexts and Dependency Injection (CDI); Dependency Injection for Java;

1
Esse nome já mudou repetidas vezes! Inicialmente, chamava-se J2EE; depois foi modificado para JEE; e
atualmente é conhecido como Java EE.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 3 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Bean Validation; entre outras tecnologias concernentes a Enterprise JavaBeans,


JavaServer Faces e Servlets.

Como ele oferece tudo isso, nós veremos por meio do estudo de um assunto muito
importante: Arquitetura Java EE – apresentada na imagem abaixo:

O Client System é a Camada do Cliente; Web Container é a Camada Web; o EJB


Container é a Camada de Negócio; e o Database é a Camada de Dados2. No
entanto, há quem condense a Camada Web e a Camada de Negócio em uma
camada chamada Servidor Java EE, representada pelo retângulo maior à direita –
veremos com detalhes mais à frente!

2
É também conhecida como Camada EIS (Enterprise Information System), que disponibiliza informações relevantes ao negócio e,
diferente do que apresenta a imagem, não trata apenas do banco de dados, mas também de sistemas legados, processamento de
transações de mainframe, sistemas externos, entre outros.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 4 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Vamos falar um pouco agora sobre o Modelo de Aplicações Java EE! Galera, Java
EE é projetado para suportar aplicações que implementam serviços corporativos
para clientes, empregados, fornecedores, parceiros e outros que demandem ou
contribuem com a organização! Essas aplicações são inerentemente complexas,
acessando dados de diversas fontes e distribuindo as aplicações entre os clientes.

O Modelo de Aplicações Java EE define uma arquitetura para implementação de


serviços como aplicações multicamadas que fornecem escalabilidade, acessibilidade
e gerenciabilidade necessários para aplicações corporativas. Dessa forma, a lógica
de apresentação e a lógica de negócio são implementadas pelo desenvolvedor e os
outros serviços são fornecidos pela plataforma Java EE!

Conforme mostra a imagem acima, existem duas aplicações multicamadas Java EE


divididas em níveis descritos como se segue:

 Camada do Cliente: componentes rodam na Máquina Cliente;


 Camada Web: componentes rodam no Servidor Java EE;
 Camada de Negócio: componentes rodam no Servidor Java EE;
 Camada EIS: software roda no Servidor EIS.

Galera, a imagem abaixo apresenta um pouco da evolução do Java EE e a tabela


que segue apresenta as APIs do Java EE:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 5 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

JAVA EE 6 (10/12/2009) JAVA EE 7 (12/06/2013)

- Java API for WebSocket


- Java API for JSON Processing
Java Servlet 3.0 Java Servlet 3.1
JavaServer Faces (JSF) 2.0 JavaServer Faces (JSF) 2.2
Expression Language (EL) 2.2 Expression Language (EL) 3.0
JavaServer Pages (JSP) 2.2 JavaServer Pages (JSP) 2.3
JavaServer Pages Standard Tag Library (JSTL) 1.2 JavaServer Pages Standard Tag Library (JSTL) 1.2
- Batch Applications for the Java Platform
- Concurrency Utilities for Java EE 1.0
Contexts and Dependency Injection for Java 1.0 Contexts and Dependency Injection for Java 1.1
Dependency Injection for Java 1.0 Dependency Injection for Java 1.0
Bean Validation 1.0 Bean Validation 1.1
Enterprise JavaBeans (EJB) 3.1 Enterprise JavaBeans (EJB) 3.2
Interceptors 1.1 Interceptors 1.2
Java EE Connector Architecture 1.6 Java EE Connector Architecture 1.7
Java Persistence API (JPA) 2.0 Java Persistence API (JPA) 2.1
Common Annotations for the Java Platform 1.1 Common Annotations for the Java Platform 1.2
Java Message Service API (JMS) 1.1 Java Message Service API (JMS) 2.0
Java Transaction API (JTA) 1.1 Java Transaction API (JTA) 1.2
JavaMail API 1.4 JavaMail API 1.5
Java API for RESTful Web Services (JAX-RS) 1.1 Java API for RESTful Web Services (JAX-RS) 2.0
- Implementing Enterprise Web Services 1.3
Java API for XML-Based Web Services (JAX-WS) 2.2 Java API for XML-Based Web Services (JAX-WS) 2.2
Web Services Metadata for the Java Platform 2.1 Web Services Metadata for the Java Platform
Java API for XML-based RPC (JAX-RPC) 1.1 Java API for XML-based RPC (JAX-RPC) (Opcional) 1.1
Java APIs for XML Messaging (JAXM) 1.3 Java APIs for XML Messaging 1.3
Java API for XML Registries (JAXR) 1.0 Java API for XML Registries (JAXR) 1.0
Java Authentication Service Provider Interface for Java Authentication Service Provider Interface for Containers
Containers (JASPIC) 1.0 (JASPIC) 1.1
Java Authorization Service Provider Contract for Containers Java Authorization Service Provider Contract for Containers
(JACC) 1.4 (JACC) 1.5
Java EE Application Deployment 1.2 Java EE Application Deployment (Opcional) 1.2
J2EE Management 1.1 J2EE Management 1.1
- Debugging Support for Other Languages 1.0
Java Architecture for XML Binding (JAXB) 2.2 Java Architecture for XML Binding (JAXB) 2.2
- Java API for XML Processing (JAXP) 1.3
- Java Database Connectivity 4.0
- Java Management Extensions (JMX) 2.0
- JavaBeans Activation Framework (JAF) 1.1
- Streaming API for XML (StAX) 1.0
Managed Beans 1.0 -
Web Services 1.3 -
Debuggin Support for Other Languages 1.0 -

A versão Java EE 6 traz o conceito de profile (ou perfil)! O que é isso, professor? Um
perfil busca definir um subconjunto das tecnologias dentre aquelas da plataforma

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 6 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Java EE. Como assim? Bem, pensem comigo: cada aplicação tem sua particularidade,
portanto não é necessário implementar obrigatoriamente todas as tecnologias da
plataforma, i.e., eu posso criar perfis – cada um com sua configuração!

Imaginem que vamos fazer um sisteminha pequeno! Eu preciso implementar tudo


que está na plataforma? Não, posso criar um perfil que implementa somente um
subconjunto de funcionalidades! Existem dois perfis importantes: Web Profile e Full
Profile! O primeiro perfil é um subconjunto do segundo e ajuda desenvolvedores a
criarem aplicações mais leves que podem rodar em um Servlet Container.

Plataforma Java EE WEB FULL


Java Servlet  
Java Server Faces (JSF)  
Java Server Pages (JSP)  
Expression Language (EL)  
Standard Tag Library for JavaServer Pages (JSTL)  
Debugging Support for Other Languages  
Contexts and Dependency Injection for the Java EE Platform  
Dependency Injection for Java  
Enterprise JavaBeans (EJB)  
Java Persistence API  
Common Annotations for the Java Platform  
Java Transaction API  
Bean Validation  
Java EE Connector Architecture 
Java API for RESTful Web Services (JAX-RS) 

Observem que a tabela abaixo apresenta o EJB 3.1 como parte do Web Profile. Na
verdade, no Web Profile, trata-se do EJB 3.1 Lite, que é mais leve. Como assim,
professor? Assim como os perfis, ele possui um subconjunto dos features do EJB 3.1
Full. Por que? Porque é uma API utilizada especificamente para aplicações web.
Vejam a diferença de acordo com a tabela abaixo.

Percebam que o EJB 3.1 Lite deixa de fora funcionalidades que são pouco utilizadas
em aplicações web. De forma similar o Web Profile não oferece suporte a JAX-WS,
JAX-RPC, JAXR, SAAJ, JAX-RS, JAXB, JMS, JAAS, JASPIC, JACC, JCA, JavaMail,
Management Specification e Deployment Specification – além disso, ele não oferece
suporte a Arquivos EAR (apenas Arquivos WAR).

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 7 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Para finalizar, vamos entender algumas coisinhas! O processo de implantar (para


alguns, instalar) uma aplicação em um Servidor Java EE é chamado Deploy ou
Deployment. Sabe-se que componentes são agrupados em módulos, compactados
em .ZIP e, na Implantação, mapeia-se cada componente do Java EE para seu
contêiner correspondente. Existem três tipos básicos de módulo:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 8 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

MÓDULO DESCRIÇÃO

EAR Também chamado Enteprise Application Archives, contém a aplicação completa, com todos os
seus módulos e componentes. É composta por vários arquivos .war e .jar.
WAR Também chamado Web Application Archives, contém a Aplicação Web (JSP, HTML, Servlets,
Arquivos de Configuração, Imagens, etc) – é o que forma uma página em si.
JAR Também chamado Java Application Archives, contém a Aplicação EJB, Aplicação Cliente e
Applets3, além de arquivos de configuração dos aplicativos.
RAR Também chamado Resource Adapter, contém interfaces, classes, bibliotecas, etc.

3
A bem da verdade, todos os módulos são Arquivos JAR com a extensão modificada. Por que essa mudança?
Para que o servidor possa diferenciar o que está sendo implantado.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 9 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(CESPE – – INMETRO – Analista de Sistemas) São exemplos de tipos de


componentes de software reusáveis desenvolvidos na plataforma JEE: JSP (Java
Server Page); biblioteca de tags; Servlet; EJB. O grau de reúso provido por esses
componentes, EJBs e JSPs, é usualmente superior a bibliotecas de TAG.

Comentários:

Galera, vamos responder isso intuitivamente! Como uma Página JSP ou um


Componente EJB poderia oferecer maior reusabilidade que uma biblioteca? Ora, essa
é uma das principais características de uma biblioteca: sua reusabilidade! Logo, isso
não faz sentido! Bibliotecas de Tags são mais reusáveis.

Gabarito: E

(CESPE – – SERPRO – Analista de Sistemas) A tecnologia Enterprise


JavaBeans (EJB) é uma arquitetura de componentes do tipo cliente que atua na
plataforma J2EE.

Comentários:

JAVA EE 6 (10/12/2009) JAVA EE 7 (12/06/2013)

Enterprise JavaBeans (EJB) 3.1 Enterprise JavaBeans (EJB) 3.2

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 10 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Conforme vimos em aula, Enterprise Java Bean (EJB) não é uma arquitetura, é um
componente da Arquitetura J2EE. Além disso, é do tipo Servidor (veja a imagem
acima).

Gabarito: E

(CESPE - 2010 – TCU – Auditor Federal de Controle Externo) A web profile da


plataforma JEE apresenta, em relação ao perfil application server definido em
edições anteriores da plataforma Java, as seguintes vantagens: fornece suporte
para POJOs (Plain Old Java Objects) e Annotations; possui modelo de
empacotamento de componentes mais simples; a configuração dos seus
descritores XML (extensible markup language) é mais fácil; é aderente ao padrão
SOA.

Comentários:

Imaginem que vamos fazer um sisteminha pequeno! Eu preciso implementar tudo


que está na plataforma? Não, posso criar um perfil que implementa somente um
subconjunto de funcionalidades! Existem dois perfis importantes: Web Profile e Full
Profile! O primeiro perfil é um subconjunto do segundo e ajuda desenvolvedores a
criarem aplicações mais leves que podem rodar em um Servlet Container.

Conforme vimos em aula, primeiro, não existe Application Server Profile – existe
apenas Web Profile e Full Profile. Segundo, o conceito de Perfis foi introduzido
apenas no Java EE 6 – eu calculo que ele esteja considerando Full Profile como
Application Server Profile. Terceiro, POJOs e Annotations são tecnologias do Java
EE 5. Quarto, pode-se dizer que é aderente ao SOA por conta do JAX-RS, no
entanto o Full Profile também é (inclusive é aderente ao JAX-RS também). Logo, a
questão está errada desde o início.

Gabarito: E

(CESPE - 2010 – TRE/MT – Analista Judiciário – Tecnologia da Informação – 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.

Comentários:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 11 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Conforme vimos em aula, os clientes Java EE não são necessariamente Páginas Web
Dinâmicas (Browser). A imagem acima mostra que eles podem ser também uma
Aplicação Cliente.

Gabarito: E

(CESPE - 2010 – TRE/MT – Analista Judiciário – Tecnologia da Informação – D)


Um componente J2EE é uma unidade funcional de software autocontida, escrito
na linguagem de programação Java e executado exclusivamente em servidores.

Comentários:

Conforme vimos em aula, um componente Java EE é uma unidade autocontida,


porque pode ser reusada sem a necessidade de incluir ou depender de outros
componentes. Ademais, eles são escritos na linguagem de programação Java, no
entanto não são necessariamente executados exclusivamente em servidores, podem
ser executados no cliente (conforme imagem acima).

Gabarito: E

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 12 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(CESPE - 2011 – PREVIC – Analista de Sistemas) Em uma aplicação multicamadas


na plataforma Java EE, servlets, JavaServer Faces e JSP consistem em tecnologias
utilizadas na camada web.

Comentários:

Conforme vimos em aula, a Camada Web é composta por JSP, JSF e Servlets.

Gabarito: C

(ESAF – 2012 – CGU – Analista de Finanças e Controle) Os níveis da plataforma


J2EE são:

a) Patrocinador. Web. Negócios. Sistemas de Computação Corporativos.


b) Cliente. Web. Negócios. Sistemas de Informação Corporativos.
c) Cliente. Interno. Externo. Negócios.
d) Fornecedor. Web. Político. Sistemas de Informação Camada.
e) Cliente. Stakeholders. Negócios. Background corporativo.

Comentários:

 Camada do Cliente: componentes rodam na Máquina Cliente;


 Camada Web: componentes rodam no Servidor Java EE;
 Camada de Negócio: componentes rodam no Servidor Java EE;
 Camada EIS: software roda no Servidor EIS.

Conforme vimos em aula, os níveis são: Cliente, Web, Negócios e Sistemas de


Informação Corporativos (EIS).

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 13 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Gabarito: B

(CESGRANRIO – 2008 – BNDES – Analista de Sistemas) Uma aplicação


empresarial contendo componentes EJB e módulos web deverá ser publicada
em um servidor de aplicações compatível com J2EE. No contexto do
empacotamento dessa aplicação para publicação (deploy), é correto afirmar que:

a) não há como juntar componentes EJB e módulos web em uma mesma


aplicação, pois deverão ser publicados separadamente.

b) um arquivo EAR poderá conter arquivos WAR e JAR representativos dos


módulos web e EJB.

c) o tamanho do pacote, em bytes, sempre fica maior que o código original, em


virtude do algoritmo empregado no empacotamento da aplicação em um
arquivo EAR.

d) módulos web não devem ser empacotados, pois isso inviabiliza seu acesso
pela Internet.

e) arquivos JAR servem apenas para empacotar componentes EJB.

Comentários:

Para finalizar, vamos entender algumas coisinhas! O processo de implantar (para


alguns, instalar) uma aplicação em um Servidor Java EE é chamado Deployment.
Sabe-se que componentes são agrupados em módulos, compactados em .ZIP e, na
Implantação, mapeia-se cada componente da Arquitetura Java EE para seu contêiner
correspondente. Existem três tipos básicos de módulo:

Conforme vimos em aula, a primeira opção está errada, porque pode-se junta
ambos em um Arquivo EAR; a segunda opção está correta e justifica a primeira; a
terceira opção está errada, porque são arquivos compactados em .ZIP; a quarta
opção está errada, porque simplesmente não faz nenhum sentido; e a última opção
está errada porque arquivo JAR pode empacotar componentes EJB, Cliente e Applet.

Gabarito: B

(FCC – 2011 – TRT/19 – Analista de Sistemas) A especificação Java EE define os


seguintes componentes:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 14 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

I. Clientes da aplicação (Application Clients) e applets.


II. Java Servlet, JavaServer Faces e JavaServer Pages.
III. Enterprise Javabeans (EJB).

Os componentes I, II e III rodam, respectivamente, em:

a) cliente, cliente, servidor.


b) servidor, cliente, servidor.
c) cliente, servidor, servidor.
d) servidor, cliente, cliente.
e) cliente, servidor, cliente.

Comentários:

Conforme vimos em aula, tanto aplicações clientes como applets rodam no cliente;
Servlets, JSF e JSP rodam no Servidor, assim como o EJBs.

Gabarito: C

10. (FCC - 2011 - TRT - 1ª REGIÃO (RJ) - Analista Judiciário - Tecnologia da


Informação) J2EE é uma plataforma de programação para servidores na
linguagem de programação Java, que integra uma série de especificações e
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.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 15 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

e) JSP, JSF e Eclipse.

Comentários:

JAVA EE 6 (10/12/2009) JAVA EE 7 (12/06/2013)

JavaServer Pages (JSP) 2.2 JavaServer Pages (JSP) 2.3


Enterprise JavaBeans (EJB) 3.1 Enterprise JavaBeans (EJB) 3.2
- Java Database Connectivity 4.0

Conforme vimos em aula, trata-se do JDBC, JSP e EJB!

Gabarito: B

11. (FCC - 2010 - TRT - 8ª Região (PA e AP) - Analista Judiciário - Tecnologia da
Informação) O Contêiner J2EE que fornece aos desenvolvedores o ambiente
para rodar Java Server Pages (JSPs) e servlets é:

a) Applet (Applet container).


b) Enterprise Java Beans (EJB).
c) Interface (Interface container).
d) do cliente do aplicativo (Application client container).
e) Web (Web container).

Comentários:

Conforme vimos em aula, o Contêiner Web é o responsável por rodar JSP/Servlet!

Gabarito: E

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 16 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

12. (FCC - 2010 - TCE- - Agente da Fiscalização Financeira - Informática - Suporte


de Web) São apenas tipos de componentes executados em servidores Web:

a) Beans, Servlets e J2EE.


b) JVM, Servlets e JSP.
c) Beans, Servlets e JSP.
d) Beans, Swing e JSP.
e) Beans, Swing e JVM.

Comentários:

Conforme vimos em aula, JSP e Servlets são fáceis! E os beans? Pois é,


excepcionalmente eles podem ser executados em Servidores Web (Contêiner Web).

Gabarito: C

13. (FCC - 2014 – TRT/2 – Analista de Sistemas) Um contêiner Java EE pode oferecer
serviços como gestão de memória, ciclo de vida e estado de objetos, conexões,
transações, serviços de nomes, segurança, tolerância a falhas, integração,
clustering, alta disponibilidade, confiabilidade e web services. Um servidor Java
EE completo disponibiliza dois tipos principais de contêiner, que são:

a) Contêiner MVC e Contêiner EJB.


b) Applet Container e Web Container.
c) Contêiner Web e Contêiner EJB.
d) Servlet Container e JSP Container.
e) Application Client Container e Web Container.

Comentários:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 17 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Conforme vimos em aula, disponibiliza o Contêiner Web e Contêiner EJB!

Gabarito: C

14. (FCC – 2012 – TJ/PE – Analista de Sistemas) Sobre a plataforma Java EE 6, é


correto afirmar:

a) Simplifica a implantação sem a necessidade de descritores de implantação,


com exceção do descritor de implantação exigido pela especificação servlet, o
arquivo web.xml.

b) Necessita do descritor de implantação ejb-jar.xml e entradas relacionadas aos


web services no arquivo web.xml.

c) Faz uso de anotações (annotations). Anotações são modificadores Java,


semelhantes aos públicos e privados, que devem ser especificados nos arquivos
de configuração XML.

d) A especificação EJB 3, que é um subconjunto da especificação Java EE, define


anotações apenas para o tipo bean.

e) Anotações são marcados com um caracter # (cerquilha).

Comentários:

(a) Correto. Pessoal, a plataforma Java EE realmente simplifica a implantação


removendo a necessidade de descritores de implantação, mas há uma exceção: o
arquivo web.xml;

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 18 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(b) Descritores de implantação, como o ejb-jar.xml e entradas relacionadas aos Web


services no web.xml, já estão obsoletos – não se usa mais!

(c) A Plataforma Java EE utiliza Anotações, que são modificadores Java, semelhantes
aos públicos e privados. No entanto, eles são especificados no código!

(d) Ele define anotações para o tipo Bean, tipo de Interface, referências de recurso,
atributos de transação, segurança, etc;

(e) Essa ele entregou! Anotações são marcados com @.

Gabarito: A

ACERTEI ERREI

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 19 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

JAVA SERVER PAGES (JSP)

Primeiro, o que é JSP? É uma tecnologia da plataforma Java Enterprise Edition (Java
EE) que permite utilizar ou o código Java dentro das páginas web ou tags que
realizam sua lógica. Por ser tecnologia Java, seus objetos são definidos segundo
define a linguagem, i.e., podendo utilizar todos os seus recursos, tais como
modificadores de acesso, tratamento de exceções, entre outros.

Galera, trata-se de uma tecnologia para geração de documentos baseados em texto


e executados do lado do servidor (assim como Servlets). Professor, como assim
texto? Esse texto pode ser um conjunto de dados estáticos (Ex: HTML e XML); ou
pode ser um conjunto de elementos JSP e tags customizadas, que definem como a
página construirá conteúdo dinâmico.

Professor, como funciona esse tal de JSP? Cara, Páginas JSP utilizam tags XML e
Scriplets escritos em Java para encapsular a lógica que gera o conteúdo para a
página web. Ele separa a lógica do conteúdo da sua apresentação. Páginas JSP são
compiladas em Servlets e podem chamar beans a fim de executar o processamento
no servidor. Espera, professor! Como assim são compiladas em Servlets?

Cara, Páginas JSP tipicamente se tornam uma Servlet! Vocês podem me perguntar:
Por que, então, precisamos da tecnologia JSP se já temos a tecnologia de Servlets?
Teoricamente, é possível escrever apenas Servlets para desenvolver suas aplicações
web. No entanto, a Tecnologia JSP foi desenhada para simplificar o processo de
criação de páginas ao separar a apresentação do conteúdo.

Em muitas aplicações, a resposta enviada ao cliente é a combinação dos dados de


apresentação (template) com dados de conteúdo gerados dinamicamente. Nesse
caso, é muito mais fácil trabalhar com Páginas JSP do que fazer tudo com Servlets.
Galera, basta pensar nos conceitos de coesão, acoplamento e modularidade. Vocês
entenderam a sacada do negócio?

É mais simples, organizado e legível utilizar uma tecnologia para fazer a


apresentação e outra para gerar dados dinamicamente – assim, mantém-se a
divisão de responsabilidades, a independência entre os módulos, entre outros
benefícios. Você ainda não entendeu? Acho que sei como fazer isso entrar na sua
cabeça: vamos ver agora uma Servlet e uma Página JSP!

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 20 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14
Arquivo: HelloWorld.jsp (No MVC, em geral, é utilizada como Visão)

<html>
<head>
<title>
<%="Hello World"%>
</title>
</head>
<body>
<%out.println("Hello Again!");%>
</body>
</html>

Arquivo: HelloWorld.java (No MVC, em geral, utilizada como Controladora)

//Definições e importações.

public void doGet(HttpServletRequest request, HttpServletResponse response) throws


IOException, ServletException {
Writer out = response.getWriter();

out.println("<html><head><title>");
out.println("HelloWorld");
out.println("</title></head><body>");
out.println("HelloAgain");
out.println("</body></html>");
out.flush();
out.close();
}

Galera, esses códigos são semelhantes: o primeiro é uma Página JSP (Arquivo .jsp
ou .jspx4) e o segundo é uma Servlet (Arquivo .java). Vocês percebem que no primeiro
código nós temos código HTML com algumas coisas de Java? Já no segundo nós
temos Java com algumas coisas de HTML? Vejam como é chato escrever o segundo
código – é preciso colocar as tags HTML dentro das funções de escrita do Java.

Já imaginaram que insuportável fazer isso para arquivos muito grandes? Pois é, JSP
torna possível desenvolver aplicações web sem ter que escrever todo código
estático dentro de servlets. Professor, eu posso ter uma Página JSP sem nenhum
código Java? Claro, não é obrigatório ter código Java, no entanto é ele quem permite
suportar comportamento dinâmico em páginas web.

Outra desvantagem importante é que o programador, além de ser bom em Java,


tem que ser bom em Web Design! No entanto, quando ele está escrevendo o
código Java, ele não possui as ferramentas de Web Design! O JSP permite ess

4
.jspx refere-se ao Arquivo JSP que obedecer às regras de formação do XML.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 21 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

separação, i.e., os Desenvolvedores Java criam as Servlets ógica de Negócio) e os


Web Designers criam as Páginas JSP (Lógica de Apresentação)!5 Bacana?

Um grande benefício dessa tecnologia é a integração com HTML! Galera, HTML é


uma linguagem amplamente conhecida e estudada! Portanto, facilita a criação de
páginas web dinâmicas tendo que, posteriormente, apenas embutir o código Java!
O que isso significa? Significa que, quando o código Java for executado, parte da
página será gerada em tempo de execução (dinamismo).

Além da perfeita integração com HTML, Páginas JSP também oferecem modos de
manipulação de arquivos texto (Ex: PDF, DOCX, etc); suportam criptografia de
dados; suportam a utilização de cookies e sessões; suportam a manipulação de
Arquivos XML; suportam diversos bancos de dados e sistemas de relatórios;
possuem baixo custo de aprendizagem; entre outras vantagens.

Em suma: JSP é uma linguagem de script server-side com especificação aberta cujo
principal objetivo é a geração simples, prática e rápida de conteúdo dinâmico para
páginas web. É uma tecnologia que possui o suporte de vários servidores, tais como:
Tomcat, GlassFish, JBoss, entre outros. Ela define a interação entre Servidor e Página
JSP, e descreve o formato e sintaxe da página. Vamos ver como tudo funciona?

Bem, lá em cima eu disse que Páginas JSP tipicamente se tornam uma Servlet! Como
assim, professor? Em relação a Servlets, processamento da Página JSP passa por
uma camada adicional em que a página é compilada e transformada em uma
Servlet no Servidor Web. Simples, não?! Se vocês possuem uma página .html,
renomeiem-a para .jsp e coloquem-na em um Servidor Web.

Ao fazer isso, a página é automaticamente transformada em uma Servlet! No


primeiro acesso, a compilação é realizada. Nos acessos subsequentes, a requisição
é redirecionada para a Servlet que foi gerada anteriormente. Quando o arquivo
.html se transforma em um arquivo .jsp, ele já pode conter scriplets, diretivas,
expressões, etc. Entendido?

A partir daí, o ciclo de vida é exatamente igual ao de uma Servlet, porém com
métodos diferentes (apesar de semelhantes). Agora que tal vermos em detalhes um
pouco sobre a sintaxe da nossa linguagem, i.e., declarações, expressões, scriplets,
comentários, ações e diretivas. Antes de partir para as sintaxes, vamos ver um pouco
sobre os objetos implícitos!
5
Antes, para cada mudança no Código HTML, uma recompilação da servlet era necessária. Para fazer essa
separação que foi criada a Tecnologia JSP.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 22 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Galera, objetos implícitos são os objetos que são criados de forma automática pelo
Contêiner JSP e posteriormente disponibilizados para os desenvolvedores, de
maneira que eles não precisam ser instanciados explicitamente. No JSP, existem
nove: request, response, pageContext, application, out, config, page, session e
exception. Em seguida, veremos a sintaxe da linguagem!

OBJETO DESCRIÇÃO

request Objeto do tipo HttpServletRequest e contém a informação do pedido HTTP.

response Objeto do tipo HttpServletResponse e contém a resposta HTTP que vai ser enviada
ao cliente. Não é usado com frequência.
pageContext Objeto do tipo PageContext e contém informações de contexto para execução da
página.
application Objeto do tipo ServletContext que permite compartilhar informações entre todos os
componentes web da aplicação.
out Objeto da classe JspWriter que permite imprimir para o response através do
método println.
config Objeto do tipo ServletConfig da página JSP.

page Sinônimo do operador “this” do objeto HttpJspPage. Não é usado com frequência.

session Objeto do tipo HttpSession que guarda informações da sessão de um usuário


específico entre múltiplas requisições.
exception É o objeto Throwable que é resultante de uma situação de erro numa página JSP.

DECLARAÇÕES

Galera, Declarações são similares às declarações em Java e definem variáveis,


objetos e métodos para uso subsequente em expressões ou scriplets. Alguns alunos
me perguntam como eu decoro isso! Bem, a declaração declara! Declara o quê?
Variáveis! Como? Com ponto de exclamação. Quando eu gosto de enfatizar uma
declaração, eu uso um ponto de exclamação! No JSP, é similar...

//Declarações JSP

<%! public final static String[] estacoes = {"Primavera", "Verão", "Outono",


"Inverno"} %>

EXPRESSÕES

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 23 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Expressões retornam valores que são inseridos dinamicamente na página no lugar


da expressão, i.e., toda expressão é avaliada, executada, convertida em uma string
e inserida no local onde aparece a expressão no Arquivo JSP. Falando de outra
maneira: expressões são utilizadas para embutir o resultado da avaliação de uma
expressão na Página JSP. Detalhe: não se termina a expressão com ponto-e-vírgula!

O valor é convertido em um objeto string e inserido no objeto implícito out. Esse


objeto tem escopo de página e permite acessar o fluxo de saída da Servlet. Como
você decorava isso, professor? Bem, eu me lembrava de expressões matemáticas!
Por que? Porque, assim como as Expressões JSP, elas geralmente possuem o sinal
de igualdade (=). Expressões são similares a Scriplets!

//Expressões JSP

<%= idade = idade + 1 %>


<%= "Esse é seu aniversário de " + idade + "anos" %>

SCRIPLETS

Scriplets são importantíssimos e, de todos, é facilmente o que mais cai em prova6!


Trata-se de blocos de Código Java embutidos em uma Página JSP. Qualquer código
válido na linguagem Java pode ser inserido em um scriplet! Galera, como eu
decorava isso? É o mais simples: é o único que não possui nada após o sinal de
porcentagem.

Quando transformamos Páginas JSP em Servlets, tudo aquilo que for scriplet é
traduzido para chamadas out.println() no método _jspService da servlet gerada. A
variável de uma linguagem de programação criada dentro de um scriplet pode ser
acessada de qualquer lugar dentro da Página JSP. Dentro das scriplets, estamos
lidando com Java. Abaixo a instrução manda escrever “Bem vindo!”.

Vocês se lembram que eu falei que expressões são similares a scriplets? Pois é,
expressão <% expressão %> equivale a out.println(expressão), visto que o valor da
expressão é convertido em uma string e inserido no objeto implícito out. A partir
daí, funciona como um scriplet <% out.println(expressão) %>. Entenderam agora a
similaridade entre ambos? ;)

//Scriplets JSP

6
Apesar disso, hoje em dia, é considerado má prática utilizar Scriplets em Páginas JSP.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 24 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14
<html>
<body>
<% String mensagem = "Bem vindo!"; %>
<% out.println(mensagem); %>
</body>
</html>

COMENTÁRIOS

Comentários não mudam muito em relação a outras linguagens. Eles são


completamente ignorados pelo tradutor da página e, nesse caso, possui uma sintaxe
bastante parecida com a da Linguagem HTML. Enfim, eles servem apenas para
ajudar o desenvolvedor e em nada interferem na página que o cliente visualiza! Há
duas maneiras de se fazer um comentário:

//Comentários JSP

<%-- Comentário JSP --%> // Em HTML, seria: <!-- Comentário HTML -->

AÇÕES

Ações permitem acessar e alterar regras de negócio por meio das propriedades de
JavaBeans7. Ademais, disponibilizam comando para redirecionamento de
Requisições JSP para outra Servlet ou Página JSP. Esse também é tranquilo de
decorar, porque é o único que utiliza a sigla jsp. Professor, você pode dar um exemplo
de Ação JSP? Claro, meu querido! Temos vinte delas:

JSP :USE BEAN JSP :PARAM JSP :INVOQUE JSP :OUTPUT


JSP :SETPROPERTY JSP :FALLBACK JSP :DOBODY JSP :ROOT
JSP :GETPROPERTY JSP :TEXT JSP :ELEMENTO JSP :DECLARATION
JSP :INCLUDE JSP :PLUGIN JSP :BODY JSP :SCRIPLET
JSP :FORWARD JSP :PARAMS JSP :ATTRIBUTE JSP :EXPRESSION

Essas ações ajudam a controlar o comportamento da Engine da Servlet. As ações


mais famosas e conhecidas são:

 jsp:include: usada para inserir conteúdo dinâmico em tempo de solicitação;


 jsp:forward: usada para redirecionar requisições para outra Página JSP;
 jsp:param: usada para passar parâmetros para outra Ação JSP;

7
JavaBeans são componentes reutilizáveis de software que podem ser manipulados visualmente com a ajuda
de uma ferramenta de desenvolvimento.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 25 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

 jsp:useBean: usada quando se deseja invocar/instanciar um JavaBean 8;


 jsp:plugin: usada para executar e mostrar um objeto (Ex: Applet) no browser.
 jsp:setProperty: usada para setar o valor da propriedade de um JavaBean;
 jsp:getProperty: usada para recuperar o valor da propriedade de um JavaBean.

//Ações JSP

<jsp: useBean id="user" scope="session" type="org.apache.struts"/>

DIRETIVAS

Diretivas são instruções enviadas ao servidor contendo informações que definam


algum procedimento para o processo de compilação da página. Em outras palavras,
podemos dizer que são instruções processadas quando a Página JSP é compilada
em uma Servlet. As Diretivas são utilizadas para importar classes de um pacote,
inserir dados de arquivos externos e habilitar o uso de bibliotecas de tags.

Ao compilar uma Página JSP em uma Servlet, essas instruções podem afetar sua
estrutura, no entanto não criam nenhuma saída visível. Ademais, são interpretadas
pelo contêiner antes mesmo de qualquer elemento! Existem três diretivas principais:

 page – define atributos de configuração da Página JSP.

ATRIBUTO PROPÓSITO

buffer Especifica o modelo de buffering da saída padrão.


autoFlush Controla o comportamento da saída padrão da Servlet.
contentType Define a codificação de caracteres e media type (MIME)
errorPage Define a URL de outro JSP que reporta exceções.
isErrorPage Indica se a Página JSP possui URL de outra página.
Extends Especifica uma superclasse a ser estendida pela servlet.
Import Especifica uma lista de pacotes ou classes importadas.
Info Define uma string que pode ser acessada para informações.
isThreadSafe Define se a servlet é capaz de atender múltiplas solicitações.
language Define a linguagem de programação utilizada.
Session Especifica se a Página JSP participa de Sessões HTTP.
isELIgnored Especifica se Linguagens de Expressão serão ignoradas.
isScriptingEnabled Determina se elementos de script são permitidos.

8
Ele ajuda a localizar a instanciar Componentes JavaBean. Dessa forma, não é necessário instanciar
explicitamente um objeto da classe para acessar seus métodos.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 26 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14
//Diretiva PAGE

<%@ page import = "java.swing.*" %>

// Page pode usar 11 atributos: Info; Language; ContentType; Extends; Import;


Session; Buffer; AutoFlush; isThreadSafe; errorPage; isErrorPage.

 include – inclui recursos estáticos em uma Página JSP.

//Diretiva INCLUDE

<%@ include file = "teste.jsp" %>

 taglib – estende o conjunto de tags através de uma biblioteca de tags.

//Diretiva TAGLIB

<%@ taglib uri = "http://serlets.com/testes" prefix = "ops" %>

COMPONENTES EM INGLÊS SINTAXE

Declarações Declarations <%! ... %>


Expressões Expressions <%= Expressão %>
Scriplets Scriplets <% Scriplet %>
Comentários Comments <%-- Comentário --%>
Ações Actions <jsp: Ação />
Diretivas Directives <%@ Diretiva %>

Por fim, vamos falar um pouquinho sobre Expression Language! Como vimos,
podemos utilizar Scriplets e Expressões para recuperar atributos e parâmetros em
Páginas JSP por meio de Código Java e utilizá-los para propósitos de Apresentação
(ou Visão). No entanto – para Web Designers –, Código Java é difícil de entender e
foi para isso que foi criada a Expression Language9!

Desenvolvida pela Sun, ela é interpretada pelo Servlet Container e busca remover
um pouco do Código Java que fica na Página JSP. Agora Web Designers pode
recuperar atributos e parâmetros facilmente utilizando tags HTML-like. Em geral,
quando se especifica o valor de um atributo em uma tag JSP, simplesmente utiliza-
se uma string, como é mostrado abaixo:

9
O JSP 2.1 trouxe suporte a Unified Expression Language (UEL), que representa a união da linguagem de
expressão oferecida pelo JSP 2.0 e a criada linguagem de expressão criada para o JSF.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 27 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

<jsp:setProperty name="cubo" property="perimetro" value="120"/>

O exemplo apresentado acima apresenta algumas propriedades de um


Componente JavaBean, de forma que um Cubo possui um Perímetro de 120
unidades de medida (Ex: Centímetro). Uma JSP Expression Language (JSPEL) permite
especificar uma expressão para qualquer um desses valores de atributos mostrados
acima. Uma sintaxe simples é:

${expressão}

Os operadores mais comuns do JSPEL são “.” e “[ ]”. Esses dois operadores (ponto
e colchetes) permitem acessar diversas atributos de Componentes JavaBeans. Por
exemplo, poderíamos escrever a primeira expressão da maneira mostrada abaixo!
Quando o Compilador JSP encontrar a forma ${...} em um atributo, ele gerará
código para avaliar a expressão e substituir seu valor.

<jsp:setProperty name="cubo" property="aresta" value="10"/>


<jsp:setProperty name="cubo" property="perimetro" value="${12*cubo.aresta}"/>

Vejam que o Valor do Perímetro do Cubo é dado pela expressão contida em value
presente na segunda linha. O operador Ponto permite acessar o valor da
propriedade aresta do JavaBeans cubo e disso, seu valor continua sendo 120
unidades de medida. No entanto, o Operador Colchetes é mais poderoso, visto que
pode recuperar dados de listas, vetores e mapas. Vejamos abaixo:

${Lista[1]}
Lista // É exatamente igual ao anterior

Lista Carro
${Lista.Carro} // É exatamente igual ao anterior

A JSPEL suporta a maioria dos operadores aritméticos e lógicos do Java, além de


muitos outros. Além disso, ela é baseada em propriedades aninhadas e coleções;
operadores relacionais, lógicos e aritméticos, funções estendidas de mapeamento
em métodos estáticos de Classes Java; e um conjunto de objetos implícitos.
Ademais, podem ser usados em textos estáticos e atributos de tags.

Professor, o que é esse negócio vermelho do último parágrafo? Cara, JSPEL permite
a definição de funções (por meio de tags personalizadas) que podem ser chamadas
em uma expressão. Para tal, deve-se definir o método da classe que realiza a função

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 28 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

como público e estático. Em seguida, deve-se mapear o nome da função no Tag


Library Descriptors (TLD, ou Descritor de Biblioteca de Tags).

Por fim, devemos utilizar a Diretiva Taglib para importar a Biblioteca de Tags
personalizada que agora contém essa função e invocá-la pelo seu prefixo. Professor,
o nome do método público que realiza a função deve ser o mesmo nome da própria
função? Não é obrigatório! A função pode se chamar Multiplica e o método que a
realiza se chamar Divida – sem nenhum problema.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 29 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(FCC - 2012 - TRE- - Técnico Judiciário - Programação de Sistemas) As tags


utilizadas em uma página JSP para importar classes de um pacote, habilitar o
uso de bibliotecas de classes (por exemplo, JSTL) e incluir arquivos (por exemplo,
JSP Fragments) são conhecidas como tags:

a) diretivas.
b) de scriptlet.
c) de declaração.
d) de expressão.
e) standard action.

Comentários:

Diretivas são instruções enviadas ao servidor contendo informações que definam


algum procedimento para o processo de compilação da página. Em outras palavras,
podemos dizer que são instruções processadas quando a Página JSP é compilada em
uma Servlet. As Diretivas são utilizadas para importar classes de um pacote, inserir
dados de arquivos externos e habilitar o uso de bibliotecas de tags.

Conforme vimos em aula, trata-se das Diretivas.

Gabarito: A

(FCC - - PGE- - Técnico Superior de Análise de Sistemas e Métodos)


Blocos ou trechos de operações em código Java podem ser incluídos em uma
página JSP por meio de:

a) diretiva page.
b) diretiva include.
c) comentário.
d) taglib.
e) scriptlet.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 30 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Comentários:

Scriplets são importantíssimos e, de todos, é facilmente o que mais cai em prova!


Trata-se de blocos de Código Java embutidos em uma Página JSP. Qualquer código
válido na linguagem Java pode ser inserido em um scriplet! Galera, como eu
decorava isso? É o mais simples: é o único que não possui nada após o sinal de
porcentagem.

Conforme vimos em aula, trata-se das Scriplets.

Gabarito: E

(FCC - 2010 - TRT - 20ª REGIÃO (SE) - Técnico Judiciário - Tecnologia da


Informação) Na diretiva page, do JSP, podemos utilizar o atributo import que
permite:

a) configurar arquivos html.


b) importar figuras.
c) configurar pacotes.
d) importar arquivos htm
e) importar pacotes.

Comentários:

ATRIBUTO PROPÓSITO

buffer Especifica o modelo de buffering da saída padrão.


autoFlush Controla o comportamento da saída padrão da Servlet.
contentType Define a codificação de caracteres e media type (MIME)
errorPage Define a URL de outro JSP que reporta exceções.
isErrorPage Indica se a Página JSP possui URL de outra página.
Extends Especifica uma superclasse a ser estendida pela servlet.
Import Especifica uma lista de pacotes ou classes importadas.
Info Define uma string que pode ser acessada para informações.
isThreadSafe Define se a servlet é capaz de atender múltiplas solicitações.
language Define a linguagem de programação utilizada.
Session Especifica se a Página JSP participa de Sessões HTTP.
isELIgnored Especifica se Linguagens de Expressão serão ignoradas.
isScriptingEnabled Determina se elementos de script são permitidos.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 31 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Conforme vimos em aula, ele especifica uma lista de pacotes ou classes importadas.

Gabarito: E

(FCC - 2009 - TRT - 16ª REGIÃO (MA) - Técnico Judiciário - Tecnologia da


Informação) Em JSP, a diretiva taglib define:

a) uma biblioteca de tags para serem usadas na página.


b) um conjunto de classes importadas para serem usadas na página.
c) uma nova tag para ser usada na página.
d) uma biblioteca para ser inserida na página.
e) um módulo logicamente coesivo.

Comentários:

 taglib – estende o conjunto de tags através de uma biblioteca de tags.

//Diretiva TAGLIB

<%@ taglib uri = "http://serlets.com/testes" prefix = "ops" %>

Conforme vimos em aula, a Diretiva Taglib estende o conjunto de tags através de


uma biblioteca de tags, similar ao que diz a primeira opção.

Gabarito: A

(FCC - 2008 - MPE-RS - Técnico em Informática - Área Sistemas) Para incluir


blocos de código Java em uma página JSP utiliza-se a categoria de tags
denominada:

a) diretivas.
b) expressões.
c) declarações.
d) scriptlets.
e) comentários.

Comentários:

Scriplets são importantíssimos e, de todos, é facilmente o que mais cai em prova!


Trata-se de blocos de Código Java embutidos em uma Página JSP. Qualquer código

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 32 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

válido na linguagem Java pode ser inserido em um scriplet! Galera, como eu


decorava isso? É o mais simples: é o único que não possui nada após o sinal de
porcentagem.

Conforme vimos em aula, trata-se dos Scriplets.

Gabarito: D

(FCC - 2010 - METRÔ- - Analista - Tecnologia da Informação Na diretiva page,


do JSP, utiliza-se o atributo import, que permite:

a) configurar pacotes.
b) importar arquivos html.
c) importar pacotes.
d) configurar arquivos html.
e) importar figuras.

Comentários:

ATRIBUTO PROPÓSITO

buffer Especifica o modelo de buffering da saída padrão.


autoFlush Controla o comportamento da saída padrão da Servlet.
contentType Define a codificação de caracteres e media type (MIME)
errorPage Define a URL de outro JSP que reporta exceções.
isErrorPage Indica se a Página JSP possui URL de outra página.
Extends Especifica uma superclasse a ser estendida pela servlet.
Import Especifica uma lista de pacotes ou classes importadas.
Info Define uma string que pode ser acessada para informações.
isThreadSafe Define se a servlet é capaz de atender múltiplas solicitações.
language Define a linguagem de programação utilizada.
Session Especifica se a Página JSP participa de Sessões HTTP.
isELIgnored Especifica se Linguagens de Expressão serão ignoradas.
isScriptingEnabled Determina se elementos de script são permitidos.

Conforme vimos em aula, ele especifica uma lista de pacotes ou classes importadas.

Gabarito: C

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 33 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(FCC - 2012 - TRE-SP - Técnico Judiciário - Programação de Sistemas No


JavaServer Pages a tag <%=conteúdo %> é uma:

a) Declaration tag.
b) Directive tag.
c) Scriplet tag.
d) Action tag.
e) Expression tag.

Comentários:

COMPONENTES EM INGLÊS SINTAXE

Declarações Declarations <%! ... %>


Expressões Expressions <%= Expressão %>
Scriplets Scriplets <% Scriplet %>
Comentários Comments <%-- Comentário --%>
Ações Actions <jsp: Ação />
Diretivas Directives <%@ Diretiva %>

Conforme vimos em aula, trata-se da Tag Expression!

Gabarito: E

(FCC - 2011 – TRE/AP – Analista de Sistemas – A) Em JSP o conceito de classes e


objetos não leva em conta os princípios de proteção de dados tanto nas
propriedades quanto nos métodos.

Comentários:

Primeiro, o que é JSP? É uma tecnologia da plataforma Java Enterprise Edition (Java
EE) que permite utilizar ou o código Java dentro das páginas web ou tags que
realizam sua lógica. Por ser tecnologia Java, seus objetos são definidos segundo define
a linguagem, i.e., podendo utilizar todos os seus recursos, tais como modificadores de
acesso, tratamento de exceções, entre outros.

Conforme vimos em aula, leva – sim – em consideração.

Gabarito: E

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 34 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(FCC - 2011 – TRE/AP – Analista de Sistemas – C) Em JSP pode-se chamar o


construtor do objeto pai em qualquer parte do código e não há tratamento de
exceções nos métodos nativos.

Comentários:

Primeiro, o que é JSP? É uma tecnologia da plataforma Java Enterprise Edition (Java
EE) que permite utilizar ou o código Java dentro das páginas web ou tags que
realizam sua lógica. Por ser tecnologia Java, seus objetos são definidos segundo define
a linguagem, i.e., podendo utilizar todos os seus recursos, tais como modificadores de
acesso, tratamento de exceções, entre outros.

Conforme vimos em aula, é código java – sendo assim, pode-se chamar o construtor
do objeto pai, pode fazer uso de tratamento de exceções, etc.

Gabarito: E

10. (FCC - 2010 – MPU – Analista de Sistemas O contêiner, que executa JSP,
transforma o programa JSP em Servlet, assim, a expressão “<%=
Math.Random()%>” se torna argumento para out.println().

Comentários:

Expressões retornam valores que são inseridos dinamicamente na página no lugar da


expressão, i.e., toda expressão é avaliada, executada, convertida em uma string e
inserida no local onde aparece a expressão no Arquivo JSP. Falando de outra maneira:
expressões são utilizadas para embutir o resultado da avaliação de uma expressão
na Página JSP. Detalhe: não se termina a expressão com ponto-e-vírgula!

Vocês se lembram que eu falei que expressões são similares a scriplets? Pois é,
expressão <% expressão %> equivale a out.println(expressão), visto que o valor da
expressão é convertido em uma string e inserido no objeto implícito out. A partir daí,
funciona como um scriplet <% out.println(expressão) %>. Entenderam agora a
similaridade entre ambos? ;)

Conforme visto em aula, a expressão Math.Random() será avaliada, executada,


convertida em uma string e inserida no local onde aparece a expressão no Arquivo
JSP. E, por essa razão, é considerada equivalente à Scriplet:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 35 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

out.println(Math.Random())

Gabarito: C

11. (FCC - 2011 – TRE/AP – Analista de Sistemas – A) Para que métodos estáticos de
classes Java sejam executados a partir das funções da linguagem de expressão
em JSP, é necessário que o nome da função coincida com o nome do método
da classe Java.

Comentários:

Por fim, devemos utilizar a Diretiva Taglib para importar a Biblioteca de Tags
personalizada que agora contém essa função e invocá-la pelo seu prefixo. Professor,
o nome do método público que realiza a função deve ser o mesmo nome da própria
função? Não é obrigatório! A função pode se chamar Multiplica e o método que a
realiza se chamar Divida – sem nenhum problema.

Conforme vimos em aula, não é obrigatório.

Gabarito: E

12. (FCC - 2009 – TCE/SP – Analista de Sistemas – A) Quando se usa classes do tipo
bean, não é necessário instanciar explicitamente um objeto da classe para poder
acessar seus métodos. A instância do objeto é criada pelo elemento especial:

a) <jsp:useJavaBean/>
b) <jsp:useJava/>
c) <jsp:useBean.Java/>
d) <jsp:useJava.Bean/>
e) <jsp:useBean/>

Comentários:

Essas ações ajudam a controlar o comportamento da Engine da Servlet. As ações


mais famosas e conhecidas são:

 jsp:include: usada para inserir conteúdo dinâmico em tempo de solicitação;


 jsp:forward: usada para redirecionar requisições para outra Página JSP;
 jsp:param: usada para passar parâmetros para outra Ação JSP;
 jsp:useBean: usada quando se deseja invocar/instanciar um JavaBean;

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 36 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

 jsp:setProperty: usada para setar o valor da propriedade de um JavaBean;


 jsp:getProperty: usada para recuperar o valor da propriedade de um JavaBean.

Conforme vimos em aula, trata-se do <jsp:useBean>.

Gabarito: E

13. (FCC - – TCE/ – Analista de Sistema Nas páginas dinâmicas escritas em


JSP, para declaração de atributos ou métodos, utilizam-se as tags:

a) <% %>
b) <%! %>
c) <%= %>
d) <%-- --%>
e) /* */

Comentários:

COMPONENTES EM INGLÊS SINTAXE

Declarações Declarations <%! ... %>


Expressões Expressions <%= Expressão %>
Scriplets Scriplets <% Scriplet %>
Comentários Comments <%-- Comentário --%>
Ações Actions <jsp: Ação />
Diretivas Directives <%@ Diretiva %>

Declarações lembra...? Ponto de Exclamação!

Gabarito: A

14. (FCC – 2012 – TST – Analista de Sistemas Páginas JavaServer Pages são páginas
web:

a) que permitem combinar códigos Java, HTML estático, CSS, XML e JavaScript.
b) escritas em Java, sem código HTML.
c) Interpretadas e não compiladas.
d) Transformadas em bytecode e executadas no cliente.
e) Combinadas com servlets no desenvolvimento exclusivo de páginas estáticas.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 37 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Comentários:

Galera, trata-se de uma tecnologia para geração de documentos baseados em texto


e executados do lado do servidor (assim como Servlets). Professor, como assim texto?
Esse texto pode ser um conjunto de dados estáticos (Ex: HTML e XML); ou pode ser
um conjunto de elementos JSP e tags customizadas, que definem como a página
construirá conteúdo dinâmico.

Conforme vimos em aula, pode combinar Java, HTML, CSS, XML, Javascript. A
segunda opção está errada porque possui código HTML. A terceira opção está
errada porque páginas JSP são compiladas e interpretadas. A quarta opção está
errada porque são executadas no servidor. E, por fim, a última opção está errada
porque não é desenvolvimento exclusivo de páginas estáticas – seu foco é no
desenvolvimento de páginas dinâmicas.

Gabarito: A

15. (FCC – – TRT/3 – Analista de Sistemas NÃO possui uma habilidade de


armazenar e recuperar valores de atributos arbitrários o objeto implícito de JSP:

a) Session.
b) Request.
c) Exception.
d) Application.
e) pageContext.

Comentários:

OBJETO DESCRIÇÃO

Request Objeto do tipo HttpServletRequest e contém a informação do pedido HTTP.

Response Objeto do tipo HttpServletResponse e contém a resposta HTTP que vai ser enviada
ao cliente. Não é usado com frequência.
pageContext Objeto do tipo PageContext e contém informações de contexto para execução da
página.
Application Objeto do tipo ServletContext que permite compartilhar informações entre todos os
componentes web da aplicação.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 38 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Out Objeto da classe JspWriter que permite imprimir para o response através do
método println.
Config Objeto do tipo ServletConfig da página JSP.

Page Sinônimo do operador “this” do objeto HttpJspPage. Não é usado com frequência.

Session Objeto do tipo HttpSession que guarda informações da sessão de um usuário


específico entre múltiplas requisições.
Exception É o objeto Throwable que é resultante de uma situação de erro numa página JSP.

Observem que todos eles manipulam informações (atributos arbitrários), exceto o


Objeto Exception, que apenas retorna erros.

Gabarito: C

16. (FCC – 2007 – TRF/4 – Analista de Sistemas Uma ferramenta usada


especificamente para gerar páginas dinâmicas de HTML, baseada em
programação Java, é:

a) o WSDL.
b) o DTD.
c) a JCP.
d) a XSL.
e) o JSP.

Comentários:

Galera, trata-se de uma tecnologia para geração de documentos baseados em texto


e executados do lado do servidor (assim como Servlets). Professor, como assim texto?
Esse texto pode ser um conjunto de dados estáticos (Ex: HTML e XML); ou pode ser
um conjunto de elementos JSP e tags customizadas, que definem como a página
construirá conteúdo dinâmico.

Sabe aquelas questões que você não pode errar de tão fácil? Ei-la!

Gabarito: E

17. (FCC – 2013 – ALERN – Analista de Sistemas) Em uma aplicação web


desenvolvida utilizando a plataforma Java EE 6, há a seguinte classe Java:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 39 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14
package dados;

public class Cliente {


private String nome;
public Cliente() {
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}

Em uma página JSP da mesma aplicação, para instanciar um objeto desta classe
pode-se utilizar a tag:

a) <jsp:setBean name="cliente" class="dados.Cliente"/>


b) <jsp:setBean id="cliente" class="dados.Cliente"/>
c) <jsp:useBean name="cliente" class="dados.Cliente"/>
d) <jsp:useBean id="cliente" class="dados.Cliente"/>
e) <jsp:newInstance id="cliente" class= "dados.Cliente"/>

Comentários:

JSP :USE BEAN JSP :PARAM JSP :INVOQUE JSP :OUTPUT


JSP :SETPROPERTY JSP :FALLBACK JSP :DOBODY JSP :ROOT
JSP :GETPROPERTY JSP :TEXT JSP :ELEMENTO JSP :DECLARATION
JSP :INCLUDE JSP :PLUGIN JSP :BODY JSP :SCRIPLET
JSP :FORWARD JSP :PARAMS JSP :ATTIBUTE JSP :EXPRESSION

Essas ações ajudam a controlar o comportamento da Engine da Servlet. As ações


mais famosas e conhecidas são: (...)

 jsp:useBean: usada quando se deseja invocar/instanciar um JavaBean;

//Ações JSP - Exemplo

<jsp: useBean id="user" scope="session" type="org.apache.struts"/>

Conforme vimos em aula, trata-se da penúltima opção.

Gabarito: D

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 40 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

18. (FCC - 2012 - MPE-PE - Analista Ministerial - Informática Em uma aplicação web
Java que utiliza JSP, as linhas de código comuns a diversas páginas podem ser
criadas em um arquivo ..I.. , que pode ser incluído nas páginas utilizando-se a
diretiva ..II.. .

As lacunas I e II são preenchidas correta e respectivamente por

a) I. Javascript, <%@page
II. file="caminho/nome_do_arquivo"%>.
b) I. Java Servlet, <%@include
II. uri="caminho/nome_do_arquivo"%>.
c) I. JSTL, <%@taglib
II. uri="caminho/nome_do_arquivo"%>.
d) I. JSF, <%@page
II. import="caminho/nome_do_arquivo%>.
e) I. JSPF, <%@include
II. file="caminho/nome_do_arquivo"%>.

Comentários:

 include – inclui recursos estáticos em uma Página JSP.

//Diretiva INCLUDE

<%@ include file = "teste.jsp" %>

Professor, que raios é esse JSPF? Cara, não se assuste! É apenas o nome dado a um
fragmento de JSP que é inserido em outro JSP. E que diretiva pode ser utilizada para
inserir um recurso em uma Página JSP? @include.

Gabarito: E

19. (FCC - 2012 - MPE-PE - Analista - Tecnologia da Informação) Em uma página


JSP, para importar uma classe de um pacote e para fazer referência a uma
biblioteca (como, por exemplo, JSTL) podem ser utilizadas, respectivamente, as
diretivas:

a) <%@page import=“pacote.Classe”%> e <%@taglib uri=“caminho/biblioteca”


prefix=“prefixo”%>.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 41 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

b) <%@include import= “pacote.Classe”%> e <%@taglib


uri=“caminho/biblioteca”%>.
c) <%import= “pacote.Classe”%> e <%taglib uri=“caminho/biblioteca”%>.
d) <%@page include= “pacote.Classe”%> e <%@library
uri=“caminho/biblioteca”%>.
e) <%@import class= “pacote.Classe”%> e <%@taglib
urli=“caminho/biblioteca”%>.

Comentários:

 page – define atributos de configuração da Página JSP.

ATRIBUTO PROPÓSITO

buffer Especifica o modelo de buffering da saída padrão.


autoFlush Controla o comportamento da saída padrão da Servlet.
contentType Define a codificação de caracteres e media type (MIME)
errorPage Define a URL de outro JSP que reporta exceções.
isErrorPage Indica se a Página JSP possui URL de outra página.
Extends Especifica uma superclasse a ser estendida pela servlet.
Import Especifica uma lista de pacotes ou classes importadas.
Info Define uma string que pode ser acessada para informações.
isThreadSafe Define se a servlet é capaz de atender múltiplas solicitações.
language Define a linguagem de programação utilizada.
Session Especifica se a Página JSP participa de Sessões HTTP.
isELIgnored Especifica se Linguagens de Expressão serão ignoradas.
isScriptingEnabled Determina se elementos de script são permitidos.

 taglib – estende o conjunto de tags através de uma biblioteca de tags.

Conforme vimos em aula, podemos usar a Diretiva page com o Atributo import e a
Diretiva taglib.

Gabarito: A

(FCC - 2012 - TRE- - Analista Judiciário - Análise de Sistemas <%@ page


atributo1="valor1" atributo2="valor2"... %> é a sintaxe típica da diretiva Page, em
JSP. Um de seus atributos, se definido para true, indica o processamento normal
do servlet quando múltiplas requisições podem ser acessadas simultaneamente
na mesma instância de servlet. Trata-se do atributo:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 42 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

a) Extends.
b) Import.
c) isThreadSafe.
d) Session.
e) AutoFlush.

Comentários:

ATRIBUTO PROPÓSITO

buffer Especifica o modelo de buffering da saída padrão.


autoFlush Controla o comportamento da saída padrão da Servlet.
contentType Define a codificação de caracteres e media type (MIME)
errorPage Define a URL de outro JSP que reporta exceções.
isErrorPage Indica se a Página JSP possui URL de outra página.
Extends Especifica uma superclasse a ser estendida pela servlet.
Import Especifica uma lista de pacotes ou classes importadas.
Info Define uma string que pode ser acessada para informações.
isThreadSafe Define se a servlet é capaz de atender múltiplas solicitações.
language Define a linguagem de programação utilizada.
Session Especifica se a Página JSP participa de Sessões HTTP.
isELIgnored Especifica se Linguagens de Expressão serão ignoradas.
isScriptingEnabled Determina se elementos de script são permitidos.

Conforme vimos em aula, trata-se do atributo isThreadSafe.

Gabarito: C

21. (FCC - - MPE-RS - Técnico em Informática - Área Sistemas) Se uma super


classe de servlet deve ser gerada, será definida na diretiva page do JSP por meio
do atributo:

a) info.
b) extends.
c) session.
d) import.
e) autoFlush.

Comentários:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 43 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

ATRIBUTO PROPÓSITO

buffer Especifica o modelo de buffering da saída padrão.


autoFlush Controla o comportamento da saída padrão da Servlet.
contentType Define a codificação de caracteres e media type (MIME)
errorPage Define a URL de outro JSP que reporta exceções.
isErrorPage Indica se a Página JSP possui URL de outra página.
Extends Especifica uma superclasse a ser estendida pela servlet.
Import Especifica uma lista de pacotes ou classes importadas.
Info Define uma string que pode ser acessada para informações.
isThreadSafe Define se a servlet é capaz de atender múltiplas solicitações.
language Define a linguagem de programação utilizada.
Session Especifica se a Página JSP participa de Sessões HTTP.
isELIgnored Especifica se Linguagens de Expressão serão ignoradas.
isScriptingEnabled Determina se elementos de script são permitidos.

Conforme vimos em aula, trata-se do Atributo Extends.

Gabarito: B

(FGV - – Senado Federal – Analista de Sistemas) No contexto do


Desenvolvimento WEB JAVA, analise as afirmativas a seguir, a respeito da
tecnologia JSP ("JavaServer Page"):

I. Disponibiliza uma tecnologia simples e rápida para criar páginas que exibem
conteúdo gerado dinamicamente, define a interação entre o servidor e a página
JSP, e descreve o formato e sintaxe da página.

II. Emprega servlets - programas escritos na linguagem Java e executados no


servidor, em oposição aos applets, executados no browser do cliente.

III. Utiliza páginas JSP, com extensão .jsp ou .jspx, criadas pelo desenvolvedor da
web e que incluem especificações JSP e tags customizadas, em combinação com
outras tags estáticas, HTML ou XML.

Assinale:

a) se somente a afirmativa I estiver correta.


b) se somente as afirmativas I e II estiverem corretas.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 44 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

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.

Comentários:

I.

Em suma: JSP é uma linguagem de script server-side com especificação aberta cujo
principal objetivo é a geração simples, prática e rápida de conteúdo dinâmico para
páginas web. É uma tecnologia que possui o suporte de vários servidores, tais como:
Tomcat, GlassFish, JBoss, entre outros. Ela define a interação entre Servidor e Página
JSP, e descreve o formato e sintaxe da página. Vamos ver como tudo funciona?

Foi considerada errada. Eu discordo do gabarito, assim como a Documentação


oficial da Oracle, que ratifica o que foi dito em aula.

II.

Professor, como funciona esse tal de JSP? Cara, Páginas JSP utilizam tags XML e
Scriplets escritos em Java para encapsular a lógica que gera o conteúdo para a página
web. Ele separa a lógica do conteúdo da sua apresentação. Páginas JSP são
compiladas em Servlets e podem chamar beans a fim de executar o processamento
no servidor. Espera, professor! Como assim são compiladas em Servlets?

Perfeito, empregam Servlets (executadas no Servidor) em oposição às Applets


(executadas no cliente).

III.

Galera, esses códigos são semelhantes: o primeiro é uma Página JSP (Arquivo .jsp ou
.jspx) e o segundo é uma Servlet (Arquivo .java). Vocês percebem que no primeiro
código nós temos código HTML com algumas coisas de Java? Já no segundo nós
temos Java com algumas coisas de HTML? Vejam como é chato escrever o segundo
código – é preciso colocar as tags HTML dentro das funções de escrita do Java.

Galera, trata-se de uma tecnologia para geração de documentos baseados em texto


e executados do lado do servidor (assim como Servlets). Professor, como assim texto?
Esse texto pode ser um conjunto de dados estáticos (Ex: HTML e XML); ou pode ser

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 45 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

um conjunto de elementos JSP e tags customizadas, que definem como a página


construirá conteúdo dinâmico.

Conforme visto em aula, está perfeito.

Gabarito: D

(CESGRANRIO – 2010 – BNDES – Analista de Sistemas É característica de um


arquivo JSP a:

a) compilação em um servlet.
b) presença maciça de código Assembly.
c) impossibilidade de inclusão de comentários.
d) execução exclusiva em sistemas Windows.
e) execução exclusiva em sistemas Linux.

Comentários:

Professor, como funciona esse tal de JSP? Cara, Páginas JSP utilizam tags XML e
Scriplets escritos em Java para encapsular a lógica que gera o conteúdo para a página
web. Ele separa a lógica do conteúdo da sua apresentação. Páginas JSP são
compiladas em Servlets e podem chamar beans a fim de executar o processamento
no servidor. Espera, professor! Como assim são compiladas em Servlets?

Conforme vimos em aula, Páginas JSP são compiladas em Servlets.

Gabarito: A

24. (NCE – – BNDES – Analista de Sistemas Considere as seguintes afirmativas


sobre JSP e Servlets:

I. É possível usar uma página JSP para gerar um arquivo de imagem do tipo JPEG,
GIF ou PNG.
II. Um servlet é executado no servidor, ao passo que uma página JSP é executada
no browser do cliente.
III. Uma página gerada por um servlet não pode conter código Javascript.
IV. Uma página JSP é executada no servidor enquanto que um servlet é
executado no browser do cliente.

A quantidade de afirmativas corretas é:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 46 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

a) 0;
b) 1;
c) 2;
d) 3;
e) 4.

Comentários:

ATRIBUTO PROPÓSITO

buffer Especifica o modelo de buffering da saída padrão.


autoFlush Controla o comportamento da saída padrão da Servlet.
contentType Define a codificação de caracteres e media type (MIME)
errorPage Define a URL de outro JSP que reporta exceções.
isErrorPage Indica se a Página JSP possui URL de outra página.
Extends Especifica uma superclasse a ser estendida pela servlet.
Import Especifica uma lista de pacotes ou classes importadas.
Info Define uma string que pode ser acessada para informações.
isThreadSafe Define se a servlet é capaz de atender múltiplas solicitações.
language Define a linguagem de programação utilizada.
Session Especifica se a Página JSP participa de Sessões HTTP.
isELIgnored Especifica se Linguagens de Expressão serão ignoradas.
isScriptingEnabled Determina se elementos de script são permitidos.

I. Conforme visto em aula, o atributo contentType da Diretiva Page permite definir


a codificação dos caracteres e o Media Type (Ex: text/plain, image/jpeg, vídeo/mp4).
Logo, é possível sim usar uma Página JSP para gerar um arquivo de imagem do tipo
JPEG, GIF ou PNG.

Galera, trata-se de uma tecnologia para geração de documentos baseados em texto


e executados do lado do servidor (assim como Servlets). Professor, como assim texto?
Esse texto pode ser um conjunto de dados estáticos (Ex: HTML e XML); ou pode ser
um conjunto de elementos JSP e tags customizadas, que definem como a página
construirá conteúdo dinâmico.

II. Conforme visto em aula, ambos são executados no Servidor.

III. Não existe isso! JavaScript roda no browser do cliente, logo é completamente
possível ter código JavaScript em uma Página JSP.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 47 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Galera, trata-se de uma tecnologia para geração de documentos baseados em texto


e executados do lado do servidor (assim como Servlets). Professor, como assim texto?
Esse texto pode ser um conjunto de dados estáticos (Ex: HTML e XML); ou pode ser
um conjunto de elementos JSP e tags customizadas, que definem como a página
construirá conteúdo dinâmico.

IV. Conforme visto em aula, ambos são executados no Servidor.

Gabarito: B

(CESGRANRIO – 2012 – CEF – Analista de Sistemas) Um objeto implícito é


utilizado dentro de páginas JSP sem que haja necessidade de declará-lo. Que
objeto é esse?

a) Integer.
b) queryString.
c) getParameter.
d) String.
e) Request.

Comentários:

OBJETO DESCRIÇÃO

request Objeto do tipo HttpServletRequest e contém a informação do pedido HTTP.

response Objeto do tipo HttpServletResponse e contém a resposta HTTP que vai ser enviada
ao cliente. Não é usado com frequência.
pageContext Objeto do tipo PageContext e contém informações de contexto para execução da
página.
application Objeto do tipo ServletContext que permite compartilhar informações entre todos os
componentes web da aplicação.
out Objeto da classe JspWriter que permite imprimir para o response através do
método println.
config Objeto do tipo ServletConfig da página JSP.

page Sinônimo do operador “this” do objeto HttpJspPage. Não é usado com frequência.

session Objeto do tipo HttpSession que guarda informações da sessão de um usuário


específico entre múltiplas requisições.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 48 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

exception É o objeto Throwable que é resultante de uma situação de erro numa página JSP.

Conforme vimos em aula, trata-se do Objeto Request.

Gabarito: E

(FMP-RS - 2013 - MPE-AC - Analista - Tecnologia da Informação) No contexto


de arquitetura Java Enterprise Edition, ___________________ é uma tecnologia que
simplifica o processo de gerar páginas dinamicamente, pois permite embutir Java
diretamente em uma página HTML ou XML.

Assinale a única alternativa que completa corretamente a lacuna acima:

a) Java Virtual Machine (JVM)


b) JavaServer Pages (JSP)
c) Java ME (Java Micro Edition)
d) Enterprise JavaBeans (EJB)
e) Java Persistence API (JPA)

Comentários:

Primeiro, o que é JSP? É uma tecnologia da plataforma Java Enterprise Edition (Java
EE) que permite utilizar ou o código Java dentro das páginas web ou tags que
realizam sua lógica. Por ser tecnologia Java, seus objetos são definidos segundo define
a linguagem, i.e., podendo utilizar todos os seus recursos, tais como modificadores de
acesso, tratamento de exceções, entre outros.

Conforme vimos em aula, trata-se do JSP!

Gabarito: B

27. (CESGRANRIO - 2011 - FINEP - Analista - Desenvolvimento de Sistemas Qual


ação padrão do JSP interrompe o processamento das requisições pela página
corrente e as direciona para outro componente Web?

a) <jsp:invoke>
b) <jsp:include>
c) <jsp:forward>
d) <jsp:plugin>

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 49 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

e) <jsp:call>

Comentários:

JSP :USE BEAN JSP :PARAM JSP :INVOQUE JSP :OUTPUT


JSP :SETPROPERTY JSP :FALLBACK JSP :DOBODY JSP :ROOT
JSP :GETPROPERTY JSP :TEXT JSP :ELEMENTO JSP :DECLARATION
JSP :INCLUDE JSP :PLUGIN JSP :BODY JSP :SCRIPLET
JSP :FORWARD JSP :PARAMS JSP :ATTIBUTE JSP :EXPRESSION

Essas ações ajudam a controlar o comportamento da Engine da Servlet. As ações


mais famosas e conhecidas são: (...)

 jsp:forward: usada para redirecionar requisições para outra Página JSP;


Conforme vimos em aula, trata-se do jsp:forward.

Gabarito: C

(ESAF - - ANA - Analista Administrativo - Tecnologia da Informação -


Desenvolvimento O mecanismo de inclusão, que permite o conteúdo dinâmico
ser incluído em uma JSP em tempo de solicitação, é denominado:

a) Ação <jsp:plugin>.
b) Ação <jsp:include>.
c) Diretiva include.
d) Diretiva Page.
e) Diretiva taglib.

Comentários:

JSP :USE BEAN JSP :PARAM JSP :INVOQUE JSP :OUTPUT


JSP :SETPROPERTY JSP :FALLBACK JSP :DOBODY JSP :ROOT
JSP :GETPROPERTY JSP :TEXT JSP :ELEMENTO JSP :DECLARATION
JSP :INCLUDE JSP :PLUGIN JSP :BODY JSP :SCRIPLET
JSP :FORWARD JSP :PARAMS JSP :ATTIBUTE JSP :EXPRESSION

Essas ações ajudam a controlar o comportamento da Engine da Servlet. As ações


mais famosas e conhecidas são: (...)

 jsp:include: usada para inserir conteúdo dinâmico em tempo de solicitação;

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 50 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Conforme vimos em aula, trata-se da Ação jsp:include.

Gabarito: B

ACERTEI ERREI

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 51 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

SERVLETS

Pessoal, lá no Contêiner Web, há uma tal de Servlet! O que é isso, professor? É uma
API independente de plataforma, escrita em Java, que roda no servidor (Container
Web) processando requisições de clientes e enviando respostas, e que pode ser
traduzida como ‘servidorzinho’. Como é? É isso mesmo! Porque ele é utilizado para
estender as funcionalidades de um servidor.

A documentação oficial afirma que se trata de uma classe java pura utilizada para
estender as capacidades dos servidores que hospedam aplicações acessadas por
meio de um modelo de requisição-resposta. Em geral, elas funcionam para fornecer
conteúdo web dinâmicos (normalmente em HTML) às páginas web, processando
requisições/respostas, filtrando dados, acessando o banco de dados, etc.

Vocês podem me perguntar se as servlets utilizam apenas HTTP. Não! Elas utilizam
qualquer protocolo, no entanto ele é o protocolo mais utilizado por clientes web.
Professor, o que você quis dizer com “classe java pura”? Cara, isso significa que essa
classe só contém código java. Professor as servlets rodam no cliente ou no servidor?
Pô... essa é muito fácil: Servlets rodam no Servidor (JVM)!10 ;)

10
O A servlet can almost be

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 52 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Bem, acima eu afirmei que as servlets são responsáveis por fornecer conteúdo web
dinâmicos. E aí, alguém sabe o que é uma página web dinâmica? Bem, nós temos
dois tipos de página web dinâmicas: client-side e server-side. O primeiro se refere
a páginas que permitem mudanças em sua interface como resposta a ações do
mouse, teclado, entre outros. Vejam o exemplo da imagem anterior!

Agora observem que a página acima é modificada quando se move o cursor do


mouse sobre o link “menu” – ela é dinâmica! Bem, mas nosso interesse nessa aula
são as páginas web dinâmicas server-side, i.e., que variam de acordo com os
parâmetros fornecidos por um usuário/programa com o intuito de aumentar o
potencial de comunicação e interação com cada usuário especificamente.

Antigamente, para gerar conteúdo dinâmico, utilizava-se o CGI (Common Gateway


Interface) – ele permitia escrever pequenos programas para apresentar páginas web
dinâmicas utilizando outras linguagens de programação. Em 1997, apareceu a
tecnologia de servlets, que são utilizadas para gerar páginas web dinâmicas por
meio da linguagem Java. Professor, deixa eu ver uma servlet? Vamos lá:

import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ServletTeste extends HttpServlet

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 53 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14
{
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {

res.setContentType("text/html");
PrintWriter out = res.getWriter();

out.println("<html>");
out.println("<body bgcolor = \"white\">");
out.println("<h1>Hello Servlet</h1>");
out.println("</body>");
out.println("</html>");
}
}

Dado esse código, vamos ver alguns detalhes importantes: primeiro, foi importado
o pacote javax.servlet, que é um conjunto de classes e interfaces responsáveis pela
comunicação com diversos protocolos – lá se encontram, por exemplo, as interfaces
ServletRequest e ServletResponse. No entanto, observem abaixo que se importa
também o pacote javax.servlet.http – cuja estrutura é mostrada a seguir:

Ele se trata de um conjunto de classes e interfaces responsáveis pela comunicação


especificamente com o protocolo HTTP – lá se encontram as interfaces
HttpServletRequest e HttpServletResponse, e também uma classe abstrata chamada
HttpServlet11. Essa classe define diversos métodos para lidar com Requisições HTTP:
doGet, doPost, doPut, doDelete, doHead, doTrace e doOptions, etc.

Dentro da javax.servlet, temos também a interface ServletContext! Ela define um


contexto, i.e., uma unidade de aplicação web que possui suas próprias
configurações. Para executar Servlets e Páginas JSP, é necessário colocá-los dentro

11
Seu nome completo é: javax.servlet.http.HttpServlet.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 54 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

de um contexto de uma aplicação web – existe um Contexto por Aplicação Web por
JVM. Entenderam mais ou menos? É simples, só é um pouco abstrato!

A interface ServletContext é um conjunto de métodos que uma servlet utiliza para


interagir com seu Servlet Container – por exemplo, para recuperar um arquivo,
despachar requisições ou escrever em um arquivo de log! Bem, conforme a imagem
abaixo, cada servlet possui seu ServletConfig. Já o ServletContext serve para qualquer
servlet do contexto e pode ser acessado por meio do objeto ServletConfig.

Voltando ao nosso código: importamos os dois pacotes, estendemos essa classe


abstrata e passamos como parâmetro as duas interfaces. Se a Requisição HTTP foi
feita utilizando o Método GET, executaremos o método doGet; se foi com o Método
POST, executaremos o método doPost. Esses métodos recebem dois parâmetros:
uma requisição HttpServletRequest e uma resposta HttpServletResponse.

Vocês observarão um padrão muito comum em servlets. Qual, professor? Para


devolver a resposta ao cliente, devemos primeiro definir o tipo de saída. Para tal,
utilizamos a função setContentType do pServletResponse – nossa servlet definiu
como text/html, i.e., teremos uma saída em HTML! A seguir, utilizamos o método
getWriter para capturar os caracteres da resposta e inseri-los em um objeto out.

Após isso, nós já podemos utilizar o método println do objeto out para escrever a
saída, resultando em uma Página HTML “Hello Servlet” – como é apresentado na
imagem abaixo. Qualé, professor? O que tem de dinâmico aí? Isso foi só um exemplo

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 55 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

para vocês verem como é possível receber dados de entrada do usuário e manipulá-
los dinamicamente.

O único objetivo da servlet acima é exibir uma mensagem HTML simples para os
usuários que a requisitarem. No entanto, note como seria muito fácil escrever outros
códigos Java mais poderosos para gerar as strings do HTML baseadas em
informações dinâmicas vindas, por exemplo, de um banco de dados. Vocês
entenderam direitinho?

É importante entender também como funciona um dos métodos mais importantes


da interface HttpServletRequest: método getParameter12! Bem, ele retorna o valor
do parâmetro de uma requisição como uma String; E por que é importante? Porque
12
Já o Método getInitParameter retorna o valor do parâmetro de inicialização.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 56 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

ele é útil na passagem de dados de um formulário do cliente, i.e., por meio dele, a
servlet pode capturar dados de formulários! Agora vamos ver o ciclo das servlets ;)

Conforme a imagem acima, o Servidor recebe uma Requisição HTTP e a repassa


para o Servlet Container. Já existe uma instância13 da servlet capaz de responder a
essa requisição? Se sim, delega-se a requisição para essa instância; se não, carrega-
se a classe servlet na memória, cria-se uma instância dela e a inicializa por meio do
método init. Esse método recebe como parâmetro um objeto ServletConfig!

Esse objeto contém informações de configuração e parâmetros de inicialização da


aplicação web. A partir do momento que a servlet é inicializada, o contêiner pode
utilizá-la para tratar requisições dos clientes. Chama-se então o método service com
dois parâmetros: ServletRequest, que contém a solicitação do cliente; e o
ServletResponse, que contém a resposta – ambos criados pelo contêiner.

Na prática, método service determina qual Método HTTP (GET/POST) deve ser
chamado na servlet. Por fim, o contêiner chama o método destroy a fim de remover
a instância da servlet da memória e liberar os recursos e os dados. Tanto o método
init quanto o método destroy são executados apenas uma vez durante o ciclo de
vida da servlet. Professor, quem gerencia tudo nisso? O Servlet Container!

13
A cada nova thread, cria-se uma nova instância? Não, existe apenas uma instância e a cada nova requisição
do cliente, o contêiner gera um novo par de objetos request e response, cria uma nova thread e os passa para
ela.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 57 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(FCC - 2007 - TRE-SE - Analista Judiciário - Tecnologia da Informação) 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.

Comentários:

O Servidor recebe uma Requisição HTTP e a repassa para o Servlet Container. Já


existe uma instância da servlet capaz de responder a essa requisição? Se sim, delega-
se a requisição para essa instância; se não, carrega-se a classe servlet na memória,
cria-se uma instância dela e a inicializa por meio do método init. Esse método recebe
como parâmetro um objeto ServletConfig!

Perfeito, conforme visto em aula.

Gabarito: B

(FCC – 2011 – TRT - 1ª REGIÃO – Analista de Sistemas Em relação às tecnologias


Java, é INCORRETO afirmar que as Servlets:

a) deixam para a API utilizada na sua escrita a responsabilidade com o ambiente


em que elas serão carregadas e com o protocolo usado no envio e recebimento
de informações.

b) fornecem um mecanismo simples e consistente para estender a


funcionalidade de um servidor Web.

c) podem ser incorporadas em vários servidores Web diferentes.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 58 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

d) podem rodar em qualquer plataforma sem a necessidade de serem reescritas


ou compiladas novamente.

e) são carregadas apenas uma vez e, para cada nova requisição, a servlet gera
uma nova thread.

Comentários:

(a) Deixa a responsabilidade do ambiente de execução e protocolo para a API? De


jeito algum! Isso é uma escolha do programador; (b) Perfeito, já vimos diversas vezes
que elas são responsáveis por estender a funcionalidade de servidores; (c) Perfeito,
está disponível para diversos servidores web; (d) Perfeito, nunca se esqueçam que
são classes Java; (e) Perfeito, é uma thread para cada requisição.

Gabarito: A

(FCC – 2010 – DPE/SP – Analista de Sistemas) 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.

Comentários:

Dado esse código, vamos ver alguns detalhes importantes: primeiro, foi importado o
pacote javax.servlet, que é um conjunto de classes e interfaces responsáveis pela
comunicação com diversos protocolos – lá se encontram, por exemplo, as interfaces
ServletRequest e ServletResponse. No entanto, observem abaixo que se importa
também o pacote javax.servlet.http – cuja estrutura é mostrada a seguir:

Conforme vimos em aula, trata-se da javax.servlet e javax.servlet.http.

Gabarito: A

(FCC – 2 – TRE/CE – Analista de Sistemas) No contexto do ciclo de vida de


um servlet, considere:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 59 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

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.

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.

Comentários:

Conforme a imagem acima, o Servidor recebe uma Requisição HTTP e a repassa para
o Servlet Container. Já existe uma instância da servlet capaz de responder a essa
requisição? Se sim, delega-se a requisição para essa instância; se não, carrega-se a
classe servlet na memória, cria-se uma instância dela e a inicializa por meio do
método init. Esse método recebe como parâmetro um objeto ServletConfig!

(I) Galera, isso só ocorre se já não existir uma instância da servlet. No entanto,
guardem isso para sempre na vida de concurseiros: “Um item só está errado se
contiver um erro”. O item disse que ocorre sempre assim? Não. Existe um caso em
que o que foi descrito no item ocorre? Sim! Logo, não há erro! Ele descreveu um
caso, não disse que era o único caso! Item completamente perfeito...

Conforme a imagem acima, o Servidor recebe uma Requisição HTTP e a repassa para
o Servlet Container. Já existe uma instância da servlet capaz de responder a essa

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 60 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

requisição? Se sim, delega-se a requisição para essa instância; se não, carrega-se a


classe servlet na memória, cria-se uma instância dela e a inicializa por meio do
método init. Esse método recebe como parâmetro um objeto ServletConfig!

(II) Conforme vimos em aula, esse método contém as configurações que preparam
os recursos para a execução do serviço ou conexão com outros serviços.

Esse objeto contém informações de configuração e parâmetros de inicialização da


aplicação web. A partir do momento que a servlet é inicializada, o contêiner pode
utilizá-la para tratar requisições dos clientes. Chama-se então o método service com
dois parâmetros: ServletRequest, que contém a solicitação do cliente; e o
ServletResponse, que contém a resposta – ambos criados pelo contêiner.

(III) Conforme vimos em aula, eles são criados para tratar a solicitação e resposta
para o cliente e são criados pelo contêiner.

Na prática, o método service determina qual Método HTTP (GET/POST) deve ser
chamado na servlet. Por fim, o contêiner chama o método destroy a fim de remover
a instância da servlet da memória e liberar os recursos e os dados. Tanto o método
init quanto o método destroy são executados apenas uma vez durante o ciclo de vida
da servlet. Professor, quem gerencia tudo nisso? O Servlet Container!

(IV) Conforme vimos em aula, está perfeito! Quando a servlet tiver cumprido seu
papel, o servidor liberará os recursos investidos.

Gabarito: E

(FCC – 3 – DPE/SP – Analista de Sistemas) Um Servlet Contêiner controla o


ciclo de vida de uma servlet onde são invocados três métodos essenciais: um
para inicializar a instância da servlet, um para processar a requisição e outro para
descarregar a servlet da memória. Os itens a seguir representam, nessa ordem,
o que ocorre quando um usuário envia uma requisição HTTP ao servidor:

I. A requisição HTTP recebida pelo servidor é encaminhada ao Servlet Contêiner


que mapeia esse pedido para uma servlet específica.

II. O Servlet Contêiner invoca o método init da servlet. Esse método é chamado
em toda requisição do usuário à servlet não sendo possível passar parâmetros
de inicialização.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 61 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

III. O Servlet Contêiner invoca o método service da servlet para processar a


requisição HTTP, passando os objetos request e response. O método service não
é chamado a cada requisição, mas apenas uma vez, na primeira requisição do
usuário à servlet.

IV. Para descarregar a servlet da memória, o Servlet Contêiner chama o método


unload, que faz com que o garbage collector retire a instância da servlet da
memória.

Está correto o que se afirma em:

a) I, II, III e IV.


b) I, apenas.
c) I e IV, apenas.
d) II, III e IV, apenas.
e) II e III, apenas.

Comentários:

Conforme a imagem acima, o Servidor recebe uma Requisição HTTP e a repassa para
o Servlet Container. Já existe uma instância da servlet capaz de responder a essa
requisição? Se sim, delega-se a requisição para essa instância; se não, carrega-se a
classe servlet na memória, cria-se uma instância dela e a inicializa por meio do
método init. Esse método recebe como parâmetro um objeto ServletConfig!

(I) Conforme vimos em aula, o contêiner verifica se há uma servlet específica para
responder a esse pedido.

Conforme a imagem acima, o Servidor recebe uma Requisição HTTP e a repassa para
o Servlet Container. Já existe uma instância da servlet capaz de responder a essa
requisição? Se sim, delega-se a requisição para essa instância; se não, carrega-se a
classe servlet na memória, cria-se uma instância dela e a inicializa por meio do
método init. Esse método recebe como parâmetro um objeto ServletConfig!

(II) Conforme vimos em aula, esse método pode – e recebe – parâmetros de


inicialização.

Esse objeto contém informações de configuração e parâmetros de inicialização da


aplicação web. A partir do momento que a servlet é inicializada, o contêiner pode
utilizá-la para tratar requisições dos clientes. Chama-se então o método service com

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 62 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

dois parâmetros: ServletRequest, que contém a solicitação do cliente; e o


ServletResponse, que contém a resposta – ambos criados pelo contêiner.

(III) Na verdade, esse método é chamado a cada requisição, porque cada requisição
possui parâmetros diferentes.

Na prática, o método service determina qual Método HTTP (GET/POST) deve ser
chamado na servlet. Por fim, o contêiner chama o método destroy a fim de remover
a instância da servlet da memória e liberar os recursos e os dados. Tanto o método
init quanto o método destroy são executados apenas uma vez durante o ciclo de vida
da servlet. Professor, quem gerencia tudo nisso? O Servlet Container!

(IV) Conforme vimos em aula, não se chama método unload – o nome do método
é destroy!

Gabarito: B

(FCC – 6 – BACEN – Analista de Sistemas) Para ser um servlet, uma classe


deve estender a classe I e exceder as ações “doGet” ou “doPost” (ou ambas),
dependendo se os dados estão sendo enviados por uma ação GET ou por uma
ação POST. Estes métodos tomam dois argumentos: um II e um III em sua
execução. Preenchem correta e respectivamente I, II e III:

Comentários:

Voltando ao nosso código: importamos os dois pacotes, estendemos essa classe


abstrata e passamos como parâmetro as duas interfaces. Se a Requisição HTTP foi
feita utilizando o Método GET, executaremos o método doGet; se foi com o Método
POST, executaremos o método doPost. Esses métodos recebem dois parâmetros: uma
requisição HttpServletRequest e uma resposta HttpServletResponse.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 63 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Para ser um servlet, uma classe deve estender a classe HttpServlet e exceder as
ações “doGet” ou “doPost” (ou ambas), dependendo se os dados estão sendo
enviados por uma ação GET ou por uma ação POST. Estes métodos tomam dois
argumentos: um HttpServletRequest e um HttpServletResponse em sua execução.

Gabarito: D

(FCC - 2007 - TRE-SE - Analista Judiciário - Tecnologia da Informação Em Java,


a passagem de dados de um formulário do cliente para o servlet pode ocorrer
por meio do uso do método:

a) import()
b) return()
c) catch()
d) getParameter()
e) nameComponent()

Comentários:

É importante entender também como funciona um dos métodos mais importantes


da interface HttpServletRequest: método getParameter! Bem, ele retorna o valor do
parâmetro de um requisito como uma String; Por que isso é importante? Porque ele
é útil na passagem de dados de um formulário do cliente, i.e., por meio dele, a servlet
pode capturar dados de formulários! Agora vamos ver o ciclo das servlets ;)

Conforme vimos em aula, trata-se do método getParameter().

Gabarito: D

(FCC - 2012 - TRE- - Programador de computador A tecnologia Java Servlet


é baseada na construção de classes servlet que executam no servidor recebendo
dados de requisições do cliente, processando esses dados, opcionalmente
acessando recursos externos como bancos de dados, e respondendo ao cliente
com conteúdo no formato HTML.

Com relação ao tema, analise as asserções a seguir:

Embora as servlets sejam muito boas no que fazem, tornou-se difícil responder
ao cliente com conteúdo no formato HTML.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 64 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

PORQUE

Geralmente quem trabalha com o conteúdo HTML é o web designer que


normalmente não é programador Java experiente. Ao misturar HTML dentro de
uma servlet, torna-se muito difícil separar as funções de web designer e
desenvolvedor Java. Além disso, é difícil fazer alterações no conteúdo HTML, pois
para cada mudança, uma recompilação da servlet tem que acontecer. Para
contornar as limitações da tecnologia Java Servlet a Sun Microsystems criou a
tecnologia JavaServer Pages (JSP).

Acerca dessas asserções, é correto afirmar:

a) Tanto a primeira quanto a segunda asserções são proposições falsas.

b) A primeira asserção é uma proposição verdadeira e a segunda uma


proposição falsa.

c) A primeira asserção é uma proposição falsa e a segunda uma proposição


verdadeira.

d) As duas asserções são proposições verdadeiras, mas a segunda não é a


justificativa correta da primeira.

e) As duas asserções são proposições verdadeiras e a segunda é a justificativa


correta da primeira.

Comentários:

Outra desvantagem importante é que o programador, além de ser bom em Java, tem
que ser bom em Web Design! No entanto, quando ele está escrevendo o código Java,
ele não possui as ferramentas de Web Design! O JSP permite essa separação, i.e., os
Desenvolvedores Java criam as Servlets (Lógica de Negócio) e os Web Designers criam
as Páginas JSP (Lógica de Apresentação)! Bacana?

Roubei esse parágrafo da aula de JSP! Observem que ambas as assertivas estão
corretas e a segunda justifica a primeira.

Gabarito: E

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 65 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(FCC - 2013 - -RN - Analista Legislativo - Analista de Sistemas No Java EE 6


os métodos doPost e doGet podem ser sobrescritos em uma servlet criada na
aplicação para receberem as requisições vindas de páginas HTML. Quando
sobrescritos na servlet, eles substituem seus métodos ancestrais existentes na
classe abstrata:

a) GenericServlet.
b) HttpServlet.
c) HttpServletRequest.
d) HttpServletResponse.
e) HttpServletObject.

Comentários:

Ele se trata de um conjunto de classes e interfaces responsáveis pela comunicação


especificamente com o protocolo HTTP – lá se encontram as interfaces
HttpServletRequest e HttpServletResponse, e também uma classe abstrata chamada
HttpServlet. Essa classe define diversos métodos para lidar com Requisições HTTP:
doGet, doPost, doPut, doDelete, doHead, doTrace e doOptions, etc.

Conforme vimos em aula, essa classe abstrata é a HttpServlet.

Gabarito: B

10. (FCC - 2009 - TRT - 16ª REGIÃO (MA) - Técnico Judiciário - Tecnologia da
Informação Para ler os parâmetros de inicialização do contexto de um servlet
utiliza-se o método:

a) String getInitParameter(String).
b) Enumeration getInitParameterNames().
c) InputStream getResourceAsStream().
d) setAttribute(String nome, Object).
e) Object getAttribute(String nome).

Comentários:

É importante entender também como funciona um dos métodos mais importantes


da interface HttpServletRequest: método getParameter3! Bem, ele retorna o valor do
parâmetro de uma requisição como uma String; E por que é importante? Porque ele

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 66 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

é útil na passagem de dados de um formulário do cliente, i.e., por meio dele, a servlet
pode capturar dados de formulários! Agora vamos ver o ciclo das servlets ;)

Conforme vimos em aula, a nota de rodapé 3 afirma que o Método getInitParameter


retorna o valor do parâmetro de inicialização de uma servlet.

Gabarito: A

11. (FMP/RS – 2013 – MPE/AC – Analista de Sistemas No contexto da arquitetura


Java Enterprise Edition, __________________ são, em termos de estrutura, classes
Java especializadas que se assemelham muito à estrutura dos applets Java,
porém rodando em um servidor web e não no do cliente.

Assinale a única alternativa que completa corretamente a lacuna acima.

a) Java ME (Java Micro Edition)


b) portlets
c) Java Persistence API (JPA)
d) Enterprise JavaBeans (EJB)
e) servlets

Comentários:

A Oracle afirma: “A servlet can almost be thought of as an applet that runs on the
server side”. Portanto, no contexto da arquitetura Java Enterprise Edition, servlets
são, em termos de estrutura, classes Java especializadas que se assemelham muito
à estrutura dos applets Java, porém rodando em um servidor web e não no do
cliente.

Gabarito: E

12. (VUNESP – 3 – FUNDUNESP – Analista de Sistemas) Na plataforma J2EE, a


classe ServletRequest define:

a) a estrutura do objeto principal do Servlet, permitindo que sejam feitas


requisições ao Servlet.
b) métodos que permitem que o Servlet faça requisições de forma assíncrona.
c) métodos que permitem que o Servlet faça requisições aos clientes.
d) propriedades que permitem que seja alterado o comportamento do Servlet.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 67 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

e) um objeto que fornecerá informações sobre a requisição feita pelo cliente ao


Servlet.

Comentários:

Dado esse código, vamos ver alguns detalhes importantes: primeiro, foi importado o
pacote javax.servlet, que é um conjunto de classes e interfaces responsáveis pela
comunicação com diversos protocolos – lá se encontram, por exemplo, as interfaces
ServletRequest e ServletResponse. No entanto, observem abaixo que se importa
também o pacote javax.servlet.http – cuja estrutura é mostrada a seguir:

Conforme vimos em aula, ServletRequest é uma interface e, não, uma classe! Vacilou,
banca! Bem, essa interface funciona como a interface ServletHttpRequest, porém
não é específica para o Protocolo HTTP! Bem, ambas servem para manipular
informações de uma requisição feito pelo cliente ao servlet.

Gabarito: E

13. (CESGRANRIO – 2006 – DECEA – Analista de Sistemas – A) Servlets e arquivos


JSP são executados no WEB Container.

Comentários:

Pessoal, lá no Contêiner Web, há uma tal de Servlet! O que é isso, professor? É uma
API independente de plataforma, escrita em Java, que roda no servidor (Container
Web) processando requisições de clientes e enviando respostas, e que pode ser
traduzida como ‘servidorzinho’. Como é? É isso mesmo! Porque ele é utilizado para
estender as funcionalidades de um servidor.

Conforme vimos em aula, são executados no Container Web.

Gabarito: C

14. (CESGRANRIO – – DECEA – Analista de Sistemas – B) Applets e Servlets são


compilados e executados no servidor.

Comentários:

Pessoal, lá no Contêiner Web, há uma tal de Servlet! O que é isso, professor? É uma
API independente de plataforma, escrita em Java, que roda no servidor (Container

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 68 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Web) processando requisições de clientes e enviando respostas, e que pode ser


traduzida como ‘servidorzinho’. Como é? É isso mesmo! Porque ele é utilizado para
estender as funcionalidades de um servidor.

Conforme vimos em aula, servlets rodam no servidor, mas applets rodam no cliente.

Gabarito: E

15. (CESGRANRIO – 2009 – BNDES – Analista de Sistemas – A) Ao estudar as


especificações e frameworks Java EE, um Analista de Sistemas concluiu que 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.

Comentários:

Na prática, o método service determina qual Método HTTP (GET/POST) deve ser
chamado na servlet. Por fim, o contêiner chamar o método destroy a fim de remover
a instância da servlet da memória e liberar os recursos e os dados. Tanto o método
init quanto o método destroy são executados apenas uma vez durante o ciclo de vida
da servlet. Professor, quem gerencia tudo nisso? O Servlet Container

Conforme vimos em aula, o ciclo de vida das servlets é gerenciado pelo Servlet
Container (que se encontra dentro do Web Container). No entanto, o Web
Container não é responsável pelo ciclo de vida de EJBs (seria impossível!).

Gabarito: E

16. (CESGRANRIO – 2009 – BNDES – Analista de Sistemas – B) Ao estudar as


especificações e frameworks Java EE, um Analista de Sistemas concluiu que no
container WEB, uma página JSP transforma-se em um servlet, que é compilado,
carregado e inicializado.

Comentários:

Isso é da aula de Páginas JSP, no entanto é sabido que Pásginas JSP se transformam
em Servlets!

Gabarito: C

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 69 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

17. (CESGRANRIO – 2012 – PETROBRÁS – Analista de Sistemas Seja o código a


seguir:

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.

É correto APENAS o que se afirma em:

a) I
b) II
c) III
d) I e III
e) II e III

Comentários:

(I) Na questão, estamos herdando de HttpServlet e, não, Servlet diretamente. Logo,


não precisamos sobrescrever o método service, basta utilizar doGet e doPost.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 70 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(II) Perfeito, quem geralmente chama o método init é o contêiner e, não, o


programador. Se ele não redefini-lo, será chamado o construtor da classe mãe
(super.init(config)).

(III) Galera, quem geralmente chama o método destroy é o contêiner e, não, o


programador. Logo, não é necessário redefini-lo.

Gabarito: B

18. (ESAF – – CGU – Analista de Sistemas – 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.

Comentários:

A documentação oficial afirma que se trata de uma classe java pura utilizada para
estender as capacidades dos servidores que hospedam aplicações acessadas por meio
de um modelo de requisição-resposta. Em geral, elas funcionam para fornecer
conteúdo web dinâmicos (normalmente em HTML) às páginas web, processando
requisições/respostas, filtrando dados, acessando o banco de dados, etc.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 71 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Opa, utiliza-se um modelo Request/Response e, não, Challenge/Request.

barito: E

19. (CIAAR - 2012 - CIAAR - Oficial Temporário - Análise de Sistemas O método


chamado para liberar quaisquer recursos mantidos pelo servlet, quando o
contëiner de servlets termina o servlet, denomina-se:

a) get.
b) post.
c) destroy.
d) prerender.

Comentários:

Na prática, o método service determina qual Método HTTP (GET/POST) deve ser
chamado na servlet. Por fim, o contêiner chamar o método destroy a fim de remover
a instância da servlet da memória e liberar os recursos e os dados. Tanto o método
init quanto o método destroy são executados apenas uma vez durante o ciclo de vida
da servlet. Professor, quem gerencia tudo nisso? O Servlet contêiner!

Conforme vimos em aula, trata-se do método Destroy!

Gabarito: C

(AOCP - 2012 - BRDE - Analista de Sistemas - Desenvolvimento de Sistemas -


(Prova TIPO 4) Sobre Servlets, analise as assertivas e assinale a alternativa que
aponta as corretas.

I. Servlets são implementadas como arquivos de classe da Linguagem Java.

II. Servlets são independentes de plataforma, de modo que podem ser


executadas em diferentes servidores, em diferentes sistemas operacionais.

III. As Servlets podem acessar qualquer uma das APIs Java. Uma Servlet pode
usar a API JDBC para acessar e armazenar dados ou para acessar objetos
remotos.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 72 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

IV. Ao criar uma Servlet, somos obrigados a reescrever nove métodos presentes
à interface que foi implementada.

a) Apenas I e II.
b) Apenas I e III.
c) Apenas II e III.
d) Apenas I, II e III.
e) I, II, III e IV.

Comentários:

I. Galera, não sei o que a banca quis dizer com isso! Imagino que seja que Servlets
são Classes Java (diferente de JSP) – logo, o item está correto.

II. Não gosto de dizer que são independentes de plataforma, prefiro dizer que são
multiplataformas, mas está correto.

III. Conforme já foi dito, são classes Java! Logo, podem acessar APIs Java como
qualquer outra.

IV. Não, somos obrigados a implementar, se for Servlet HTTP, os métodos doGet ou
doPost.

Gabarito: D

21. (VUNESP - 2013 - FUNDUNESP - Analista Programador Júnior Para criar um


Servlet que processará as requisições HTTP na plataforma J2EE, deve-se:

a) criar uma classe que implemente a interface Servlet.


b) criar uma classe que estenda a classe HttpServlet.
c) implementar o método processHttpHeader.
d) instanciar a classe Servlet, passando para o parâmetro requestType o valor
Servlet.HTTP_REQUEST.
e) invocar o método Servlet.service(Servlet.HTTP_REQUEST) antes do
processamento da requisição.

Comentários:

Dado esse código, vamos ver alguns detalhes importantes: primeiro, foi importado o
pacote javax.servlet, que é um conjunto de classes e interfaces responsáveis pela

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 73 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

comunicação com diversos protocolos – lá se encontram, por exemplo, as interfaces


ServletRequest e ServletResponse. No entanto, observem abaixo que se importa
também o pacote javax.servlet.http – cuja estrutura é mostrada a seguir:

Ele se trata de um conjunto de classes e interfaces responsáveis pela comunicação


especificamente com o protocolo HTTP – lá se encontram as interfaces
HttpServletRequest e HttpServletResponse, e também uma classe abstrata chamada
HttpServlet2. Essa classe define diversos métodos para lidar com Requisições HTTP:
doGet, doPost, doPut, doDelete, doHead, doTrace e doOptions, etc.

Conforme vimos em aula, quando queremos criar uma Servlet que processará
especificamente requisições HTTP, devemos criar uma classe que estenda a classe
HttpServlet – como mostrado na imagem.

Gabarito: B

(FEPESE - 2013 - JUCESC - Analista Técnico em Gestão de Registro Mercantil -


Analista de Informática) Assinale a alternativa que defne corretamente um
Servlet.

a) É um método da JPA utilizado na persistência assíncrona de dados.


b) É um componente que roda do lado do cliente para tratar problemas de
comunicação.
c) É uma classe Java utilizada para estender as capacidades de um servidor.
d) É uma biblioteca JBOSS que emula servidores no lado do cliente.
e) É uma JSP que possibilita a execução de código no lado do cliente, mesmo
sem comunicação com um servidor.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 74 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Comentários:

Pessoal, lá no Contêiner Web, há uma tal de Servlet! O que é isso, professor? É uma
API independente de plataforma, escrita em Java, que roda no servidor (Container
Web) processando requisições de clientes e enviando respostas, e que pode ser
traduzida como ‘servidorzinho’. Como é? É isso mesmo! Porque ele é utilizado para
estender as funcionalidades de um servidor.

Conforme vimos em aula, trata-se da terceira opção – todas as outras são absurdas!

Gabarito: C

(VUNESP - 2013 - FUNDUNESP - Analista Programador Júnior) Considere o


Servlet a seguir:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ClasseServlet extends HttpServlet {

public void doGet(HttpServletRequest request,


HttpServletResponse response){
response write html
response write body
response write Servlet em operação
response write body
response write html
}
}

Sobre o código do Servlet, é possível afirmar que:

a) ao ser executado por um contêiner de Servlet, será exibida uma tela em branco
no navegador.

b) ao ser executado por um contêiner de Servlet, será exibida a mensagem “Servlet


em operação!” na tela do navegador.

c) não pode ser compilado, pois a classe HttpServletResponse não possui o método
write.

d) não pode ser compilado, pois HttpServlet é uma interface e, portanto, não pode
ser estendida por uma classe.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 75 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

e) o conteúdo exibido na tela do navegador não será codificado corretamente, pois


a codificação da página não foi informada.

Comentários:

Vocês observarão um padrão muito comum em servlets. Qual, professor? Para


devolver a resposta ao cliente, devemos primeiro definir o tipo de saída. Para tal,
utilizamos a função setContentType do HttpServletResponse – nossa servlet definiu
como text/html, i.e., teremos uma saída em HTML! A seguir, utilizamos o método
getWriter para capturar os caracteres da resposta e inseri-los em um objeto out.

Conforme vimos em aula, nós utilizamos o método getWriter para capturar a


resposta e passar para um objeto PrintWriter. A HttpServletResponse não possui
qualquer método write.

Gabarito: C

24. (CESGRANRIO - - - - Analista Judiciário - Tecnologia da Informação


O método da interface javax.servlet.http.HttpSession, utilizado para finalizar uma
sessão de usuário em um container J2EE, é

a) cancel( )
b) delete( )
c) destroy( )
d) invalidate( )
e) release( )

Comentários:

Galera, coloquei essa questão para que vocês saibam que nem sempre será possível
responder todas as questões de uma prova. A banca tem o poder de cobrar o que
ela quiser. E assim ela o faz, porque toda prova tem seus itens impossíveis. Não
fiquem tristes, porque um item como esse ninguém acerta (exceto no chute). É
inviável e não vale a pena estudar todos os métodos, parâmetros, objetos de uma
linguagem ou tecnologia. Bem, no caso dessa questão, a resposta era invalidate( ).

Gabarito: D

ACERTEI ERREI

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 76 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 77 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

ENTERPRISE JAVABEANS (EJB)

Enterprise JavaBeans (EJB) é uma arquitetura para aplicações corporativas orientada


à transação e baseada em componentes. Além de uma arquitetura, eles são também
componentes server-side que oferecem uma infraestrutura para o desenvolvimento
e implantação de aplicações distribuídas, escaláveis, transacionais, seguras,
concorrentes, persistentes, e portáteis de maneira fácil de acessar e simples de usar.

O Contêiner EJB é um recipiente (em tempo de execução) para Enterprise Beans


que são implantados em um Servidor de Aplicação. Ele é criado automaticamente
quando o servidor é inicializado e oferece serviços como: gerenciamento de ciclo
de vida, geração de código, gerenciamento de persistência, gerenciamento de
segurança, gerenciamento de transações, controle de concorrência, etc. Vejamos:

 Ciclo de Vida: o desenvolvedor não precisa se preocupar com a criação de


processos, threads, ativação ou destruição de objetos.

 Segurança: o contêiner fornece suporte a autenticação e controle de acesso


orientado a papéis.

 Transações: o contêiner automaticamente gerencia o início, enrollment,


commitment e rollback de transações.

 Persistência: beans não precisam se preocupar com sua persistência em um


banco de dados.

 Estado: o estado conversacional de Beans (se houver) é gerenciado


(salvo/recuperado) automaticamente.

A estrutura de um Enterprise Bean e seu comportamento em tempo de execução


são definidos em um ou mais Descritores de Implantação (Anotações XML).
Programadores criam esses arquivos durante o processo de empacotamento de EJB
e os descritores se tornam parte da implantação do EJB quando o Enterprise Bean
é compilado. O Descritor de Implantação do EJB 3.2 é o ejb-jar.xml.

Os descritores de implantação do J2EE 1.4 eram, em geral, complexos e era fácil


cometer erros ao preenchê-los. Em vez disso, a Plataforma Java EE usa Anotações
(Annotations), que são modificadores semelhantes a público e privado. O EJB 3, por

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 78 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

exemplo, define anotações para o tipo de bean, tipo de interface, referências de


recurso, atributos de transação, segurança e muito mais.

Um conjunto de anotações semelhante é fornecido para Web services pela


especificação JAX-WS 2.0. Em geral, anotações são usadas para gerar artefatos;
outras para documentar o código; outras mapeiam classes Java para XML; outras
mapeiam classes Java para bancos de dados; outras mapeiam métodos para
operações; outras especificam dependências externas, entre outros.

Existem vários formatos (Ex: EAR, WAR, JAR) para padronizar o encapsulamento da
lógica de negócio sob uma única interface – e o EJB é o núcleo da Tecnologia Java
EE. Bem, esse componente é executado no Container EJB de um Servidor de
Aplicação! Professor, o que tem de tão especial nessa tecnologia? Cara, ela permite
o desenvolvimento rápido e simplificado de aplicações complexas.

LOCAL CONTÊINER COMPONENTE

CLIENTE Aplicação Cliente Componentes de Aplicação


Applet Applet
Java Servlet
SERVIDOR Web JavaServer Pages (JSP)
JavaServer Faces (JSF)
EJB Enterprise Beans

Em outras palavras, ele deixa o programador livre para se concentrar na lógica de


negócio e na resolução do problema. Assim, o desenvolvedor não precisa mais se
preocupar com codificação envolvendo infraestrutura (segurança, escalabilidade,
entre outros) . Ademais, eles são extremamente portáveis e reusáveis. Logo, pode-
se construir aplicações a partir de beans pré-existentes.

Uma vez construídos seguindo as especificações, eles podem rodar em qualquer


Servidor de Aplicação Java EE! Professor, agora eu quero usar Enterprise JavaBeans
sempre e em qualquer condição – ele é demais! Calma lá, pequeno gafanhoto! É
inviável utilizá-lo em algumas condições. É recomendável observar algumas
características do sistema de software.

14
Programadores precisam escrever apenas a lógica de negócio em Componentes EJB. Não precisa implementar
nenhuma programação ou serviço em nível de sistema, tais como transações ou segurança, pois isso é oferecido
pelo Container EJB.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 79 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Recomenda-se utilizá-lo caso sua aplicação realmente necessite ser escalável,


segura, transacional, persistente, escalável, portável, distribuída, etc Se você for
desenvolver sistema de uma padaria, em geral, não é viável utilizar Enterprise
JavaBeans. Faça-se algumas perguntas: Muitas pessoas vão acessar o sistema da
padaria simultaneamente? Haverá picos de acesso? É preciso de segurança?

OBJETIVOS GERAIS DA ARQUITETURA EJB

A Arquitetura EJB será a arquitetura de componentes padrão para construção de aplicações corporativas
orientadas a objetos em Java.

A Arquitetura EJB suportará o desenvolvimento, implantação e utilização de aplicações corporativas em


Java.

A Arquitetura EJB suportará o desenvolvimento, implantação e utilização de Web Services.

A Arquitetura EJB facilitará a escrita de aplicações: desenvolvedores não terão que entender detalhes de
transação, gerenciamento de estados, multithreading, etc.

Aplicações EJB – após desenvolvidas – poderão implantadas em múltiplas plataformas sem necessidade de
recompilação ou modificação do código-fonte.

A Arquitetura EJB abordará os aspectos de desenvolvimento, implantação e tempo de execução do ciclo de


vida de uma aplicação corporativa.

A Arquitetura EJB definirá os contratos que habilitam ferramentas de vários fabricantes a desenvolver e
implantar componentes interoperáveis em runtime.

A Arquitetura EJB tornará possível a criação de aplicativos através da combinação de componentes


desenvolvidos utilizando ferramentas de diferentes fabricantes.

A Arquitetura EJB fornecerá interoperabilidade entre Beans Corporativos e componentes do Java EE, bem
como aplicações de outras linguagens (não Java).

A Arquitetura EJB será compatível com as plataformas de servidores existentes. Fornecedores serão
capazes de estender seus produtos para apoiar EJBs.

A Arquitetura EJB será compatível com outras APIs da linguagem de programação Java.

A Arquitetura EJB será compatível com Protocolos CORBA.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 80 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Se realmente for necessário, a Tecnologia EJB é a escolha certa! É legal enfatizar


também que a Arquitetura EJB é neutra em relação a seus protocolos – pode ser
utilizada com HTTP, IIOP, RMP, DOM, etc. Pessoal, o Enterprise JavaBean evoluiu
muito rápido. Logo, ainda caem algumas questões de prova sobre as novidades do
EJB 3.1. Vamos ver o que ele trouxe de novo:

NOVIDADES DO EJB 3.1

Novo tipo de componente (Singleton Session Bean) que implementa o Padrão Singleton e permite capturar
eventos de inicialização e encerramento da aplicação

Interface opcional para componentes - Flexibilização na criação de componentes EJBs sem a obrigatoriedade
da criação de uma interface remota ou local.

Melhorias no serviço de agendamento que permitem novas possibilidades através de uma notação similar
ao Unix Cron e agendamento de forma declarativa.

Deploy de EJBs na camada web (.war) - Permite o uso de EJBs diretamente na camada Web.

Chamadas assíncronas a métodos - Uma alternativa simplificada à MDBs para chamada assíncrona que pode
ser utilizada em cenários menos complexos.

Nomes JNDI globais padronizados - Esse recurso facilita ainda mais a portabilidade.

EJB Lite - Define uma versão mais leve para um conteiner de EJBs.

Embeddable EJB - Possibilidade de executar EJBs no ambiente JavaSE.

Os Componentes EJB podem ser acessados diretamente, no entanto ainda pode


ser utilizadas as interfaces que são disponibilizadas para acesso remoto ou local. O
Bean não implementa essas interfaces, cada fabricante de Servidores de Aplicação
provê a implementação para as interfaces Remote e Home definidas para o
componente - são respectivamente as interfaces EJB Object e EJB Home.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 81 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

A Interface EJBObject implementa a interface para acessos remotos e locais, e


funciona como um wrapper, i.e., encapsulando a instância EJB solicitada pelo cliente.
Já a Interface EJBHome faz exatamente a mesma coisa, no entanto ela também é
responsável por auxiliar o contêiner a gerenciar o ciclo de vida de um Bean –
realizando criações, buscas e remoções de objetos.

Existem três tipos de EJB, mas o Entity Bean é opcional a partir do EJB 3.2. Ele só
existe na especificação por questão de compatibilidade com versões anteriores, mas
sabe-se que ele já foi substituído pela Java Persistence API (JPA). Ademais, como é
um Enterprise JavaBean, eles encapsulam uma lógica de negócio. Pois bem, sobram
dois tipos – Message-driven Beans e Session Beans:

Message-driven Beans (MDB): trata-se de um objeto não-persistente que combina


características de um Session Bean e uma escuta/monitor (listener) de mensagens,
permitindo a um componente de negócio receber e tratar mensagens de forma
assíncrona – geralmente, providas pelo JMS. Pode-se dizer que eles são executados
após o recebimento de uma única mensagem do cliente.

Um Contêiner EJB provê um ambiente de execução escalável para executar um


grande número de MDBs concorrentemente. Eles podem ser Stateless, apenas.
Ademais, devem ser invocados por meio de programação por um cliente local ou
remoto. Como são não-persistentes, o cliente não acessa um MDB diretamente, mas
por meio do JMS enviando mensagens para o destinatário.

Session Beans (SB): trata-se de um objeto não-persistente que implementa alguma


lógica de negócio ou fluxo de trabalho no servidor. Eles servem para executar
alguma tarefa em nome de um único cliente e implementam a interface
javax.ejb.SessionBean, podendo implementar Web Services. O Contêiner EJB provê
um ambiente escalável para executar um grande número de SBs concorrentemente.

Um Session Bean encapsula a lógica de negócio que pode ser invocada


programaticamente por um cliente localmente, remotamente ou por meio de
webservices. Os SBs permitem enviar e receber mensagens JMS, porém somente de
forma síncrona. Seus dados não são persistidos em uma base de dados e eles
podem ser de três tipos: stateful, stateless e singleton! Vamos vê-los a seguir:

 Stateless Session Beans: são objetos de negócio que não mantém estado entre
invocações de métodos. Após cada chamada de método, o contêiner pode
escolher destruir, recriar ou manter o Bean. Eles podem ter variáveis de instância

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 82 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

armazenadas em um pool, no entanto elas serão compartilhadas por vários


usuários (entretanto, não de forma concorrente).

Observem o ciclo de vida mostrado acima e percebam que ele tem dois estados:
no estágio Does Not Exist, a instância simplesmente ainda não existe; no estágio
Ready, diversas instâncias podem ser criadas e posicionadas em um pool – prontas
para serem utilizadas. Percebam que ela nunca entra em modo passivo para
economizar recursos.

 Stateful Session Beans: são objetos de negócio que mantém estado entre
chamadas de métodos. São projetados, em geral, para situações que requerem
várias requisições simultâneas ou transações. Aqui as variáveis de instância
representam o estado de uma sessão. Decorem isso: são objetos que mantém o
estado entre as chamadas de métodos.

Observem o ciclo de vida mostrado acima e percebam que ele tem três estados:
no estágio Does Not Exist, a instância simplesmente ainda não existe; no estágio
Ready, a instância está vinculada a um determinado cliente e ocupada em uma
conversação; no estágio Passive, a instância sai da memória principal para a
memória secundária para economizar recursos.

 Singleton Session Beans: são objetos de negócio instanciados uma única vez pela
aplicação e existem por todo ciclo de vida da aplicação. São utilizados quando
um Enterprise Bean é compartilhado e acesso por vários clientes. Percebam que
ele também nunca entra em modo passivo para economizar recursos – assim
como os Stateless Session Beans.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 83 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Observem o ciclo de vida mostrado acima e percebam que ele tem apenas dois
estados: no estágio Does Not Exist, a instância simplesmente ainda não existe; já no
estágio Ready, uma única instância é criada e estará pronta para ter seus métodos
de negócio invocados pelos clientes. Trata-se de um ciclo de vida bastante
simples, concordam?

Por fim, gostaria de falar um pouco sobre o CDI (Context and Dependency Injection).
Alguém sabe o que é Injeção de Dependência? Trata-se de um design pattern que
consiste na passagem de uma classe para outra, sendo que esta última irá utilizá-
(consumi-la), visando eliminar o forte acoplamento geralmente existente entre os
módulos da aplicação e facilitar a realização de testes.

Pessoal, imaginem que eu preciso fazer vários testes unitários. Ora, se toda classe
que eu for testar tiver dependendo de outra classe, eu terei que sair instanciando
tudo para poder fazer um mero teste unitário. Ademais, se eu faço uma estrutura
fracamente acoplada entre classes e módulos, pode-se ganhar em extensibilidade
e reusabilidade.

Basicamente, pode-se implementar a Injeção de Dependência de três formas:


injetam-se as dependências no construtor da classe; injetam-se as dependências no
método setter de alguma propriedade; ou injetam-se as dependências via instância
de abstração – por meio de interfaces ou classes abstratas. A Especificação CDI é o
Padrão Java para injeção de dependência.

Ela fornece uma arquitetura que permite que os componentes Java EE existam
dentro do ciclo de vida de um aplicativo com escopos bem definidos. Além disso,
os serviços CDI permitem que os componentes Java EE, tais como EJB Session Beans
e JSF Managed Beans, sejam injetados e interajam de uma maneira acoplada flexível,
iniciando e observando eventos.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 84 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(FCC – 2011 – TRT/19 – Analista de Sistemas) Tipo de session bean EJB 3.1 cujas
instâncias não têm estado conversacional, isto é, todas as instâncias são
equivalentes quando não estão envolvidas em atender um método invocado
pelo cliente. Trata-se de:

a) Stateful.
b) Stateless.
c) Singleton.
d) Message driven.
e) Entity.

Comentários:

 Stateless Session Beans: são objetos de negócio que não mantém estado entre
invocações de métodos. Após cada chamada de método, o contêiner pode
escolher destruir, recriar ou manter o Bean. Eles podem ter variáveis de instância,
no entanto elas serão compartilhadas por vários usuários (entretanto, não de
forma concorrente).

Conforme vimos em aula, são os Stateless Session Beans que não mantêm estado
(conversacional)!

Gabarito: B

(FCC – – TJ/PE – Analista de Sistemas – D) A especificação EJB 3, que é um


subconjunto da especificação Java EE, define anotações apenas para o tipo bean.

Comentários:

Os descritores de implantação do J2EE 1.4 eram, em geral, complexos e era fácil


cometer erros ao preenchê-los. Em vez disso, a Plataforma Java EE usa Anotações
(Annotations), que são modificadores semelhantes a público e privado. O EJB 3, por

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 85 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

exemplo, define anotações para o tipo de bean, tipo de interface, referências de


recurso, atributos de transação, segurança e muito mais.

Conforme vimos em aula, não são apenas para o tipo Bean.

Gabarito: E

– 1 – TCE/PR – Analista de Sistemas) Sobre o Java EE 6 é correto afirmar:

a) Um message-driven bean encapsula a lógica de negócios e deve ser invocado


por meio de programação por um cliente local ou remoto. Os message-driven
beans são persistentes.

b) Um session bean encapsula a lógica de apresentação e deve ser invocado por


meio de programação apenas por cliente remoto. Para acessar um aplicativo
que é implantado no servidor, o cliente invoca métodos do session bean.

c) Os serviços CDI permitem aos componentes do Java EE, como beans de sessão
EJB e beans gerenciados do JavaServer Faces (JSF), serem injetados e interagir
de maneira acoplada e flexível iniciando e observando eventos.

d) Message-driven beans permitem que aplicações Java EE possam processar


mensagens de forma síncrona. São persistentes e gerenciam a troca de
mensagens com o banco de dados.

e) Os Singleton Session Beans são utilizados na troca de mensagem JMS de


forma assíncrona entre aplicações.

Comentários:

Message-driven Beans (MDB): trata-se de um objeto não-persistente que combina


características de um Session Bean e uma escuta/monitor (listener) de mensagens,
permitindo a um componente de negócio receber e tratar mensagens de forma
assíncrona – geralmente, providas pelo JMS. Pode-se dizer que eles são executados
após o recebimento de uma única mensagem do cliente.

Um Contêiner EJB provê um ambiente de execução escalável para executar um


grande número de MDBs concorrentemente. Eles podem ser Stateless, apenas.
Ademais, devem ser invocados por meio de programação por um cliente local ou

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 86 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

remoto. Como não são persistentes, o cliente não acessa um MDB diretamente, mas
por meio do JMSm enviando mensagens para o destinatário.

(a) Conforme vimos em aula, ele não é persistente.


(d) Conforme vimos em aula, é de forma assíncrona.

Um Session Bean encapsula a lógica de negócio que pode ser invocada


programaticamente por um cliente localmente, remotamente ou por meio de
webservices. Os SBs permitem enviar e receber mensagens JMS, porém somente de
forma síncrona. Seus dados não são persistidos em uma base de dados e eles podem
ser de três tipos: stateful, stateless e singleton! Vamos vê-los a seguir:

(b) Conforme vimos em aula, pode ser invocado de forma local, remota ou por WS.
(e) Conforme vimos em aula, a questão trata do MDBs.

Ela fornece uma arquitetura que permite que os componentes Java EE existam dentro
do ciclo de vida de um aplicativo com escopos bem definidos. Além disso, os serviços
CDI permitem que os componentes Java EE, tais como EJB Session Beans e JSF
Managed Beans, sejam injetados e interajam de uma maneira acoplada flexível,
iniciando e observando eventos.

(c) Conforme vimos em aula, está perfeito!

Gabarito: C

(FCC - 2011 - TRT - 23ª REGIÃO (MT) - Técnico Judiciário - Tecnologia da


Informação) No JEE 6 é a especificação que tem como propósito unir os modelos
de componentes do JSF Managed-Beans com o EJB, proporcionando um
modelo de fácil implementação para aplicações web:

a) Contexts and Dependency Injection (CDI).


b) Bean Validation.
c) Expression Language (EL).
d) Bibliotecas padrão para o JSP.
e) Enterprise JavaBeans (EJB).

Comentários:

Ela fornece uma arquitetura que permite que os componentes Java EE existam dentro
do ciclo de vida de um aplicativo com escopos bem definidos. Além disso, os serviços

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 87 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

CDI permitem que os componentes Java EE, tais como EJB Session Beans e JSF
Managed Beans, sejam injetados e interajam de uma maneira acoplada flexível,
iniciando e observando eventos.

Conforme vimos em aula, trata-se do CDI!

Gabarito: A

(ESAF – 2012 – CGU – Analista de Sistemas) Os serviços de gerenciamento,


oferecidos pelo contêiner EJB (Enterprise JavaBeans), são de:

a) Transações. Persistência. Ciclo de Vida. Segurança.


b) Transições. Pertinência. Ciclo de Vida. Risco
c) Transformações. Persistência. Ciclo de Projeto. Segurança.
d) Transações. Comunicação. Ciclo de Vida. Mercado.
e) Transações. Consistência. Fases. Segurança.

Comentários:

O Contêiner EJB é um recipiente (em tempo de execução) para Enterprise Beans que
são implantados em um Servidor de Aplicação. Ele é criado automaticamente quando
o servidor é inicializado e oferece serviços como: gerenciamento de ciclo de vida,
geração de código, gerenciamento de persistência, gerenciamento de segurança,
gerenciamento de transações, controle de concorrência, etc. Vejamos:

Conforme vimos em aula, trata-se das Transações, Persistência, Ciclo de Vida e


Segurança.

Gabarito: A

(FGV – 2013 – INEA/RJ – Analista de Sistemas – Um dos componentes da


plataforma JEE é o Enterprise JavaBeans (EJB), cujos os principais objetivos são
fornecer um desenvolvimento rápido e simplificado de aplicações Java baseado
em componentes distribuídos, transacionais, seguros e portáveis.

Comentários:

Podemos dizer também que se trata de uma tentativa de padronizar o


encapsulamento da lógica de negócio sob uma única interface – EJB é o núcleo da
Tecnologia Java EE. Bem, esse componente é executado no Container EJB de um

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 88 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Servidor de Aplicação! Professor, o que tem de tão especial nessa tecnologia? Cara,
ela permite o desenvolvimento rápido e simplificado de aplicações complexas.

Conforme vimos em aula, a questão está perfeita!

Gabarito: C

(CESGRANRIO – – PETROBRÁS – Analista de Sistemas – Um descritor de


instalação, localizado dentro de um arquivo Java Archive (JAR), permite que as
propriedades de um EJB sejam mantidas fora do código Java e que o
desenvolvedor do bean torne as informações sobre o bean disponíveis para o
montador da aplicação e para o instalador do bean.

Comentários:

A estrutura de um Enterprise Bean e seu comportamento em tempo de execução são


definidos em um ou mais Descritores de Implantação (Anotações XML).
Programadores criam esses arquivos durante o processo de empacotamento de EJB
e os descritores se tornam parte da implantação do EJB quando o Enterprise Bean é
compilado. O Descritor de Implantação do EJB 3.2 é o ejb-jar.xml.

Conforme vimos em aula, o item está perfeito!

Gabarito: C

(CESGRANRIO – 2011 – PETROBRÁS – Analista de Sistemas – EJB fornece ao


programador Java EE os seguintes tipos fundamentais: Entity Beans, Session
Beans e Message Driven Beans.

Comentários:

Existem três tipos de EJB, mas o Entity Bean é opcional a partir do EJB 3.2. Ele só existe
na especificação por questão de compatibilidade com versões anteriores, mas sabe-
se que ele já foi substituído pela Java Persistence API (JPA). Ademais, como é um
Enterprise JavaBean, eles encapsulam uma lógica de negócio. Pois bem, sobram dois
tipos – Message-driven Beans e Session Beans:

Conforme vimos em aula, ainda existem três tipos fundamentais, mas – a partir do
EJB 3.1 – os Entity Beans foram substituídos pelo JPA (e, hoje, são mantidos como
opcionais por questão de compatibilidade).

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 89 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Gabarito: C

(CESGRANRIO – 2013 – BNDES – Analista de Sistemas) Cada tipo de enterprise


bean passa por diferentes fases durante seu ciclo de vida. Um desses tipos possui
um estado denominado Passivo. Quando um bean entra nesse estado, o
container EJB o desloca da memória principal para a memória secundária. Qual
tipo de bean se comporta dessa maneira?

a) Stateless Session Bean


b) Stateful Session Bean
c) Web Service Bean
d) Singleton Session Bean
e) Message-Driven Bean

Comentários:

Observem o ciclo de vida mostrado acima e percebam que ele tem três estados: no
estágio Does Not Exist, a instância simplesmente ainda não existe; no estágio Ready, a
instância está vinculada a um determinado cliente e ocupada em uma conversação;
no estágio Passive, a instância sai da memória principal para a memória secundária
para economizar recursos.

Conforme vimos em aula, trata-se do Stateful Session Bean.

Gabarito: B

10. (CESGRANRIO – – BNDES – Analista de Sistemas – Enterprise JavaBeans


é um modelo de componentes padronizado, executado no lado do cliente e que
facilita a construção de aplicações distribuídas robustas.

Comentários:

Enterprise JavaBeans (EJB) é uma arquitetura para aplicações corporativas orientada


à transação e baseada em componentes. Além de uma arquitetura, eles são também
componentes server-side que oferecem uma infraestrutura para o desenvolvimento e
implantação de aplicações distribuídas, escaláveis, transacionais, seguras,
concorrentes, persistentes, e portáteis de maneira fácil de acessar e simples de usar.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 90 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Podemos dizer também que se trata de uma tentativa de padronizar o


encapsulamento da lógica de negócio sob uma única interface – EJB é o núcleo da
Tecnologia Java EE. Bem, esse componente é executado no Container EJB de um
Servidor de Aplicação! Professor, o que tem de tão especial nessa tecnologia? Cara,
ela permite o desenvolvimento rápido e simplificado de aplicações complexas.

Conforme vimos em aula, trata-se de um modelo de componentes padronizado, no


entanto eles são server-side.

Gabarito: E

11. (Quadrix - 2011 - DATAPREV - Analista de Tecnologia da Informação -


Desenvolvimento de Sistemas) Analise os itens a seguir sobre JEE e EJB.

I. Um servidor J2EE fornece contêineres EJB e Web.

II. O contêiner EJB gerencia a execução de EJBs em aplicações J2EE.

III. O contêiner Web gerencia a execução de páginas JSP e componentes servlet


em aplicações J2EE.

IV. Um session bean representa um único cliente dentro do servidor J2EE. Para
acessar um aplicativo que é instalado no servidor, o cliente invoca os métodos
do session bean.

Está correto o que se afirma em:

a) I,II, III e IV.


b) I e II, apenas.
c) I, III e IV, apenas.
d) I e IV, apenas.
e) III e IV, apenas.

Comentários:

LOCAL CONTÊINER COMPONENTE

CLIENTE Aplicação Cliente Componentes de Aplicação


Applet Applet

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 91 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Java Servlet
SERVIDOR Web JavaServer Pages (JSP)
JavaServer Faces (JSF)
EJB Enterprise Beans

Session Beans (SB): trata-se de um objeto não-persistente que implementa alguma


lógica de negócio ou fluxo de trabalho no servidor. Eles servem para executar alguma
tarefa em nome de um único cliente e implementam a interface
javax.ejb.SessionBean, podendo implementar Web Services. O Contêiner EJB provê
um ambiente escalável para executar um grande número de SBs concorrentemente.

Conforme vimos em aula, um Servidor de Aplicação Java EE fornece um Contêiner


EJB e um Contêiner Web. De fato, um Session Bean representa um único cliente
dentro do servidor. Todos os itens estão perfeitos!

Gabarito: A

12. (FUNCAB - 2010 - PRODAM- - Analista de TI - Desenvolvimento de Sistemas)


Sejam as seguintes assertivas sobre os tipos de EJB existentes:

I Process beans são excelentes opções para a implementação da lógica do


negócio, dos processos de negócio e dos fluxos de trabalho.

II Entity beans representam os objetos persistentes em uma aplicação EJB.

III Asynchronous beans podem ser usados para o envio (recebimento) de


mensagens assíncronas para (de) outros sistemas.

Marque a alternativa correta em relação às assertivas acima.

a) Apenas a assertiva I é verdadeira.


b) Apenas a assertiva II é verdadeira.
c) Apenas a assertiva III é verdadeira.
d) Todas as assertivas são verdadeiras.
e) Todas as assertivas são falsas.

Comentários:

Session Beans (SB): trata-se de um objeto não-persistente que implementa alguma


lógica de negócio ou fluxo de trabalho no servidor. Eles servem para executar alguma

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 92 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

tarefa em nome de um único cliente e implementam a interface


javax.ejb.SessionBean, podendo implementar Web Services. O Contêiner EJB provê
um ambiente escalável para executar um grande número de SBs concorrentemente.

(I) Conforme vimos em aula, trata-se – na verdade – dos Session Beans.

Existem três tipos de EJB, mas o Entity Bean é opcional a partir do EJB 3.2. Ele só existe
na especificação por questão de compatibilidade com versões anteriores, mas sabe-
se que ele já foi substituído pela Java Persistence API (JPA). Ademais, como é um
Enterprise JavaBean, eles encapsulam uma lógica de negócio. Pois bem, sobram dois
tipos – Message-driven Beans e Session Beans:

(II) Conforme vimos em aula, trata-se – de fato – dos Entity Beans.

Message-driven Beans (MDB): trata-se de um objeto não-persistente que combina


características de um Session Bean e uma escuta/monitor (listener) de mensagens,
permitindo a um componente de negócio receber e tratar mensagens de forma
assíncrona – geralmente, providas pelo JMS. Pode-se dizer que eles são executados
após o recebimento de uma única mensagem do cliente.

(II) Conforme vimos em aula, trata-se – na verdade – dos Message-driven Beans.

Gabarito: B

13. (COPEVE-UFAL - 2012 - ALGÁS - Analista de Tecnologia da Informação – III) EJB


é parte integrante do Java Enterprise Edition e permite o desenvolvimento de
componentes de software reutilizáveis e executáveis em servidores de aplicação,
como, por exemplo, o JBoss.

Comentários:

Em outras palavras, ele deixa o programador livre para se concentrar na lógica de


negócio e na resolução do problema. Assim, o desenvolvedor não precisa mais se
preocupar com codificação envolvendo infraestrutura (segurança, escalabilidade,
entre outros). Ademais, eles são extremamente portáveis e reusáveis. Logo, pode-se
construir aplicações a partir de beans pré-existentes.

Conforme vimos em aula, eles fazem parte do Java EE; são extremamente reusáveis;
e são executados em Servidores de Aplicação – como o JBoss.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 93 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Gabarito: C

14. (COPEVE-UFAL - 2012 - ALGÁS - Analista de Tecnologia da Informação – IV) EJB


é o nome dado para o conjunto de soluções Web em Java, constituído por
Servlets e JSP.

Comentários:

LOCAL CONTÊINER COMPONENTE

CLIENTE Aplicação Cliente Componentes de Aplicação


Applet Applet
Java Servlet
SERVIDOR Web JavaServer Pages (JSP)
JavaServer Faces (JSF)
EJB Enterprise Beans

Conforme vimos em aula, eles são compostos por Enterprise Beans e, não, Servlets
e JPS.

Gabarito: E

15. (FUNCAB - 2010 - PRODAM- - Analista de TI - Desenvolvimento de Sistemas)


Qual interface deve ser usada para criar, procurar e remover objetos EJB?

a) javax.ejb.EJBLocalObject
b) javax.ejb.EJBHome
c) javax.ejb.EJBObject
d) javax.ejb.EntityBean
e) javax.ejb.EJBMetaData.

Comentários:

A Interface EJBObject implementa a interface para acessos remotos e locais, e


funciona como um wrapper, i.e., encapsulando a instância EJB solicitada pelo cliente.
Já a Interface EJBHome faz exatamente a mesma coisa, no entanto ela também é
responsável por auxiliar o contêiner a gerenciar o ciclo de vida de um Bean –
realizando criações, buscas e remoções de objetos.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 94 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Conforme vimos em aula, trata-se da interface javax.ejb.EJBHome.

Gabarito: B

16. (FUMARC - 2012 - -MG - Técnico Judiciário - Analista de Sistemas – ) EJB é


um framework de componentes, baseado na arquitetura MVC, para construção
de interfaces com usuário.

Comentários:

Enterprise JavaBeans (EJB) é uma arquitetura para aplicações corporativas orientada


à transação e baseada em componentes. Além de uma arquitetura, eles são também
componentes server-side que oferecem uma infraestrutura para o desenvolvimento e
implantação de aplicações distribuídas, escaláveis, transacionais, seguras,
concorrentes, persistentes, e portáteis de maneira fácil de acessar e simples de usar.

Conforme vimos em aula, essa definição está incorreta! Na verdade, essa é a


definição de JSF!

Gabarito: E

17. (Instituto AOCP - 2013 - Colégio Pedro II - Técnico de Tecnologia da Informação)


Muitos sistemas corporativos são construídos seguindo a arquitetura definida
pelo padrão Enterprise JavaBeans (EJB). Ao utilizar essa arquitetura, as aplicações
ganham certos benefícios. Qual das alternativas abaixo indica alguns desses
benefícios?

a) Concorrência, multithreading, faces server, conversões, gerenciamento de


telas.

b) Conversões, transações, Persistência, segurança e gerenciamento de telas.

c) Gerenciamento de telas, Persistência, conversões.

d) Transações, Persistência, Segurança, Remotabilidade.

e) Remotabilidade, gerenciamento de telas, faces server.

Comentários:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 95 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

O Contêiner EJB é um recipiente (em tempo de execução) para Enterprise Beans que
são implantados em um Servidor de Aplicação. Ele é criado automaticamente quando
o servidor é inicializado e oferece serviços como: gerenciamento de ciclo de vida,
geração de código, gerenciamento de persistência, gerenciamento de segurança,
gerenciamento de transações, controle de concorrência, etc. Vejamos:

Conforme vimos em aula, estão todos corretos – inclusive a remotabilidade, que é


intrínseco ao componente.

Gabarito: D

ACERTEI ERREI

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 96 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

LISTA DE EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS)


JAVA EE

(CESPE – – INMETRO – Analista de Sistemas) São exemplos de tipos de


componentes de software reusáveis desenvolvidos na plataforma JEE: JSP (Java
Server Page); biblioteca de tags; Servlet; EJB. O grau de reúso provido por esses
componentes, EJBs e JSPs, é usualmente superior a bibliotecas de TAG.

(CESPE – – SERPRO – Analista de Sistemas) A tecnologia Enterprise


JavaBeans (EJB) é uma arquitetura de componentes do tipo cliente que atua na
plataforma J2EE.

(CESPE - 2010 – TCU – Auditor Federal de Controle Externo) A web profile da


plataforma JEE apresenta, em relação ao perfil application server definido em
edições anteriores da plataforma Java, as seguintes vantagens: fornece suporte
para POJOs (Plain Old Java Objects) e Annotations; possui modelo de
empacotamento de componentes mais simples; a configuração dos seus
descritores XML (extensible markup language) é mais fácil; é aderente ao padrão
SOA.

(CESPE - 2010 – TRE/MT – Analista Judiciário – Tecnologia da Informação – 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.

(CESPE - 2010 – TRE/MT – Analista Judiciário – Tecnologia da Informação – D)


Um componente J2EE é uma unidade funcional de software autocontida, escrito
na linguagem de programação Java e executado exclusivamente em servidores.

(CESPE - 2011 – PREVIC – Analista de Sistemas) Em uma aplicação multicamadas


na plataforma Java EE, servlets, JavaServer Faces e JSP consistem em tecnologias
utilizadas na camada web.

(ESAF – 2012 – CGU – Analista de Finanças e Controle) Os níveis da plataforma


J2EE são:

a) Patrocinador. Web. Negócios. Sistemas de Computação Corporativos.


b) Cliente. Web. Negócios. Sistemas de Informação Corporativos.
c) Cliente. Interno. Externo. Negócios.
d) Fornecedor. Web. Político. Sistemas de Informação Camada.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 97 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

e) Cliente. Stakeholders. Negócios. Background corporativo.

(CESGRANRIO – 2008 – BNDES – Analista de Sistemas) Uma aplicação


empresarial contendo componentes EJB e módulos web deverá ser publicada
em um servidor de aplicações compatível com J2EE. No contexto do
empacotamento dessa aplicação para publicação (deploy), é correto afirmar que:

a) não há como juntar componentes EJB e módulos web em uma mesma


aplicação, pois deverão ser publicados separadamente.

b) um arquivo EAR poderá conter arquivos WAR e JAR representativos dos


módulos web e EJB.

c) o tamanho do pacote, em bytes, sempre fica maior que o código original, em


virtude do algoritmo empregado no empacotamento da aplicação em um
arquivo EAR.

d) módulos web não devem ser empacotados, pois isso inviabiliza seu acesso
pela Internet.

e) arquivos JAR servem apenas para empacotar componentes EJB.

(FCC – 2011 – TRT/19 – Analista de Sistemas) A especificação Java EE define os


seguintes componentes:

I. Clientes da aplicação (Application Clients) e applets.


II. Java Servlet, JavaServer Faces e JavaServer Pages.
III. Enterprise Javabeans (EJB).

Os componentes I, II e III rodam, respectivamente, em:

a) cliente, cliente, servidor.


b) servidor, cliente, servidor.
c) cliente, servidor, servidor.
d) servidor, cliente, cliente.
e) cliente, servidor, cliente.

10. (FCC - 2011 - TRT - 1ª REGIÃO (RJ) - Analista Judiciário - Tecnologia da


Informação) J2EE é uma plataforma de programação para servidores na
linguagem de programação Java, que integra uma série de especificações e

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 98 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

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.

11. (FCC - 2010 - TRT - 8ª Região (PA e AP) - Analista Judiciário - Tecnologia da
Informação) O Contêiner J2EE que fornece aos desenvolvedores o ambiente
para rodar Java Server Pages (JSPs) e servlets é:

a) Applet (Applet container).


b) Enterprise Java Beans (EJB).
c) Interface (Interface container).
d) do cliente do aplicativo (Application client container).
e) Web (Web container).

12. (FCC - 2010 - TCE- - Agente da Fiscalização Financeira - Informática - Suporte


de Web) São apenas tipos de componentes executados em servidores Web:

a) Beans, Servlets e J2EE.


b) JVM, Servlets e JSP.
c) Beans, Servlets e JSP.
d) Beans, Swing e JSP.
e) Beans, Swing e JVM.

13. (FCC - 2014 – TRT/2 – Analista de Sistemas) Um contêiner Java EE pode oferecer
serviços como gestão de memória, ciclo de vida e estado de objetos, conexões,
transações, serviços de nomes, segurança, tolerância a falhas, integração,
clustering, alta disponibilidade, confiabilidade e web services. Um servidor Java
EE completo disponibiliza dois tipos principais de contêiner, que são:

a) Contêiner MVC e Contêiner EJB.


b) Applet Container e Web Container.
c) Contêiner Web e Contêiner EJB.
d) Servlet Container e JSP Container.
e) Application Client Container e Web Container.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 99 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

14. (FCC – 2012 – TJ/PE – Analista de Sistemas) Sobre a plataforma Java EE 6, é


correto afirmar:

a) Simplifica a implantação sem a necessidade de descritores de implantação,


com exceção do descritor de implantação exigido pela especificação servlet, o
arquivo web.xml.

b) Necessita do descritor de implantação ejb-jar.xml e entradas relacionadas aos


web services no arquivo web.xml.

c) Faz uso de anotações (annotations). Anotações são modificadores Java,


semelhantes aos públicos e privados, que devem ser especificados nos arquivos
de configuração XML.

d) A especificação EJB 3, que é um subconjunto da especificação Java EE, define


anotações apenas para o tipo bean.

e) Anotações são marcados com um caracter # (cerquilha).

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 100 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

LISTA DE EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS)


JSP
(FCC - 2012 - TRE- - Técnico Judiciário - Programação de Sistemas) As tags
utilizadas em uma página JSP para importar classes de um pacote, habilitar o
uso de bibliotecas de classes (por exemplo, JSTL) e incluir arquivos (por exemplo,
JSP Fragments) são conhecidas como tags:

a) diretivas.
b) de scriptlet.
c) de declaração.
d) de expressão.
e) standard action.

(FCC - - PGE- - Técnico Superior de Análise de Sistemas e Métodos)


Blocos ou trechos de operações em código Java podem ser incluídos em uma
página JSP por meio de:

a) diretiva page.
b) diretiva include.
c) comentário.
d) taglib.
e) scriptlet.

(FCC - 2010 - TRT - 20ª REGIÃO (SE) - Técnico Judiciário - Tecnologia da


Informação) Na diretiva page, do JSP, podemos utilizar o atributo import que
permite:

a) configurar arquivos html.


b) importar figuras.
c) configurar pacotes.
d) importar arquivos htm
e) importar pacotes.

(FCC - 2009 - TRT - 16ª REGIÃO (MA) - Técnico Judiciário - Tecnologia da


Informação) Em JSP, a diretiva taglib define:

a) uma biblioteca de tags para serem usadas na página.


b) um conjunto de classes importadas para serem usadas na página.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 101 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

c) uma nova tag para ser usada na página.


d) uma biblioteca para ser inserida na página.
e) um módulo logicamente coesivo.

(FCC - 2008 - MPE-RS - Técnico em Informática - Área Sistemas) Para incluir


blocos de código Java em uma página JSP utiliza-se a categoria de tags
denominada:

a) diretivas.
b) expressões.
c) declarações.
d) scriptlets.
e) comentários.

(FCC - 2010 - METRÔ- - Analista - Tecnologia da Informação Na diretiva page,


do JSP, utiliza-se o atributo import, que permite:

a) configurar pacotes.
b) importar arquivos html.
c) importar pacotes.
d) configurar arquivos html.
e) importar figuras.

(FCC - 2012 - TRE-SP - Técnico Judiciário - Programação de Sistemas No


JavaServer Pages a tag <%=conteúdo %> é uma:

a) Declaration tag.
b) Directive tag.
c) Scriplet tag.
d) Action tag.
e) Expression tag.

(FCC - 2011 – TRE/AP – Analista de Sistemas – A) Em JSP o conceito de classes e


objetos não leva em conta os princípios de proteção de dados tanto nas
propriedades quanto nos métodos.

(FCC - 2011 – TRE/AP – Analista de Sistemas – C) Em JSP pode-se chamar o


construtor do objeto pai em qualquer parte do código e não há tratamento de
exceções nos métodos nativos.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 102 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

10. (FCC - 2010 – MPU – Analista de Sistemas O contêiner, que executa JSP,
transforma o programa JSP em Servlet, assim, a expressão “<%=
Math.Random()%>” se torna argumento para out.println().

11. (FCC - 2011 – TRE/AP – Analista de Sistemas – A) Para que métodos estáticos de
classes Java sejam executados a partir das funções da linguagem de expressão
em JSP, é necessário que o nome da função coincida com o nome do método
da classe Java.

12. (FCC - 2009 – TCE/SP – Analista de Sistemas Quando se usa classes do tipo
bean, não é necessário instanciar explicitamente um objeto da classe para poder
acessar seus métodos. A instância do objeto é criada pelo elemento especial:

a) <jsp:useJavaBean/>
b) <jsp:useJava/>
c) <jsp:useBean.Java/>
d) <jsp:useJava.Bean/>
e) <jsp:useBean/>

13. (FCC - – TCE/ – Analista de Sistema Nas páginas dinâmicas escritas em


JSP, para declaração de atributos ou métodos, utilizam-se as tags:

a) <% %>
b) <%! %>
c) <%= %>
d) <%-- --%>
e) /* */

14. (FCC – 2012 – TST – Analista de Sistemas Páginas JavaServer Pages são páginas
web:

a) que permitem combinar códigos Java, HTML estático, CSS, XML e JavaScript.
b) escritas em Java, sem código HTML.
c) Interpretadas e não compiladas.
d) Transformadas em bytecode e executadas no cliente.
e) Combinadas com servlets no desenvolvimento exclusivo de páginas estáticas.

15. (FCC – – TRT/3 – Analista de Sistemas NÃO possui uma habilidade de


armazenar e recuperar valores de atributos arbitrários o objeto implícito de JSP:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 103 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

a) Session.
b) Request.
c) Exception.
d) Application.
e) pageContext.

16. (FCC – 2007 – TRF/4 – Analista de Sistemas Uma ferramenta usada


especificamente para gerar páginas dinâmicas de HTML, baseada em
programação Java, é:

a) o WSDL.
b) o DTD.
c) a JCP.
d) a XSL.
e) o JSP.

17. (FCC – 2013 – ALERN – Analista de Sistemas) Em uma aplicação web


desenvolvida utilizando a plataforma Java EE 6, há a seguinte classe Java:

package dados;

public class Cliente {


private String nome;
public Cliente() {
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}

Em uma página JSP da mesma aplicação, para instanciar um objeto desta classe
pode-se utilizar a tag:

a) <jsp:setBean name="cliente" class="dados.Cliente"/>


b) <jsp:setBean id="cliente" class="dados.Cliente"/>
c) <jsp:useBean name="cliente" class="dados.Cliente"/>
d) <jsp:useBean id="cliente" class="dados.Cliente"/>
e) <jsp:newInstance id="cliente" class= "dados.Cliente"/>

18. (FCC - 2012 - MPE-PE - Analista Ministerial - Informática Em uma aplicação web
Java que utiliza JSP, as linhas de código comuns a diversas páginas podem ser

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 104 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

criadas em um arquivo ..I.. , que pode ser incluído nas páginas utilizando-se a
diretiva ..II.. .

As lacunas I e II são preenchidas correta e respectivamente por

a) I. Javascript, <%@page
II. file="caminho/nome_do_arquivo"%>.
b) I. Java Servlet, <%@include
II. uri="caminho/nome_do_arquivo"%>.
c) I. JSTL, <%@taglib
II. uri="caminho/nome_do_arquivo"%>.
d) I. JSF, <%@page
II. import="caminho/nome_do_arquivo%>.
e) I. JSPF, <%@include
II. file="caminho/nome_do_arquivo"%>.

19. (FCC - 2012 - MPE-PE - Analista - Tecnologia da Informação) Em uma página


JSP, para importar uma classe de um pacote e para fazer referência a uma
biblioteca (como, por exemplo, JSTL) podem ser utilizadas, respectivamente, as
diretivas:

a) <%@page import=“pacote.Classe”%> e <%@taglib uri=“caminho/biblioteca”


prefix=“prefixo”%>.
b) <%@include import= “pacote.Classe”%> e <%@taglib
uri=“caminho/biblioteca”%>.
c) <%import= “pacote.Classe”%> e <%taglib uri=“caminho/biblioteca”%>.
d) <%@page include= “pacote.Classe”%> e <%@library
uri=“caminho/biblioteca”%>.
e) <%@import class= “pacote.Classe”%> e <%@taglib
urli=“caminho/biblioteca”%>.

(FCC - 2012 - TRE- - Analista Judiciário - Análise de Sistemas <%@ page


atributo1="valor1" atributo2="valor2"... %> é a sintaxe típica da diretiva Page, em
JSP. Um de seus atributos, se definido para true, indica o processamento normal
do servlet quando múltiplas requisições podem ser acessadas simultaneamente
na mesma instância de servlet. Trata-se do atributo:

a) Extends.
b) Import.
c) isThreadSafe.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 105 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

d) Session.
e) AutoFlush.

21. (FCC - - MPE-RS - Técnico em Informática - Área Sistemas) Se uma super


classe de servlet deve ser gerada, será definida na diretiva page do JSP por meio
do atributo:

a) info.
b) extends.
c) session.
d) import.
e) autoFlush.

(FGV - – Senado Federal – Analista de Sistemas) No contexto do


Desenvolvimento WEB JAVA, analise as afirmativas a seguir, a respeito da
tecnologia JSP ("JavaServer Page"):

I. Disponibiliza uma tecnologia simples e rápida para criar páginas que exibem
conteúdo gerado dinamicamente, define a interação entre o servidor e a página
JSP, e descreve o formato e sintaxe da página.

II. Emprega servlets - programas escritos na linguagem Java e executados no


servidor, em oposição aos applets, executados no browser do cliente.

III. Utiliza páginas JSP, com extensão .jsp ou .jspx, criadas pelo desenvolvedor da
web e que incluem especificações JSP e tags customizadas, em combinação com
outras tags estáticas, HTML ou XML.

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.

(CESGRANRIO – 2010 – BNDES – Analista de Sistemas É característica de um


arquivo JSP a:

a) compilação em um servlet.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 106 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

b) presença maciça de código Assembly.


c) impossibilidade de inclusão de comentários.
d) execução exclusiva em sistemas Windows.
e) execução exclusiva em sistemas Linux.

24. (NCE – – BNDES – Analista de Sistemas Considere as seguintes afirmativas


sobre JSP e Servlets:

I. É possível usar uma página JSP para gerar um arquivo de imagem do tipo JPEG,
GIF ou PNG.
II. Um servlet é executado no servidor, ao passo que uma página JSP é executada
no browser do cliente.
III. Uma página gerada por um servlet não pode conter código Javascript.
IV. Uma página JSP é executada no servidor enquanto que um servlet é
executado no browser do cliente.

A quantidade de afirmativas corretas é:

a) 0;
b) 1;
c) 2;
d) 3;
e) 4.

(CESGRANRIO – 2012 – CEF – Analista de Sistemas) Um objeto implícito é


utilizado dentro de páginas JSP sem que haja necessidade de declará-lo. Que
objeto é esse?

a) Integer.
b) queryString.
c) getParameter.
d) String.
e) Request.

(FMP-RS - 2013 - MPE-AC - Analista - Tecnologia da Informação) No contexto


de arquitetura Java Enterprise Edition, ___________________ é uma tecnologia que
simplifica o processo de gerar páginas dinamicamente, pois permite embutir Java
diretamente em uma página HTML ou XML.

Assinale a única alternativa que completa corretamente a lacuna acima:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 107 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

a) Java Virtual Machine (JVM)


b) JavaServer Pages (JSP)
c) Java ME (Java Micro Edition)
d) Enterprise JavaBeans (EJB)
e) Java Persistence API (JPA)

27. (CESGRANRIO - 2011 - FINEP - Analista - Desenvolvimento de Sistemas Qual


ação padrão do JSP interrompe o processamento das requisições pela página
corrente e as direciona para outro componente Web?

a) <jsp:invoke>
b) <jsp:include>
c) <jsp:forward>
d) <jsp:plugin>
e) <jsp:call>

(ESAF - - ANA - Analista Administrativo - Tecnologia da Informação -


Desenvolvimento O mecanismo de inclusão, que permite o conteúdo dinâmico
ser incluído em uma JSP em tempo de solicitação, é denominado:

a) Ação <jsp:plugin>.
b) Ação <jsp:include>.
c) Diretiva include.
d) Diretiva Page.
e) Diretiva taglib.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 108 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

LISTA DE EXERCÍCIOS COMENTADOS (FCC)


SERVLETS
(FCC - 2007 - TRE-SE - Analista Judiciário - Tecnologia da Informação) 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.

(FCC – 2011 – TRT - 1ª REGIÃO – Analista de Sistemas Em relação às tecnologias


Java, é INCORRETO afirmar que as Servlets:

a) deixam para a API utilizada na sua escrita a responsabilidade com o ambiente


em que elas serão carregadas e com o protocolo usado no envio e recebimento
de informações.

b) fornecem um mecanismo simples e consistente para estender a


funcionalidade de um servidor Web.

c) podem ser incorporadas em vários servidores Web diferentes.

d) podem rodar em qualquer plataforma sem a necessidade de serem reescritas


ou compiladas novamente.

e) são carregadas apenas uma vez e, para cada nova requisição, a servlet gera
uma nova thread.

(FCC – 2010 – DPE/SP – Analista de Sistemas) 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.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 109 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(FCC – 2 – TRE/CE – Analista de Sistemas) 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.

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.

(FCC – 3 – DPE/SP – Analista de Sistemas) Um Servlet Contêiner controla o


ciclo de vida de uma servlet onde são invocados três métodos essenciais: um
para inicializar a instância da servlet, um para processar a requisição e outro para
descarregar a servlet da memória. Os itens a seguir representam, nessa ordem,
o que ocorre quando um usuário envia uma requisição HTTP ao servidor:

I. A requisição HTTP recebida pelo servidor é encaminhada ao Servlet Contêiner


que mapeia esse pedido para uma servlet específica.

II. O Servlet Contêiner invoca o método init da servlet. Esse método é chamado
em toda requisição do usuário à servlet não sendo possível passar parâmetros
de inicialização.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 110 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

III. O Servlet Contêiner invoca o método service da servlet para processar a


requisição HTTP, passando os objetos request e response. O método service não
é chamado a cada requisição, mas apenas uma vez, na primeira requisição do
usuário à servlet.

IV. Para descarregar a servlet da memória, o Servlet Contêiner chama o método


unload, que faz com que o garbage collector retire a instância da servlet da
memória.

Está correto o que se afirma em:

a) I, II, III e IV.


b) I, apenas.
c) I e IV, apenas.
d) II, III e IV, apenas.
e) II e III, apenas.

(FCC – 6 – BACEN – Analista de Sistemas) Para ser um servlet, uma classe


deve estender a classe I e exceder as ações “doGet” ou “doPost” (ou ambas),
dependendo se os dados estão sendo enviados por uma ação GET ou por uma
ação POST. Estes métodos tomam dois argumentos: um II e um III em sua
execução. Preenchem correta e respectivamente I, II e III:

(FCC - 2007 - TRE-SE - Analista Judiciário - Tecnologia da Informação Em Java,


a passagem de dados de um formulário do cliente para o servlet pode ocorrer
por meio do uso do método:

a) import()
b) return()
c) catch()
d) getParameter()
e) nameComponent()

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 111 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(FCC - 2012 - TRE- - Programador de computador A tecnologia Java Servlet


é baseada na construção de classes servlet que executam no servidor recebendo
dados de requisições do cliente, processando esses dados, opcionalmente
acessando recursos externos como bancos de dados, e respondendo ao cliente
com conteúdo no formato HTML.

Com relação ao tema, analise as asserções a seguir:

Embora as servlets sejam muito boas no que fazem, tornou-se difícil responder
ao cliente com conteúdo no formato HTML.

PORQUE

Geralmente quem trabalha com o conteúdo HTML é o web designer que


normalmente não é programador Java experiente. Ao misturar HTML dentro de
uma servlet, torna-se muito difícil separar as funções de web designer e
desenvolvedor Java. Além disso, é difícil fazer alterações no conteúdo HTML, pois
para cada mudança, uma recompilação da servlet tem que acontecer. Para
contornar as limitações da tecnologia Java Servlet a Sun Microsystems criou a
tecnologia JavaServer Pages (JSP).

Acerca dessas asserções, é correto afirmar:

a) Tanto a primeira quanto a segunda asserções são proposições falsas.

b) A primeira asserção é uma proposição verdadeira e a segunda uma


proposição falsa.

c) A primeira asserção é uma proposição falsa e a segunda uma proposição


verdadeira.

d) As duas asserções são proposições verdadeiras, mas a segunda não é a


justificativa correta da primeira.

e) As duas asserções são proposições verdadeiras e a segunda é a justificativa


correta da primeira.

(FCC - 2013 - -RN - Analista Legislativo - Analista de Sistemas No Java EE 6


os métodos doPost e doGet podem ser sobrescritos em uma servlet criada na
aplicação para receberem as requisições vindas de páginas HTML. Quando

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 112 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

sobrescritos na servlet, eles substituem seus métodos ancestrais existentes na


classe abstrata:

a) GenericServlet.
b) HttpServlet.
c) HttpServletRequest.
d) HttpServletResponse.
e) HttpServletObject.

10. (FCC - 2009 - TRT - 16ª REGIÃO (MA) - Técnico Judiciário - Tecnologia da
Informação Para ler os parâmetros de inicialização do contexto de um servlet
utiliza-se o método:

a) String getInitParameter(String).
b) Enumeration getInitParameterNames().
c) InputStream getResourceAsStream().
d) setAttribute(String nome, Object).
e) Object getAttribute(String nome).

11. (FMP/RS – 2013 – MPE/AC – Analista de Sistemas No contexto da arquitetura


Java Enterprise Edition, __________________ são, em termos de estrutura, classes
Java especializadas que se assemelham muito à estrutura dos applets Java,
porém rodando em um servidor web e não no do cliente.

Assinale a única alternativa que completa corretamente a lacuna acima.

a) Java ME (Java Micro Edition)


b) portlets
c) Java Persistence API (JPA)
d) Enterprise JavaBeans (EJB)
e) servlets

12. (VUNESP – 3 – FUNDUNESP – Analista de Sistemas) Na plataforma J2EE, a


classe ServletRequest define:

a) a estrutura do objeto principal do Servlet, permitindo que sejam feitas


requisições ao Servlet.
b) métodos que permitem que o Servlet faça requisições de forma assíncrona.
c) métodos que permitem que o Servlet faça requisições aos clientes.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 113 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

d) propriedades que permitem que seja alterado o comportamento do Servlet.


e) um objeto que fornecerá informações sobre a requisição feita pelo cliente ao
Servlet.

13. (CESGRANRIO – 2006 – DECEA – Analista de Sistemas – A Servlets e arquivos


JSP são executados no WEB Container.

14. (CESGRANRIO – – DECEA – Analista de Sistemas – B) Applets e Servlets são


compilados e executados no servidor.

15. (CESGRANRIO – 2009 – BNDES – Analista de Sistemas – A) Ao estudar as


especificações e frameworks Java EE, um Analista de Sistemas concluiu que 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.

16. (CESGRANRIO – 2009 – BNDES – Analista de Sistemas – B) Ao estudar as


especificações e frameworks Java EE, um Analista de Sistemas concluiu que no
container WEB, uma página JSP transforma-se em um servlet, que é compilado,
carregado e inicializado.

17. (CESGRANRIO – 2012 – PETROBRÁS – Analista de Sistemas Seja o código a


seguir:

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.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 114 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

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.

É correto APENAS o que se afirma em:

a) I
b) II
c) III
d) I e III
e) II e III

18. (ESAF – – CGU – Analista de Sistemas – 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.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 115 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

19. (CIAAR - 2012 - CIAAR - Oficial Temporário - Análise de Sistemas O método


chamado para liberar quaisquer recursos mantidos pelo servlet, quando o
contëiner de servlets termina o servlet, denomina-se:

a) get.
b) post.
c) destroy.
d) prerender.

(AOCP - 2012 - BRDE - Analista de Sistemas - Desenvolvimento de Sistemas -


(Prova TIPO 4) Sobre Servlets, analise as assertivas e assinale a alternativa que
aponta as corretas.

I. Servlets são implementadas como arquivos de classe da Linguagem Java.

II. Servlets são independentes de plataforma, de modo que podem ser


executadas em diferentes servidores, em diferentes sistemas operacionais.

III. As Servlets podem acessar qualquer uma das APIs Java. Uma Servlet pode
usar a API JDBC para acessar e armazenar dados ou para acessar objetos
remotos.

IV. Ao criar uma Servlet, somos obrigados a reescrever nove métodos presentes
à interface que foi implementada.

a) Apenas I e II.
b) Apenas I e III.
c) Apenas II e III.
d) Apenas I, II e III.
e) I, II, III e IV.

21. (VUNESP - 2013 - FUNDUNESP - Analista Programador Júnior Para criar um


Servlet que processará as requisições HTTP na plataforma J2EE, deve-se:

a) criar uma classe que implemente a interface Servlet.


b) criar uma classe que estenda a classe HttpServlet.
c) implementar o método processHttpHeader.
d) instanciar a classe Servlet, passando para o parâmetro requestType o valor
Servlet.HTTP_REQUEST.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 116 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

e) invocar o método Servlet.service(Servlet.HTTP_REQUEST) antes do


processamento da requisição.

(FEPESE - 2013 - JUCESC - Analista Técnico em Gestão de Registro Mercantil -


Analista de Informática) Assinale a alternativa que defne corretamente um
Servlet.

a) É um método da JPA utilizado na persistência assíncrona de dados.


b) É um componente que roda do lado do cliente para tratar problemas de
comunicação.
c) É uma classe Java utilizada para estender as capacidades de um servidor.
d) É uma biblioteca JBOSS que emula servidores no lado do cliente.
e) É uma JSP que possibilita a execução de código no lado do cliente, mesmo
sem comunicação com um servidor.

(VUNESP - 2013 - FUNDUNESP - Analista Programador Júnior) Considere o


Servlet a seguir:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ClasseServlet extends HttpServlet {

public void doGet(HttpServletRequest request,


HttpServletResponse response){
response write html
response write body
response write Servlet em operação
response write body
response write html
}
}

Sobre o código do Servlet, é possível afirmar que:

a) ao ser executado por um contêiner de Servlet, será exibida uma tela em


branco no navegador.

b) ao ser executado por um contêiner de Servlet, será exibida a mensagem


“Servlet em operação!” na tela do navegador.

c) não pode ser compilado, pois a classe HttpServletResponse não possui o


método write.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 117 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

d) não pode ser compilado, pois HttpServlet é uma interface e, portanto, não
pode ser estendida por uma classe.

e) o conteúdo exibido na tela do navegador não será codificado corretamente,


pois a codificação da página não foi informada.

24. (CESGRANRIO - - -RO - Analista Judiciário - Tecnologia da Informação


O método da interface javax.servlet.http.HttpSession, utilizado para finalizar uma
sessão de usuário em um container J2EE, é

a) cancel( )
b) delete( )
c) destroy( )
d) invalidate( )
e) release( )

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 118 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

(FCC – 2011 – TRT/19 – Analista de Sistemas) Tipo de session bean EJB 3.1 cujas
instâncias não têm estado conversacional, isto é, todas as instâncias são
equivalentes quando não estão envolvidas em atender um método invocado
pelo cliente. Trata-se de:

a) Stateful.
b) Stateless.
c) Singleton.
d) Message driven.
e) Entity.

(FCC – – TJ/PE – Analista de Sistemas – D) A especificação EJB 3, que é um


subconjunto da especificação Java EE, define anotações apenas para o tipo bean.

– 1 – TCE/PR – Analista de Sistemas) Sobre o Java EE 6 é correto afirmar:

a) Um message-driven bean encapsula a lógica de negócios e deve ser invocado


por meio de programação por um cliente local ou remoto. Os message-driven
beans são persistentes.

b) Um session bean encapsula a lógica de apresentação e deve ser invocado por


meio de programação apenas por cliente remoto. Para acessar um aplicativo
que é implantado no servidor, o cliente invoca métodos do session bean.

c) Os serviços CDI permitem aos componentes do Java EE, como beans de sessão
EJB e beans gerenciados do JavaServer Faces (JSF), serem injetados e interagir
de maneira acoplada e flexível iniciando e observando eventos.

d) Message-driven beans permitem que aplicações Java EE possam processar


mensagens de forma síncrona. São persistentes e gerenciam a troca de
mensagens com o banco de dados.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 119 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

e) Os Singleton Session Beans são utilizados na troca de mensagem JMS de


forma assíncrona entre aplicações.

(FCC - 2011 - TRT - 23ª REGIÃO (MT) - Técnico Judiciário - Tecnologia da


Informação) No JEE 6 é a especificação que tem como propósito unir os modelos
de componentes do JSF Managed-Beans com o EJB, proporcionando um
modelo de fácil implementação para aplicações web:

a) Contexts and Dependency Injection (CDI).


b) Bean Validation.
c) Expression Language (EL).
d) Bibliotecas padrão para o JSP.
e) Enterprise JavaBeans (EJB).

(ESAF – 2012 – CGU – Analista de Sistemas) Os serviços de gerenciamento,


oferecidos pelo contêiner EJB (Enterprise JavaBeans), são de:

a) Transações. Persistência. Ciclo de Vida. Segurança.


b) Transições. Pertinência. Ciclo de Vida. Risco
c) Transformações. Persistência. Ciclo de Projeto. Segurança.
d) Transações. Comunicação. Ciclo de Vida. Mercado.
e) Transações. Consistência. Fases. Segurança.

(FGV – 2013 – INEA/RJ – Analista de Sistemas – Um dos componentes da


plataforma JEE é o Enterprise JavaBeans (EJB), cujos os principais objetivos são
fornecer um desenvolvimento rápido e simplificado de aplicações Java baseado
em componentes distribuídos, transacionais, seguros e portáveis.

(CESGRANRIO – – PETROBRÁS – Analista de Sistemas – Um descritor de


instalação, localizado dentro de um arquivo Java Archive (JAR), permite que as
propriedades de um EJB sejam mantidas fora do código Java e que o
desenvolvedor do bean torne as informações sobre o bean disponíveis para o
montador da aplicação e para o instalador do bean.

(CESGRANRIO – 2011 – PETROBRÁS – Analista de Sistemas – EJB fornece ao


programador Java EE os seguintes tipos fundamentais: Entity Beans, Session
Beans e Message Driven Beans.

(CESGRANRIO – 2013 – BNDES – Analista de Sistemas) Cada tipo de enterprise


bean passa por diferentes fases durante seu ciclo de vida. Um desses tipos possui

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 120 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

um estado denominado Passivo. Quando um bean entra nesse estado, o


container EJB o desloca da memória principal para a memória secundária. Qual
tipo de bean se comporta dessa maneira?

a) Stateless Session Bean


b) Stateful Session Bean
c) Web Service Bean
d) Singleton Session Bean
e) Message-Driven Bean

10. (CESGRANRIO – – BNDES – Analista de Sistemas – Enterprise JavaBeans


é um modelo de componentes padronizado, executado no lado do cliente e que
facilita a construção de aplicações distribuídas robustas.

11. (Quadrix - 2011 - DATAPREV - Analista de Tecnologia da Informação -


Desenvolvimento de Sistemas) Analise os itens a seguir sobre JEE e EJB.

I. Um servidor J2EE fornece contêineres EJB e Web.

II. O contêiner EJB gerencia a execução de EJBs em aplicações J2EE.

III. O contêiner Web gerencia a execução de páginas JSP e componentes servlet


em aplicações J2EE.

IV. Um session bean representa um único cliente dentro do servidor J2EE. Para
acessar um aplicativo que é instalado no servidor, o cliente invoca os métodos
do session bean.

Está correto o que se afirma em:

a) I,II, III e IV.


b) I e II, apenas.
c) I, III e IV, apenas.
d) I e IV, apenas.
e) III e IV, apenas.

12. (FUNCAB - 2010 - PRODAM- - Analista de TI - Desenvolvimento de Sistemas)


Sejam as seguintes assertivas sobre os tipos de EJB existentes:

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 121 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

I Process beans são excelentes opções para a implementação da lógica do


negócio, dos processos de negócio e dos fluxos de trabalho.

II Entity beans representam os objetos persistentes em uma aplicação EJB.

III Asynchronous beans podem ser usados para o envio (recebimento) de


mensagens assíncronas para (de) outros sistemas.

Marque a alternativa correta em relação às assertivas acima.

a) Apenas a assertiva I é verdadeira.


b) Apenas a assertiva II é verdadeira.
c) Apenas a assertiva III é verdadeira.
d) Todas as assertivas são verdadeiras.
e) Todas as assertivas são falsas.

13. (COPEVE-UFAL - 2012 - ALGÁS - Analista de Tecnologia da Informação – III) EJB


é parte integrante do Java Enterprise Edition e permite o desenvolvimento de
componentes de software reutilizáveis e executáveis em servidores de aplicação,
como, por exemplo, o JBoss.

14. (COPEVE-UFAL - 2012 - ALGÁS - Analista de Tecnologia da Informação – IV) EJB


é o nome dado para o conjunto de soluções Web em Java, constituído por
Servlets e JSP.

15. (FUNCAB - 2010 - PRODAM- - Analista de TI - Desenvolvimento de Sistemas)


Qual interface deve ser usada para criar, procurar e remover objetos EJB?

a) javax.ejb.EJBLocalObject
b) javax.ejb.EJBHome
c) javax.ejb.EJBObject
d) javax.ejb.EntityBean
e) javax.ejb.EJBMetaData.

16. (FUMARC - 2012 - -MG - Técnico Judiciário - Analista de Sistemas – ) EJB é


um framework de componentes, baseado na arquitetura MVC, para construção
de interfaces com usuário.

17. (Instituto AOCP - 2013 - Colégio Pedro II - Técnico de Tecnologia da Informação)


Muitos sistemas corporativos são construídos seguindo a arquitetura definida

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 122 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

pelo padrão Enterprise JavaBeans (EJB). Ao utilizar essa arquitetura, as aplicações


ganham certos benefícios. Qual das alternativas abaixo indica alguns desses
benefícios?

a) Concorrência, multithreading, faces server, conversões, gerenciamento de


telas.

b) Conversões, transações, Persistência, segurança e gerenciamento de telas.

c) Gerenciamento de telas, Persistência, conversões.

d) Transações, Persistência, Segurança, Remotabilidade.

e) Remotabilidade, gerenciamento de telas, faces server.

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 123 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

GABARITO DOS EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS)


JAVA EE

1 2 3 4 5 6 7 8 9 10
E E E E E C B B C B
11 12 13 14 15 16 17 18 19 20
E C C A

GABARITO DOS EXERCÍCIOS COMENTADOS (FCC)


JSP

1 2 3 4 5 6 7 8 9 10
A E E A D C E E E C
11 12 13 14 15 16 17 18 19 20
E E A A C E D E A C
21 22 23 24 25 26 27 28 29 30
B D A B E B C B

GABARITO DOS EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS)


SERVLETS
1 2 3 4 5 6 7 8 9 10
E E C E E C B E C D
11 12 13 14 15 16 17 18 19 20
B C C D B A A E B D
21 22 23 24 25 26 27 28 29 30
D E B A

GABARITO DOS EXERCÍCIOS COMENTADOS (DIVERSAS BANCAS)


EJB

1 2 3 4 5 6 7 8 9 10
B E C A A C C C B E
11 12 13 14 15 16 17 18 19 20
A B C E B E D

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 124 de 125


Analista Judiciário – Análise de Sistemas – TST.2017
Curso de Engenharia de Software e Desenvolvimento
Prof. Diego Carvalho – Aula 14

Prof. Diego Carvalho www.estrategiaconcursos.com.br Pág. 125 de 125

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy