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

Apostila Java Web

Enviado por

bandtec ads
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)
18 visualizações173 páginas

Apostila Java Web

Enviado por

bandtec ads
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

Aula 05

Desenvolvimento p/ TRE-RJ (Técnico


Judiciário - Programação de Sistema)
Com Videoaulas - 2020

Autores:
Pedro Henrique Chagas Freitas,
Raphael Henrique Lacerda
Aula 05
25 de Fevereiro de 2020

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05

Sumário

JEE e JAKARTA EE........................................................................................................................................ 3

1 - JEE e o futuro do JAVA Web ................................................................................................................. 3

2 - JAKARTA EE ........................................................................................................................................ 9

Questões Comentadas ............................................................................................................................... 11

Container web: Servlets ............................................................................................................................. 23

Questões Comentadas: Servlets ................................................................................................................ 30

JavaServer Faces (JSF)................................................................................................................................


1354451 50

FACELETS .............................................................................................................................................. 59

FILTROS ................................................................................................................................................. 60

Questões JSF .............................................................................................................................................. 60

JavaServer Pages (JSP) ............................................................................................................................... 81

Declarações ............................................................................................................................................ 85

Expressões .............................................................................................................................................. 85

Scriptlets ................................................................................................................................................ 86

Comentários ........................................................................................................................................... 87

Ações ...................................................................................................................................................... 87

Diretivas ................................................................................................................................................. 88

Questões: JavaServer Pages (JSP) .............................................................................................................. 92

JavaServer Pages Standard Tag Library (JSTL) ........................................................................................ 119

Questões: JavaServer Pages Standard Tag Library (JSTL)........................................................................ 120

React JS .................................................................................................................................................... 128

QUESTÕES: React JS ............................................................................................................................... 129

ANGULAR ................................................................................................................................................ 130


1

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

AngularJS ..............................................................................................................................................131

Angular (2,3,4..) .................................................................................................................................... 134

QUESTÕES: ANGULAR E ANGULARJS ................................................................................................... 136

LISTA DE Questões JEE ............................................................................................................................ 138

LISTA DE Questões SERVLETS ................................................................................................................ 142

LISTA DE Questões JSF ............................................................................................................................ 151

LISTA DE QUESTÕES JSP ........................................................................................................................ 159

LISTA DE QUESTÕES JSTL ...................................................................................................................... 168

LISTA DE QUESTÕES ANGULAR e ANGULARJS..................................................................................... 169

Gabarito .................................................................................................................................................... 171

GABARITO: JAVA EE ............................................................................................................................. 171

GABARITO: SERVLETS.......................................................................................................................... 171

GABARITO: JSF ..................................................................................................................................... 171

GABARITO: JSTL .................................................................................................................................. 172

GABARITO: ANGULAR E ANGULARJS................................................................................................. 172

GABARITO: JSP .................................................................................................................................... 172

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

JEE E JAKARTA EE

1 - JEE e o futuro do JAVA Web

Vamos lá! 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; 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:

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

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.
4

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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:

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 (JASPIC) 1.0 Containers (JASPIC) 1.1
Java Authorization Service Provider Contract for Java Authorization Service Provider Contract for
Containers (JACC) 1.4 Containers (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 -
6

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 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).

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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:

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

2 - JAKARTA EE

Pessoal vamos lá! Esse tema tem tudo para ser o novo alvo de cobranças em concursos, principalmente nos
próximos anos, onde as bancas vão explorar temas ainda não explorados. Vamos então esclarecer os
principais pontos sobre o Jakarta EE (Futuro do JAVA EE).

Já alguns anos tem sido discutido o futuro do Java na web. A razão disso é que desde 2018 o JEE tem migrado
das mãos da ORACLE para as mãos da fundação Eclipse, que trouxe a mudança de nome de Java EE para
Jakarta EE.

Em suma, tudo começa assim com o: Em 2001 foi idealizado e doado a um consórcio formado por
importantes empresas do segmento de tecnologia, a famosa IDE Eclipse. Em 2004 nasceu a Eclipse
Foundation, uma fundação sem fins lucrativos, mas como uma hierarquia bem definida, possibilitando que
novos parceiros chegassem e apoiassem os atuais e futuros projetos. Já em meado de 2018 foi anunciada a
transição do JEE para o Jakarta EE. Tudo foi ocorrendo na seguinte ordem:

O Jakarta nasceu como um importante projeto, elaborado pela Apache Foundation. Entre os projetos que
faziam parte do Jakarta tínhamos o Apache Tomcat, Struts, Commons, Velocity, Maven, entre vários
outros. Entretanto, o Jakarta foi descontinuado em 2011 e os projetos remanescentes se mantiveram
separados desde então. Por ter tido uma contribuição importante no mundo Java, o nome Jakarta foi

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.
9

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

sugerido como substituição ao Java EE e generosamente doado pela Apache Foundation a Eclipse
Foundation.

O grande objetivo então do Jakarta EE é manter o Java corporativo sempre atual em relação as tendências
e demandas do mercado. Evitando assim, que longos e burocráticos processos tomem muito tempo e
atrasem o lançamento de atualizações e novas especificações, o que estava acontecendo nos últimos anos
sob o comando da Oracle. Embora a Oracle não seja mais responsável pelo Java EE, a empresa se
comprometeu a ter uma participação ativa no futuro do Jakarta EE. Isso é importante porque para você
rodar qualquer software baseado em Java EE ou Jakarta EE é necessário ter uma máquina virtual Java (JRE)
e a Oracle ainda tem os direitos sobre ela.

Outro processo importante que depende diretamente da participação da Oracle é o de migração do então
Java EE 8 para a fundação Eclipse. Será a partir do Java EE 8 que o Jakarta EE será desenvolvido. A ideia é
lançar o Jakarta EE 8 e para esse processo a Oracle já cedeu alguns projetos importantes como o Grizzly,
OpenMQ, Mojarra, JMS, Tyrus, JAX-RS, Jersey, WebSocket API, JSON Processing. Conforme informações
serão trinta projetos migrados para a Eclipse Foundation pela Oracle.

Embora o Jakarta EE passe a ser a nova especificação da plataforma EE Java, a marca que comandará os
projetos envolvidos foi nomeada como EE4J (Eclipse Enterprise for Java). Ela contemplará o Jakarta EE, o
novo órgão EFSP (Eclipse Foundation Specification Process) em substituição ao JCP e também as normas
TCK para a certificação das implementações. Este processo de migração do Java EE para o EE4J foi tão
significativo que duas importantes empresas fazem parte do grupo de apoiadores e colaboradores do
projeto Jakarta EE, são elas a Microsoft e a Pivotal, esta última, detentora dos direitos sobre o Spring
Framework. Além delas, outras grandes empresas de tecnologia são membros do projeto Jakarta EE como
a RedHat, IBM, Fujitsu, Cloud Bees, SAP, Vaadin, entre outras.

A migração JEE para Jakarta atualmente, segundo o eclipse.org está em andamento e inclui várias etapas,
com o seguinte status:

 Verificação e limpeza o código fonte existente


 A transferência real do código, incluindo problemas
 Configuração de Tarefas para Construir Tudo na Infraestrutura Eclipse
 Alteração das coordenadas Maven de todos os componentes para Jacarta. *
 Lançamento do Eclipse GlassFish 5.1 , uma versão totalmente construída a partir da origem
transferida no Eclipse que passou pelos TCKs do Java EE 8 existentes (e a certificou oficialmente )
 Projetando um novo processo de certificação e especificação de Jacarta e Eclipse para substituir o
JCP e uma nova licença de especificação
 Transferência da fonte Java EE TCK
 Construção a partir do TCK transferido origina uma série de binários do TCK sob a nova licença de
especificação

10

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

 Transformação de todos os projetos que constituem APIs Java EE 8 em projetos específicos


e substituindo termos de marca registrada da Oracle , ou termos negociados de outra forma entre
Oracle e Eclipse, para não serem mais usados com os novos termos em vigor
 Adição de novas declarações de escopo aos projetos de especificação
 Executando TCKs recém-compilados e licenciados em relação às APIs atualizadas e solicitações de
certificação de arquivo do Jakarta EE 8 em compilações em etapas
 Liberação os jars da API em estágios

Quando tudo estiver pronto, teremos um lançamento da API do Jakarta EE 8 que possui uma assinatura
idêntica à API do Java EE 8 de onde se origina, mas que é totalmente construído, licenciado, testado e
certificado via / pela Eclipse Foundation e seus processos.

QUESTÕES COMENTADAS

1. (CESPE – 2009 – 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

2. (CESPE – 2005 – SERPRO – Analista de Sistemas) A tecnologia Enterprise JavaBeans (EJB) é uma
arquitetura de componentes do tipo cliente que atua na plataforma J2EE.

Comentários:
11

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

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

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

3. (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:

Lembrando: 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.

12

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

4. (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:

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

5. (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:

13

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

6. (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.

14

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Gabarito: C

7.(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).

Gabarito: B

8. (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:

15

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

9. (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.


16

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

17

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

d) JDBC, Hibernate e JPA.


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! Muitas pessoas me perguntam: “Professor, Hibernate
não é integrante do J2EE?”. Galera, o Hibernate é um framework que implementa a especificação JPA. Logo,
ele não faz parte do J2EE ou Java EE. Beleza?

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:

18

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

Gabarito: E

12. (FCC - 2010 - TCE-SP - 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:

19

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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:

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

20

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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;

(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!

21

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

(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

22

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

CONTAINER WEB: 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)!4 ;)

4
Oracle afirma: “A servlet can almost be thought of as an applet that runs on the server side”.
23

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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!

24

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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


{
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:

25

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 HttpServlet5. 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 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.

5
Seu nome completo é: javax.servlet.http.HttpServlet.
26

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

==14aad3==

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
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.

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 para vocês verem como é possível receber dados de entrada do
usuário e manipulá-los dinamicamente.

27

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 getParameter6! Bem, ele retorna o valor do parâmetro de uma requisição

6
Já o Método getInitParameter retorna o valor do parâmetro de inicialização.
28

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

como uma String; E por que é 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 a imagem acima, o Servidor recebe uma Requisição HTTP e a repassa para o Servlet
Container. Já existe uma instância7 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, 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!

7
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.
29

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

QUESTÕES COMENTADAS: SERVLETS

1. (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

2. (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.
30

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

3. (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

31

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

4. (FCC – 2012 – 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.

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 requisição? Se sim, delega-se a requisição para essa
32

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

5. (FCC – 2013 – 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.
33

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

34

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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) 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

6. (FCC – 2006 – 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
35

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

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

7. (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

8. (FCC - 2012 - TRE-CE - 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.

36

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

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
37

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

9. (FCC - 2013 - AL-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
38

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

uma String; E por que é 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, 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 – 2013 – 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.
39

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 – 2006 – DECEA – Analista de Sistemas – B) Applets e Servlets são compilados e
executados no servidor.

40

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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, 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.
41

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Comentários:

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

Gabarito: C

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.
42

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

É 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.

(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 – 2008 – 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:
43

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

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

Gabarito: 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

20. (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.

44

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

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:

45

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 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.

46

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Gabarito: B

22. (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.

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

23. (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){

47

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

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.

48

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 - 2008 - TJ-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( )

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

49

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

JAVASERVER FACES (JSF)

Galera, vou contar uma historinha para vocês! Durante muito tempo, usuários se acostumaram com
Aplicações Desktop. O que é isso, professor? É aquele programinha que você baixa e instala em seu
computador local, acessando diretamente bancos de dados ou gerenciadores de arquivos. Para criar essas
aplicações eram utilizadas as tecnologias Visual Basic, Delphi, Swing (Java), etc.

Pois é, esses programas em geral não necessitam de um navegador para rodar! Eles são construídos
como um conjunto de componentes oferecidos pela plataforma de desenvolvimento para cada sistema
operacional e estão associados a eventos, ações ou procedimentos que executam lógicas de negócio.
Muitas das vezes, são componentes muito ricos.

No entanto, sabe-se que Aplicações Desktop sofrem com problemas de manutenção e


gerenciabilidade. Vejam que as regras de negócio rodam no cliente – aliás, uma cópia integral da aplicação
está no cliente! Logo, se deu pau em alguma funcionalidade, eu tenho que propagar as alterações para todas
as máquinas que têm o programa, visto que as regras de negócio estão no cliente!

Para resolver esse tipo de problema, surgiram as Aplicações Web. Elas rodam em um servidor central onde
os usuários podem acessá-las por meio de um navegador (Chrome, Firefox, etc) e um protocolo HTTP.
Nesse caso, todas as regras de negócio da aplicação se encontram no Servidor, sendo muito mais fácil
gerenciá-las e, eventualmente, depurá-las.

Ora, deu pau em alguma funcionalidade, eu vou lá no servidor central e conserto – não preciso ir em todas
as máquinas que têm a aplicação! Claro, nem tudo são flores, é necessário conhecer diversas tecnologias,
linguagens, scripts, entre outros – além de seguir um modelo de requisição/resposta. Agora vejam que
interessante, eu posso combinar esses dois universos.

É possível unir as melhores características desses dois mundos, com componentes ricos, abstraindo
protocolos, etc. Vocês já ouviram falar da Arquitetura Model-View-Controller (MVC)? Pois é, trata-se de uma
arquitetura que divide os componentes de uma aplicação em camadas independentes (Modelo, Visão
e Controle)! O Controle faz o meio campo entre a Visão e o Modelo.

Bem, ela foi amplamente utilizada em Aplicações Desktop até que um dia alguém pensou: Poxa, por que
não utilizá-la na web? E resolveu assim fazê-lo! Como assim? Alguém decidiu então combinar a Arquitetura
50

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

MVC com o modelo tradicional de desenvolvimento de páginas web dinâmicas! Qual seria esse modelo,
professor? Trata-se da utilização de Servlets e JSP!

O resultado foi a criação do framework Struts! Ele era uma implementação da Arquitetura MVC para
desenvolvimento de páginas web dinâmicas! Bacana? Esse framework fez tanto sucesso que a Sun
Microsystems junto com uma comunidade de desenvolvedores resolveu criar uma especificação
padronizada baseada nesse framework, denominado Java Server Faces (JSF).

Cuidado com as questões de prova que afirmam que se trata apenas de uma especificação – ele é tanto
uma especificação quanto um framework8. Cuidado também com aquelas que afirmam que só trata de
interfaces gráficas. Ele trata de componentes de interface com usuário – as interfaces gráficas (GUI) são um
tipo de interface com o usuário (UI). Essa tecnologia consiste em dois aspectos:

Primeiro, uma API para representar componentes e gerenciar seus estados; manipular eventos; realizar
validação server-side; converter dados; definir navegação de páginas; suportar internacionalização e
acessibilidade; e prover extensibilidade. Segundo, taglibs (bibliotecas de tags) para adicionar
componentes a páginas web e conectar componentes a objetos server-side.

Galera, ele provê um modelo de programação bem definido e robusto, além de fornecer diversas taglibs
– inclusive o desenvolver pode criar sua própria taglib. Essas taglibs contêm manipuladores de tags que
implementam os componentes de tags. Essas características facilitam significativamente o peso da
construção e manutenção de Aplicações Web com interfaces de usuário server-side.

O Modelo de Componentes JSF define três taglibs:

 HTML: possui componentes que representam diversos elementos HTML.


o Namespace: xmlns:h=”http://java.sun.com/jsf/html”
 CORE: responsável por internacionalização, validação, conversão e outros.
o Namespace: xmlns:f=”http://java.sun.com/jsf/core”
 FACELETS: fornece tags para criar templates para aplicações web.
o Namespace: xmlns:ui=”http://java.sun.com/jsf/facelets”

8
As implementações da especificação mais famosas são Oracle Mojarra e o Apache MyFaces.
51

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Com o mínimo de esforço é possível criar uma página web; adicionar componentes em uma página ao
adicionar tags de componentes; vincular componentes de uma página a dados server-side; conectar
eventos gerados por componentes ao código da aplicação; salvar e restaurar o estado da aplicação além da
vida da requisição do servidor; e reutilizar e estender componentes por meio de customização.

Podemos definir a Tecnologia JSF como uma tecnologia que nos permite criar Aplicações Web utilizando
componentes visuais pré-prontos, de forma que o desenvolvedor não se procupe com Javascript ou HTML.
A funcionalidade fornecida por uma Aplicação JSF é similar a qualquer outra Aplicação Web. Ela possui
as seguintes partes:

 Um conjunto de Páginas Web em que são colocados os componentes;


 Um conjunto de tags para adicionar componentes à página web;
 Um conjunto de Managed Beans (ou Beans Gerenciados);
 Um Descritor de Implantação Web (web.xml);
 Um ou mais arquivos de configuração (Ex: faces-config.xml);
 Um conjunto de objetos customizados (Ex: validadores, conversores, etc);
 Um conjunto de tags customizadas para representar objetos customizados;

Pessoal, o JSF oferece diversos validadores embutidos para validar seus Componentes UI – essa
validação ocorre no lado do servidor. Eles podem ser invocados a partir de sua tag específica e podem
validar o tamanho de um campo, tipo de entrada, range de um valor numérico, expressão regular, entre
outros. É possível, inclusive, criar o seu próprio validador customizado.

52

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Observem a imagem acima! Uma Página Web myfacelet.xhtml é construída utilizando tags de Componentes
JSF. Essas tags são usadas para adicionar componentes à visão (myView), que é uma representação server-
side da página. Além dos componentes, uma página web pode referenciar objetos como listeners,
validadores, conversores, entre outros.

Em resposta a uma requisição do cliente, uma página web é renderizada por um contêiner web que
implementa a tecnologia JSF! Uma de suas grandes vantagens é que ele oferece uma clara separação
entre comportamento e apresentação. Ele mapeia solicitações HTTP para o tratamento de eventos
específicos dos componentes e gerencia os componentes como objetos stateful no servidor.

Outro importante objetivo é aproveitar componentes e conceitos já familiares aos programadores, sem
limitá-los a uma tecnologia de script ou a uma linguagem de marcação específicas. Isso possibilita a
utilização de diferentes tecnologias de apresentação, a criação de componentes próprios a partir das classes
de componentes, e a geração de saídas para diversos dispositivos (Ex: Celular, Tablet).

O JSF fornece uma maneira fácil e amigável para criar Aplicações Web por meio de, basicamente, três
atividades:

 Criar uma Página Web (usando tags de componentes);


 Desenvolver Managed Beans;
 E mapear a instância FacesServlet.
53

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Aqui vamos fazer uma pequena pausa! Professor, o que é um Managed Bean? São apenas POJOs com a
annotation @ManagedBeans. Pensem no seguinte: meu sistema precisa escrever “Olá, pessoal” no navegador.
Bem, esse texto não precisa de nenhuma informação, não acessa nada, é muito simples – basta colocá-lo
diretamente na camada de visão e mostrá-lo!

E se eu tenho que dar um “Olá, X”, em que X é o nome da pessoa que acessou o sistema? Em outras palavras,
se eu acessei, deve mostrar “Olá, Diego”; se o Messi acessou, deve mostrar “Olá, Messi”! Para tal, eu vou
precisar acessar o banco de dados, buscar informações do sistema, talvez saber o horário de acesso, i.e.,
vou precisar interagir com o modelo, lógica de negócio ou componentes visuais.

Ora, nós prezamos pela separação de responsabilidades! Logo, esse código ficará em uma classe de modelo
e, jamais, na visão. Os Managed Beans são os objetos que intermediam a comunicação entre a visão e o
modelo. Eles são registrados no descritor de implantação (ou por meio de annotations) e tem seu ciclo de
vida controlado e gerenciado pelo próprio JSF!

As principais tarefas de um Managed Bean (ou Backing Beans) é fornecer dados que serão exibidos nas telas;
receber dados enviados nas requisições; executar tarefas de acordo com as ações dos usuários; validar
dados. E o que seria a FacesServlet? É uma servlet que gerencia o ciclo de vida do processamento de
requisições de aplicações web que estão utilizando JSF para construir a interface com o usuário.

Elas são responsáveis por receber as requisições da View, redirecioná-las para os Managed Beans do
Model e respondê-las. Devemos configurá-la no descritor de implantação web.xml das aplicações web – ele
faz a conexão entre Web Container e Web Application. Após isso, devemos configurar também o arquivo
de configuração faces-config.xml, referente a uma aplicação específica que utiliza JSF.

Ele é responsável por descrever e configurar elementos e subelementos que compõem o projeto, tais como
conversores, managed beans, validadores, fluxo da comunicação, configurações de localização e o
mapeamento da navegação – ademais, ele faz a conexão entre View e Controller. Vamos resumir essa
diferença entre esses dois arquivos?

O faces-config.xml é mais específico, tratando de regras e mapeamento de navegação; definição de managed


beans; configuração de detalhes de internacionalização; entre outros. Já o web.xml é mais genérico, tratando

54

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

da especificação de detalhes de segurança; configuração de páginas de erro; mapeamento e declaração de


servlets e filtros; configuração de parâmetros de inicialização; entre outros.

O faces-config.xml tem sido rapidamente substituído por annotations – novidade do JSF 2.0. Essa versão
trouxe: suporte a facelets; utilização de templates para a aplicação; simplificação do desenvolvimento de
componentes; suporte nativo a Ajax (f:ajax); navegação implícita e condicional; suporte ao Método GET;
adição de novos escopos (Flash e View); composição de componentes customizados; etc.

O JSF1 tinha os escopos Request (Default), Session e Application. A partir do JSF2, ganhamos o View,
Flash, None e Custom. O @RequestScoped vive o tempo do ciclo de uma Requisição/Resposta HTTP; o
@ViewScoped vive enquanto houver interação com a mesma view, i.e., enquanto persistir a mesma página;
o @ApplicationScoped persiste toda a duração da aplicação web.

O @SessionScoped persiste o tempo que durar uma sessão, i.e., até invocar um método inválido ou o
tempo acabar (lembrar de um carrinho de compras); o @FlashScoped dura um redirecionamento de
página; o @NoneScoped indica que o escopo não está definido para a aplicação; por fim, o
@CustomScoped é um escopo personalizado.

55

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Agora eu queria falar uma curiosidade interessante! Existe um Padrão de Projeto Java EE chamado
Front Controller. Nesse padrão, todas as requisições do usuário são recebidas pelo mesmo componente.
Dessa forma, tarefas que devem ser realizadas em todas as requisições podem ser implementadas por esse
componente – evitando repetição de código e facilitando a manutenção do sistema.

56

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

No JSF, esse componente é o FacesServlet! Como mostra a imagem da estrutura geral de uma Aplicação
JSF, o processamento de uma requisição enviada por um navegador começa na FacesServlet. Observem
que ela controla a execução das seis etapas do ciclo de vida, interagindo com o Model (Entidades e
repositórios) e com as Views (Telas, Templates, etc).

Os Managed Beans estão à disposição da FacesServlet durante todo o processamento da requisição.


Nas etapas Render Response e Restore View, a ela aciona os Managed Beans para recuperar os dados que
devem ser usados na construção ou reconstrução da árvore de componentes. Na etapa Update Model, a
FacesServlet armazena nos Managed Beans os dados já convertidos e validados.

Na etapa Invoke Application, a FacesServlet dispara um método em um Managed Bean responsável pelo
processamento da regra de negócio correspondente à requisição atual. Todas as regras de negócio são
implementadas no modelo, que também administra os dados da aplicação. Os Managed Beans acionam
o modelo para executar regras de negócio, recuperar dados administrados pelo modelo, etc.

As telas da aplicação são definidas na camada de visão. A FacesServlet acessa essa camada toda vez que
necessita construir ou reconstruir a árvore de componentes de uma determinada tela. Isso ocorre nas etapas
Restore View e Render Response. Aliás, vamos ver agora rapidamente – porque não cai muuuuito em
provas – o ciclo de vida do JSF! Ele é apresentado na imagem abaixo:

57

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Pelo fato do framework JSF ser talvez uma evolução da linguagem JSP, o ciclo de vida do JSF é parecido
com o do JSP. Por exemplo, quando o cliente faz uma Requisição HTTP para a página, o servidor responde
com a página traduzida para HTML. Porém, ele é dividido em múltiplas fases, apresentando um modelo de
componentes de interface com usuário mais sofisticado.

 Restore View: restauram-se os objetos e estruturas de dados que representam a visão. Claro, se essa
for a primeira visita à página, deve-se criar a visão. Quando o JSF cria e renderiza uma página JSF, ele
cria objetos de interface com o usuário para cada componente da visão. Os componentes são
armazenados em uma árvore de componentes e o estado da visão é salvo para requisições futuras.

 Apply Request Values: qualquer dado que for enviado como parte da requisição é passado para os
componentes apropriados. Essas visões atualizam seus estados com os valores dos dados. Dados
podem vir de formulários, cookies enviados com a requisição ou por meio de cabeçalhos da requisição.
Alguns dados são validados e, se houver erro, são adicionados à FacesServlet.

 Process Validation: os dados que foram submetidos com o formulário são validados (se já não o foram
anteriormente). Assim como na fase anterior, isso ainda não atualiza os objetos de negócio na aplicação.
Isso ocorre porque, se a Aplicação atualizar os objetos de negócio junto com a validação dos dados e
uma parte da validação falhar, o modelo será atualizado com um estado inválido.

 Update Model Values: após todas essas validações terminarem, os objetos de negócio que criam a
aplicação são atualizados com os dados validados da requisição. Ademais, se qualquer um dos dados
precisar ser convertido em um formato diferente para atualizar o modelo (Ex: String para Data), a
conversão ocorrerá nessa fase.

 Invoke Application: durante essa fase, os métodos de ação de qualquer botão ou link que foi ativado
serão chamados. Além disso, todos os eventos que foram gerados durante as fases anteriores e que
ainda não tenham sido manipulados são passados para a Aplicação Web para que ela possa concluir
qualquer outro processamento da requisição que seja necessário.

 Render Response: os Componentes UI de resposta são renderizados e a resposta é enviada para o


cliente. O estado dos componentes é salvo de modo que a árvore de componente possa ser restaurada
quando o cliente enviar outra requisição. Em suma, essa fase renderizará a página de resposta
requisitada pelo usuário.

Lembrando que FacesContext (javax.faces.context) é o objeto utilizado para representar todas as


informações de contexto associadas ao processamento da requisição de entrada e à criação da resposta
correspondente. Ela é criada pela FacesServlet, que é executada antes do início do ciclo de vida de
processamento de requisições e é responsável por gerenciar a execução das etapas do ciclo de vida.

58

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Vamos falar um pouquinho sobre Component Binding! O que é isso, professor? Cara, essa é uma nova
característica da tecnologia JSF que permite associar componentes de uma view e controlar todos os
aspectos desse componente. Como assim? Algumas vezes, nós temos um componente visual que nos
oferece alguma informação (Ex: um mapa em que o usuário escolhe estado).

Bem, em geral, nós necessitamos apenas do valor, i.e., o usuário escolheu ‘DF’. O Component Binding
permite que nós tenhamos acesso ao componente como um todo. Para que? Nós, eventualmente, podemos
querer manipular o componente dinamicamente, por exemplo. Assim, é possível acessar métodos do
componente – se você quiser, pode até mudar seu comportamento.

FACELETS

Pessoal, tem uma característica do JSF que é extremamente importante: Facelets! Trata-se de uma
linguagem de declaração de página poderosa, apesar de leve. Antigamente, utiliza-se a tecnologia JSP
como camada de visão do JSF, porém ele não suporta todas as características disponíveis na Plataforma
Java EE – sendo considerada obsoleta para JSF!

Facelets é uma parte da especificação JSF e também a tecnologia de apresentação preferida para
construir aplicações JSF – substituindo JSP. Ela suporta todos os componentes de UI do JSF e constrói
Árvores de Componentes; e Views (utilizando Templates HTML). Um tipo especial de template são os
Componentes Compostos, que agem como um componente. Ademais, é bom destacar algumas
características:

 Utilização de XHTML para criação de Páginas Web;


 Suporte a Facelets Tag Libraries (além do JSFTL e JSTL);
 Suporte a Linguagens de Expressão (Expression Languages);
 Suporte a templates para componentes e páginas.

Em suma, a utilização de Facelets reduz o tempo e esforço gastos no desenvolvimento e implantação.


Em geral, Facelets Views são criadas com Páginas HTML e XHTML (criadas em conformidade com
Transation DTD). Além disso, elas utilizam linguagens de expressão para referenciar propriedades e
Managed Beans. Para desenvolver uma Aplicação Facelets simples, é necessário:

 Desenvolver um Managed Bean;


59

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

 Criar páginas usando tags de componentes;


 Definir a navegação das páginas;
 Mapear a instância javax.faces.webapp.FacesServlet;
 Adicionar declarações de Managed Beans.

FILTROS

Em JSF, um Filtro (do inglês, Filter) é um objeto capaz de realizar tarefas de filtragem tanto na requisição
de um recurso (Servlet ou conteúdo estático), ou na resposta desse recurso, ou ambos – para tal, eles
utilizam o método doFilter. Todo Filtro possui acesso a um objeto FilterConfig, do qual ele pode obter seus
parâmetros de inicialização; e a uma ServletContext, do qual ele pode carregar recursos.

Os Filtros são configurados nos descritores de implantação de uma Aplicação Web. Ele possibilita o
gerenciamento de todas as Requisições HTTP do Servidor, capaz de filtrar o endereço que está sendo
acessado. Dessa forma, quando um usuário acessar uma determinada URL proibida, pode-se
imediatamente redirecioná-lo para outro endereço, antes que a resposta seja dada ao cliente.

Para tal, deve-se implementar a interface javax.servlet.Filter! Existem dezenas de aplicações para filtros,
além da mostrada acima. Podemos ter filtros de autenticação; filtros de log e auditoria; filtros de conversão
de imagens; filtros de compressão de dados; filtros de criptografia; filtros de tokenização; filtros XSLT;
filtros que acionam eventos de acesso a recursos, entre outros.

QUESTÕES JSF

1. (FCC – 2013 – TRT/12 – Analista de Sistemas) Considere as instruções abaixo encontradas em um


arquivo de uma aplicação que utiliza JSF:

<managed-bean>
<managed-bean-name>func</managed-bean-name>
<managed-bean-class>bean.Funcionario</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

Essas instruções indicam a existência de um bean gerenciado (classe Funcionario.java) no pacote bean
que poderá ser referenciado nas páginas JSP por meio da palavra func. O arquivo correto no qual essas
instruções são colocadas é o:

a) context.xml.

60

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

b) web-inf.xml.
c) web.xml.
d) faces-config.xml.
e) config-bean.xml.

Comentários:

Elas são responsáveis por receber as requisições da View, redirecioná-las para os Managed Beans do Model e
respondê-las. Devemos configurá-la no descritor de implantação web.xml das aplicações web – ele faz a conexão
entre Web Container e Web Application. Após isso, devemos configurar também o arquivo de configuração
faces-config.xml, referente a uma aplicação específica que utiliza JSF.

Conforme vimos em aula, o responsável é o faces-config.xml.

Gabarito: D

2. (CESPE - 2009 - SECONT-ES - Auditor do Estado – Tecnologia da Informação) O JSF é um framework


web embasado em interface gráfica, capaz de renderizar componentes e manipular eventos em
aplicações web no padrão Java EE, no qual os componentes JSF são orientados a eventos. O JSF fornece,
ainda, mecanismos para conversão, validação, execução de lógica de negócios e controle de navegação.

Comentários:

Primeiro, uma API para representar componentes e gerenciar seus estados; manipular eventos; realizar
validação server-side; converter dados; definir navegação de páginas; suportar internacionalização e
acessibilidade; e prover extensibilidade. Segundo, taglibs (bibliotecas de tags) para adicionar componentes
a páginas web e conectar componentes a objetos server-side.

Conforme vimos em aula, a questão está perfeita!

Gabarito: C
61

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

3. (FCC - 2012 - TJ-PE - Programador de computador) Em uma aplicação que utiliza JSF, para configurar
o fluxo de comunicação presente na servlet de controle, é utilizado um arquivo de configuração:

a) webfaces.xml.
b) actionform.xml.
c) faces-config.xml.
d) webcontext.xml.
e) serverconfig.xml.

Comentários:

Elas são responsáveis por receber as requisições da View, redirecioná-las para os Managed Beans do Model e
respondê-las. Devemos configurá-la no descritor de implantação web.xml das aplicações web – ele faz a conexão
entre Web Container e Web Application. Após isso, devemos configurar também o arquivo de configuração
faces-config.xml, referente a uma aplicação específica que utiliza JSF.

Ele é responsável por descrever e configurar elementos e subelementos que compõem o projeto, tais como
conversores, managed beans, validadores, fluxo da comunicação, configurações de localização e o
mapeamento da navegação – ademais, ele faz a conexão entre View e Controller. Vamos resumir essa
diferença entre esses dois arquivos?

Conforme vimos em aula, trata-se do faces-config.xml.

Gabarito: C

4. (CESPE - 2010 - TRE-BA - Analista Judiciário - Análise de Sistemas) Entre os itens que o padrão Java
Server Faces (JSF) utiliza, estão os componentes, os eventos e a navegabilidade.

Comentários:

62

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Primeiro, uma API para representar componentes e gerenciar seus estados; manipular eventos; realizar
validação server-side; converter dados; definir navegação de páginas; suportar internacionalização e
acessibilidade; e prover extensibilidade. Segundo, taglibs (bibliotecas de tags) para adicionar componentes a
páginas web e conectar componentes a objetos server-side.

Conforme vimos em aula, a questão está perfeita!

Gabarito: C

5. (FCC – 2013 – TRT/9 – Analista de Sistemas) Uma aplicação utilizando o framework JSF e a IDE
NetBeans gera automaticamente dois componentes essenciais assim descritos:

I. É responsável por receber requisições dos componentes View do MVC, redirecioná-las para os beans
gerenciados (managed beans) do componente Model do MVC e responder a essas requisições.

II. É o arquivo principal de configuração de uma aplicação web que utiliza o framework JSF. É responsável
por descrever os elementos e sub-elementos que compõem o projeto, tais como as regras de
navegação, beans gerenciados, configurações de localização etc.

As descrições I e II referem-se, respectivamente, aos componentes:

a) servlet Controller.java e ao arquivo faces_config.xml


b) FaceletServlet e ao arquivo web_config.xml.
c) FacesServlet e ao arquivo faces-config.xml.
d) servlet Controller e ao arquivo web-config.xml.
e) servlet Facelet e ao arquivo web.xml.

Comentários:

Elas são responsáveis por receber as requisições da View, redirecioná-las para os Managed Beans do Model e
respondê-las. Devemos configurá-la no descritor de implantação web.xml das aplicações web – ele faz a conexão
entre Web Container e Web Application. Após isso, devemos configurar também o arquivo de configuração
faces-config.xml, referente a uma aplicação específica que utiliza JSF.

63

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Ele é responsável por descrever e configurar elementos e subelementos que compõem o projeto, tais como
conversores, managed beans, validadores, fluxo da comunicação, configurações de localização e o
mapeamento da navegação – ademais, ele faz a conexão entre View e Controller. Vamos resumir essa
diferença entre esses dois arquivos?

Conforme vimos em aula, o primeiro é o FacesServlet e o segundo faces-config.xml.

Gabarito: C

6. (CESPE - 2012 - ANAC - Analista Administrativo - Área 4) A validação de dados de um componente


pode ser uma das funções de um backing bean, em uma aplicação JSF.

Comentários:

As principais tarefas de um Managed Bean (ou Backing Beans) é fornecer dados que serão exibidos nas telas;
receber dados enviados nas requisições; executar tarefas de acordo com as ações dos usuários; validar dados. E
o que seria a FacesServlet? É uma servlet que gerencia o ciclo de vida do processamento de requisições de
aplicações web que estão utilizando JSF para construir a interface com o usuário.

Conforme vimos em aula, Backing Beans são Managed Beans, e essa pode ser uma de suas funções.

Gabarito: C

7. (FCC – 2012 – TST – Analista de Sistemas) O framework JavaServer Faces (JSF) é utilizado no
desenvolvimento de aplicações web que utiliza o design pattern MVC. O JSF:

a) disponibiliza controles pré-construídos e código para manipular eventos, estimulando o uso de código
Java convencional no componente View do MVC.

64

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

b) recebe requisições dos componentes da View do MVC, através do servlet FaveServerServlet.

c) armazena os mapeamentos das ações e regras de navegação em projetos JSF nos arquivos WEB-
INF.xml e FACES-CONFIG.xml.

d) possui bibliotecas que suportam Ajax (Asynchronous JavaScript And XML).

e) provê um conjunto de tags limitado para criar somente páginas HTML/XHTML.

Comentários:

Ora, nós prezamos pela separação de responsabilidades! Logo, esse código ficará em uma classe de modelo
e, jamais, na visão. Os Managed Beans são os objetos que intermediam a comunicação entre a visão e o
modelo. Eles são registrados no descritor de implantação (ou por meio de annotations) e tem seu ciclo de vida
controlado e gerenciado pelo próprio JSF!

(a) Conforme vimos em aula, está incorreto, i.e., é desestimulado colocar código convencional (regras de
negócio) na View, mas – sim – no Model.

Elas são responsáveis por receber as requisições da View, redirecioná-las para os Managed Beans do
Model e respondê-las. Devemos configurá-la no descritor de implantação web.xml das aplicações web – ele faz
a conexão entre Web Container e Web Application. Após isso, devemos configurar também o arquivo de
configuração faces-config.xml, referente a uma aplicação específica que utiliza JSF.

(b) Conforme vimos em aula, de fato recebe requisições dos componentes da View, no entanto o nome da
servlet é FacesServlet.

65

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Elas são responsáveis por receber as requisições da View, redirecioná-las para os Managed Beans do Model e
respondê-las. Devemos configurá-la no descritor de implantação web.xml das aplicações web – ele faz a conexão
entre Web Container e Web Application. Após isso, devemos configurar também o arquivo de configuração
faces-config.xml, referente a uma aplicação específica que utiliza JSF.

Ele é responsável por descrever e configurar elementos e subelementos que compõem o projeto, tais como
conversores, managed beans, validadores, fluxo da comunicação, configurações de localização e o
mapeamento da navegação – ademais, ele faz a conexão entre View e Controller. Vamos resumir essa
diferença entre esses dois arquivos?

(c) Conforme vimos em aula, o mapeamento de ações e regras de navegação é responsabilidade somente
do faces-config.xml.

O faces-config.xml têm sido rapidamente substituído por annotations – novidade do JSF 2.0. Essa versão
trouxe: suporte a facelets; utilização de templates para a aplicação; simplificação do desenvolvimento de
componentes; suporte nativo a Ajax (f:ajax); navegação implícita e condicional; suporte ao Método GET;
adição de novos escopos (Flash e View); composição de componentes customizados; etc.

(d) Conforme vimos em aula, a questão está perfeita! O Ajax não só é suportado, esse suporte é nativo.

Galera, ele provê um modelo de programação bem definido e robusto, além de fornecer diversas taglibs –
inclusive o desenvolver pode criar sua própria taglib. Essas taglibs contêm manipuladores de tags que
implementam os componentes de tags. Essas características facilitam significativamente o peso da construção
e manutenção de Aplicações Web com interfaces de usuário server-side.

(e) Conforme vimos em aula, não se trata de um conjunto limitado de tags. É possível criar suas próprias
tags!

Gabarito: D

66

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

8. (CESPE - 2013 - SERPRO - Analista - Desenvolvimento de Sistemas) O JSF provê uma linguagem de
expressão exclusiva para acesso a objetos armazenados em bancos de dados.

Comentários:

Em suma, a utilização de Facelets reduz o tempo e esforço gastos no desenvolvimento e implantação. Em geral,
Facelets Views são criadas com Páginas HTML e XHTML (criadas em conformidade com Transationl DTD).
Além disso, elas utilizam linguagens de expressão para referenciar propriedades e Managed Beans. Para
desenvolver uma Aplicação Facelets simples, é necessário:

Conforme vimos em aula, ela serve para referenciar propriedades e Managed Beans.

Gabarito: E

9. (FCC – 2012 – TST – Analista de Sistemas) Para criar as páginas XHTML de uma aplicação JSF é possível
utilizar um conjunto de bibliotecas de tags JSF. Algumas dessas bibliotecas são HTML, Core e Facelets.
Considere os fragmentos de códigos abaixo, que utilizam tags dessas bibliotecas:

67

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

A correlação correta entre o fragmento de código e a biblioteca de tags utilizada é:

a) I-Facelets, II-HTML e III-Core.


b) I-Core, II-Facelets, e III-HTML.
c) I-HTML, II-Core, e III-Facelets.
d) I-HTML, II-Facelets, e III-HTML.
e) I-HTML, II-HTML, e III-Core.

Comentários:

O Modelo de Componentes JSF define três taglibs:

HTML: possui componentes que representam diversos elementos HTML.

o Namespace: xmlns:h=”http://java.sun.com/jsf/html”

CORE: responsável por internacionalização, validação, conversão e outros.

o Namespace: xmlns:f=”http://java.sun.com/jsf/core”

FACELETS: fornece tags para criar templates para aplicações web.

o Namespace: xmlns:ui=”http://java.sun.com/jsf/facelets”

Conforme vimos em aula, temos que olhar os namespaces. Dessa forma, o primeiro fragmento é referente
a FACELETS; o segundo fragmento é referente a HTML; e o terceiro referente a CORE.

Gabarito: A

10. (CESPE - 2010 – TCU – Analista de Sistemas) No desenvolvimento de conteúdos para apresentação, o
uso de facelets traz vantagens em relação ao uso de JSP. Uma delas é a maior modularidade, com o uso
de templates e componentes compostos (composite).

68

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Comentários:

Facelets é uma parte da especificação JSF e também a tecnologia de apresentação preferida para
construir aplicações JSF – substituindo JSP. Ela suporta todos os componentes de UI do JSF e constrói Árvores
de Componentes; e Views (utilizando Templates HTML). Um tipo especial de template são os Componentes
Compostos, que agem como um componente. Ademais, é bom destacar algumas características:

Conforme vimos em aula, ela faz uso de Templates e Componentes Compostos, que aumentam a
modularidade e a reusabilidade.

Gabarito: C

11. (FCC - 2012 - TJ-PE - Analista Judiciário - Análise de Sistemas) No JSF, o componente Controller do
MVC é composto por uma classe servlet, por arquivos de configuração e por um conjunto de
manipuladores de ações e observadores de eventos. Essa servlet é chamada de:

a) ControllerServlet.
b) Facelet.
c) HttpServlet.
d) FacesConfig.
e) FacesServlet.

Comentários:

As principais tarefas de um Managed Bean (ou Backing Beans) é fornecer dados que serão exibidos nas telas;
receber dados enviados nas requisições; executar tarefas de acordo com as ações dos usuários; validar dados.
E o que seria a FacesServlet? É uma servlet que gerencia o ciclo de vida do processamento de requisições de
aplicações web que estão utilizando JSF para construir a interface com o usuário.

Conforme vimos em aula, trata-se da FacesServlet.

69

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Gabarito: E

12. (CESPE - 2012 – TJ/AL – Analista de Sistemas – B) Em um aplicativo Facelets, a tag f:ajax adiciona
funcionalidades Ajax que necessitam de adicionais de codificação e configuração para as componentes
de interface do usuário.

Comentários:

O faces-config.xml têm sido rapidamente substituído por annotations – novidade do JSF 2.0. Essa versão
trouxe: suporte a facelets; utilização de templates para a aplicação; simplificação do desenvolvimento de
componentes; suporte nativo a Ajax (f:ajax); navegação implícita e condicional; suporte ao Método GET;
adição de novos escopos (Flash e View); composição de componentes customizados; etc.

Conforme vimos em aula, o suporte é nativo. Logo, não é necessário codificação e configuração adicionais:

“By using the f:ajax tag along with another standard component in a Facelets application. This method adds Ajax functionality to any UI
component without additional coding and configuration”.

Gabarito: E

13. (FCC - 2012 - TRE-CE - Analista Judiciário - Análise de Sistemas) No ciclo de vida do Java Server Faces
trata-se da fase na qual o componente deve primeiro ser criado ou recuperado a partir do FacesContext,
seguido por seus valores, que são geralmente recuperados dos parâmetros de request e,
eventualmente, dos cabeçalhos ou cookies gerados. Trata-se da fase:

a) Restore View.
b) Apply Request Values.
c) Process Validation.
d) Update Model Values.
e) Invoke Application.

Comentários:

70

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Apply Request Values: qualquer dado que for enviado como parte da requisição é passado para os
componentes apropriados. Essas visões atualizam seus estados com os valores dos dados. Dados podem
vir de formulários, cookies enviados com a requisição ou por meio de cabeçalhos da requisição. Alguns
dados são validados e, se houver erro, são adicionados à FacesServlet.

Conforme vimos em aula, trata-se da fase Apply Request Values.

Gabarito: B

14. (CESPE - 2012 – TJ/RO – Analista de Sistemas – E) JNDI, parte do projeto de JSF, utiliza XHTML como
tecnologia de apresentação dos dados, possibilitando a separação entre as camadas de negócio e de
controle.

Comentários:

Em suma, a utilização de Facelets reduz o tempo e esforço gastos no desenvolvimento e implantação. Em


geral, Facelets Views são criadas com Páginas HTML e XHTML (criadas em conformidade com
Transationl DTD). Além disso, elas utilizam linguagens de expressão para referenciar propriedades e Managed
Beans. Para desenvolver uma Aplicação Facelets simples, é necessário:

Conforme vimos em aula, a questão trata – na verdade – das Facelets.

Gabarito: E

15. (FCC - 2012 - TRT - 11ª Região (AM) - Técnico Judiciário - Tecnologia da Informação) Sobre o
framework JavaServer Faces é correto afirmar:

71

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

a) A grande limitação do JSF é a dificuldade de integração com outros frameworks como Spring, JPA e
EJB.

b) Expression Language (EL) é a linguagem utilizada para apresentação de conteúdo em aplicações que
utilizam JSF. Sua principal limitação é a impossibilidade de acessar valores e métodos em beans
gerenciados.

c) Facelets é uma parte da especificação JSF e também a tecnologia para implementar as regras de
negócio em aplicações que utilizam JSF.

d) Disponibiliza as bibliotecas de tags core e html para criar as páginas que compõem a interface do
usuário.

e) Define uma única forma para realizar a validação de dados em formulários JSP, por meio da
implementação de uma classe de validação que estende a interface Validator.

Comentários:

(a) Na verdade, está na Camada Web, facilmente integrável com Spring, JPA e EJB;

(b) Na verdade, é facilmente possível;

(c) Na verdade, Facelets tratam da camada de visão e, não, de regras de negócio;

(d) Perfeito, basta utilizar várias taglibs prontas ou criá-las;

(e) Na verdade, existem diversas formas.

Gabarito: D

72

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

16. (CESPE - 2013 – CPRM – Analista de Sistemas) Facelets são utilizadas para desenvolver visões (views)
JavaServer Faces (JSF) com linguagem HTML e XHTML, em conformidade com a transitional document
type definition, sendo, ainda, compatível com a biblioteca de tag JSF.

Comentários:

Em suma, a utilização de Facelets reduz o tempo e esforço gastos no desenvolvimento e implantação. Em


geral, Facelets Views são criadas com Páginas HTML e XHTML (criadas em conformidade com Transationl
DTD). Além disso, elas utilizam linguagens de expressão para referenciar propriedades e Managed Beans. Para
desenvolver uma Aplicação Facelets simples, é necessário:

Conforme vimos em aula, a questão está perfeita!

Gabarito: C

17. (FCC - 2011 - TRE-AP - Técnico Judiciário - Programação de Sistemas) O JSF extrai todos os valores
digitados pelo usuário e guarda esse valor nos seus respectivos componentes. Se o valor digitado não
coincidir com o componente, um erro vai ser adicionado na classe FacesContext e será mostrado na fase
Render Response Phase.

No ciclo de vida do JSF trata-se de um evento típico da fase:

a) Process Validations Phase.


b) Restore View Phase.
c) Apply Request Values Phase.
d) Update Model Values Phase.
e) Invoke Application Phase.

Comentários:

Apply Request Values: qualquer dado que for enviado como parte da requisição é passado para os
componentes apropriados. Essas visões atualizam seus estados com os valores dos dados. Dados podem

73

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

vir de formulários, cookies enviados com a requisição ou por meio de cabeçalhos da requisição. Alguns
dados são validados e, se houver erro, são adicionados à FacesServlet.

Conforme vimos em aula, trata-se da fase Apply Request Values.

Gabarito: C

18. (CESPE - 2013 – INPI - Analista Judiciário - Análise de Sistemas) Quando registrado em JSF 2 (Java
Server Faces), um managed bean permanece no escopo de session.

Comentários:

O JSF1 tinha os escopos Request (Default), Session e Application. A partir do JSF2, ganhamos o View,
Flash, None e Custom. O @RequestScoped vive o tempo do ciclo de uma Requisição/Resposta HTTP; o
@ViewScoped vive enquanto houver interação com a mesma view, i.e., enquanto persistir a mesma página; o
@ApplicationScoped persiste toda a duração da aplicação web.

No JSF2, o Escopo Request continua sendo o padrão (default)!

Gabarito: E

19. (CESPE - 2010 – TCU – Analista de Sistemas) Para suportar a construção de aplicações com Ajax e JSF,
recomenda-se aos desenvolvedores de páginas que usem a tag <f:ajax>, relacionada ao processamento
de pedidos http assíncronos.

Comentários:

74

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

O faces-config.xml têm sido rapidamente substituído por annotations – novidade do JSF 2.0. Essa versão
trouxe: suporte a facelets; utilização de templates para a aplicação; simplificação do desenvolvimento de
componentes; suporte nativo a Ajax (f:ajax); navegação implícita e condicional; suporte ao Método GET;
adição de novos escopos (Flash e View); composição de componentes customizados; etc.

Conforme vimos em aula, a questão está perfeita!

Gabarito: C

20. (FCC - 2011 - TRE-RN - Técnico Judiciário - Programação de Sistemas) No ciclo de vida do JSF copiar
os parâmetros de requisição para valores submetidos pelos componentes, é a tarefa típica da fase:

a) Restaurar Visão (Restore view).


b) Invocar aplicação (Invoke application).
c) Aplicar valores de requisição (Apply request values).
d) Processar validações (Process validation).
e) Atualizar valores do modelo (Update model values).

Comentários:

Apply Request Values: qualquer dado que for enviado como parte da requisição é passado para os
componentes apropriados. Essas visões atualizam seus estados com os valores dos dados. Dados podem
vir de formulários, cookies enviados com a requisição ou por meio de cabeçalhos da requisição. Alguns dados
são validados e, se houver erro, são adicionados à FacesServlet.

Conforme vimos em aula, trata-se da fase Apply Request Values.

Gabarito: C

75

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

21. (CESPE - 2010 – MPU – Analista de Sistemas) Uma aplicação web deve prover mecanismos de
validação de dados. O JSF fornece vários validadores de dados padrões que podem ser utilizados no lado
do cliente (client-side).

Comentários:

Pessoal, o JSF oferece diversos validadores embutidos para validar seus Componentes UI – essa validação
ocorre no lado do servidor. Eles podem ser invocados a partir de sua tag específica e podem validar o tamanho
de um campo, tipo de entrada, range de um valor numérico, expressão regular, entre outros. É possível,
inclusive, criar o seu próprio validador customizado.

Conforme vimos em aula, ocorre do lado servidor!

Gabarito: E

22. (FCC - 2010 - TRT - 22ª Região (PI) - Técnico Judiciário - Tecnologia da Informação) É um framework
MVC utilizado no desenvolvimento de aplicações para a internet de forma visual, que utiliza o recurso
de arrastar e soltar os componentes na tela para definir suas propriedades:

a) Enterprise JavaBeans.
b) JavaServer Faces.

c) Java 2 Enterprise Edition.

d) Servlets.
e) Java Server Pages.

Comentários:

O resultado foi a criação do framework Struts! Ele era uma implementação da Arquitetura MVC para
desenvolvimento de páginas web dinâmicas! Bacana? Esse framework fez tanto sucesso que a Sun
Microsystems junto com uma comunidade de desenvolvedores resolveu criar uma especificação padronizada
baseada nesse framework, denominado Java Server Faces (JSF).
76

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Conforme vimos em aula, trata-se do JSF!

Gabarito: B

23. (CESPE - 2015 – TCU - Analista de Sistemas) A partir da interpretação do trecho JSF (JavaServer Faces),
versão 2, no código a seguir, verifica-se que uma providência válida é configurar o managed-bean
clientePage no arquivo faces-config.xml.

<f:view>
<h:form id=”clienteForm”>
<h:outputLabel for=”informeNome” value=”Informe Nome”/>
<h:inputText id=”informeNome” value =”#{clientePage.nome}”/>
<h:commandButton value=”Nome do Cliente”
action=”#{clientePage.cliente}”/>
</h:form>
</f:view>

Comentários:

O faces-config.xml é mais específico, tratando de regras e mapeamento de navegação; definição de managed


beans; configuração de detalhes de internacionalização; entre outros. Já o web.xml é mais genérico, tratando da
especificação de detalhes de segurança; configuração de páginas de erro; mapeamento e declaração de servlets
e filtros; configuração de parâmetros de inicialização; entre outros.

Conforme vimos em aula, a questão está perfeita! É possível declarar managed beans por meio de
anotações ou por meio do arquivo de configuração faces-config.xml.

Gabarito: C

24. (CESPE - 2014 - TJ-SE - Analista Judiciário - Análise de Sistemas) Antes de uma aplicação web
desenvolvida nos moldes da JSF executar sua primeira página web, uma instância FacesServlet é
executada, a fim de gerenciar as requisições dessa aplicação.

77

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Comentários:

Lembrando que FacesContext (javax.faces.context) é o objeto utilizado para representar todas as


informações de contexto associadas ao processamento da requisição de entrada e à criação da resposta
correspondente. Ela é criada pela FacesServlet, que é executada antes do início do ciclo de vida de
processamento de requisições e é responsável por gerenciar a execução das etapas do ciclo de vida.

Conforme vimos em aula, a questão está perfeita!

Gabarito: C

25. (FGV - 2013 – ALEMA - Analista de Sistemas) Com relação à especificação Java Server Faces (JSF),
assinale V para a afirmativa verdadeira e F para a falsa.

( ) Visa substituir a especificação Java Server Pages.

( ) Java Server Faces são usadas como uma fachada para Servlets e Java Server Pages.

( ) Define um framework MVC (Model View Controler) para aplicações Web.

As afirmativas são, respectivamente,

a) F, F e V.

b) F, V e V.

c) V, F e F.
d) V, V e F.
e) F, V e F.

Comentários:

78

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Facelets é uma parte da especificação JSF e também a tecnologia de apresentação preferida para
construir aplicações JSF – substituindo JSP. Ela suporta todos os componentes de UI do JSF e constrói Árvores
de Componentes; e Views (utilizando Templates HTML). Um tipo especial de template são os Componentes
Compostos, que agem como um componente. Ademais, é bom destacar algumas características:

(F) Conforme vimos em aula, Facelets vieram para substituir JSP e, não, JSF!

Essa eu vou explicar melhor, porque sempre me perguntar: se eu afirmar que o Facebook visava substituir o
MSN, isso é certo ou errado? Errado, ele está em um contexto muito maior; uma de suas funcionalidades
(chat) veio de fato a substituir o MSN! JSF é um framework imenso, com centenas de funcionalidades. Ora,
eu não posso afirmar que ele visa substituir JSP! Na verdade, uma de suas funcionalidades vem substituindo
JSP, mas não o JSF como um todo.

(F) Não, esse item não faz nenhum sentido.

O resultado foi a criação do framework Struts! Ele era uma implementação da Arquitetura MVC para
desenvolvimento de páginas web dinâmicas! Bacana? Esse framework fez tanto sucesso que a Sun
Microsystems junto com uma comunidade de desenvolvedores resolveu criar uma especificação padronizada
baseada nesse framework, denominado Java Server Faces (JSF).

(V) Perfeito, implementa o padrão MVC!

Gabarito: A

26. (CESPE - 2014 - TJ-SE - Analista Judiciário - Análise de Sistemas) Em aplicações web nos padrões da
JSF, é possível utilizar recursos Ajax para criar páginas dinâmicas, como, por exemplo, por meio da tag
f:ajax, conforme apresentado na sintaxe abaixo.

<h:inputText value=”#{bean.message}”>
<f:ajax />
</h:inputText>

79

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Comentários:

O faces-config.xml têm sido rapidamente substituído por annotations – novidade do JSF 2.0. Essa versão
trouxe: suporte a facelets; utilização de templates para a aplicação; simplificação do desenvolvimento de
componentes; suporte nativo a Ajax (f:ajax); navegação implícita e condicional; suporte ao Método GET;
adição de novos escopos (Flash e View); composição de componentes customizados; etc.

Conforme vimos em aula, a questão está perfeita!

Gabarito: C

27. (CESPE - 2014 - TJ-SE - Analista Judiciário - Análise de Sistemas) É possível utilizar XHTML no
desenvolvimento de facelets para criar páginas web compatíveis com a JSF (JavaServer Faces) para
apresentação dos dados. Na versão Java EE 7, essa forma de apresentação é mais indicada que a JSP
(JavaServer Pages), uma vez que esta não suporta todos os novos recursos da versão Java EE 7.

Comentários:

Pessoal, tem uma característica do JSF que é extremamente importante: Facelets! Trata-se de uma linguagem
de declaração de página poderosa, apesar de leve. Antigamente, utiliza-se a tecnologia JSP como camada de
visão do JSF, porém ele não suporta todas as características disponíveis na Plataforma Java EE – sendo
considerada obsoleta para JSF!

Conforme vimos em aula, a questão está perfeita!

Gabarito: C

ACERTEI ERREI

80

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

JAVASERVER 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 Scriptlets 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!

Arquivo: HelloWorld.jsp (No MVC, em geral, é utilizada como Visão)

81

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

<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 .jspx9) 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.

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

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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)!10 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, o 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
scriptlets, 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.,

10
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.
83

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

declarações, expressões, scriptlets, comentários, ações e diretivas. Antes de partir para as sintaxes, vamos
ver um pouco sobre os objetos implícitos!

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.

84

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 scriptlets. Alguns alunos me perguntam como eu decoro isso! Bem, uma
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

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 Scriptlets!

//Expressões JSP

<%= idade = idade + 1 %>


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

85

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Scriptlets

Scriptlets são importantíssimos e, de todos, é facilmente o que mais cai em prova11! 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 scriptlet! 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 scriptlet é 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 scriptlet pode ser acessada de qualquer lugar dentro da Página JSP.
Dentro das scriptlets, 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 scriptlets? Pois é, a 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 scriptlet <% out.println(expressão) %>. Entenderam
agora a similaridade entre ambos? ;)

//Scriptlets JSP

<html>
<body>
<%! String mensagem = "Bem vindo!"; %>
<% out.println(mensagem); %>
</body>
</html>

11
Apesar disso, hoje em dia, é considerado má prática utilizar Scriptlets em Páginas JSP.
86

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 JavaBeans 12. 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 :SCRIPTLET
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;

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

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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


 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.

13
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.
88

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

//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 %>
Scriptlets Scriptlets <% Scriptlet %>
89

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 Scriptlets 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 Language14!

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:

<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"/>

14
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.
90

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

<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[“1”]} // É 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 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.

91

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

QUESTÕES: JAVASERVER PAGES (JSP)

1. (FCC - 2012 - TRE-SP - 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

2. (FCC - 2009 - PGE-RJ - 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.

92

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

c) comentário.

d) taglib.

e) scriptlet.

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

3. (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

93

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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: E

4. (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

94

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

<%@ 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

5. (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 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

6. (FCC - 2010 - METRÔ-SP - Analista - Tecnologia da Informação) Na diretiva page, do JSP, utiliza-se o
atributo import, que permite:
95

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

7. (FCC - 2012 - TRE-SP - Técnico Judiciário - Programação de Sistemas) No JavaServer Pages a tag
<%=conteúdo %> é uma:

96

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

8. (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.

97

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

Gabarito: E

9. (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

98

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 é, a 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:

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.

99

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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;

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>.

100

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Gabarito: E

13. (FCC - 2008 – TCE/SP – 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: B

101

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

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 – 2009 – 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.
102

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.
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.

103

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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:

package dados;

104

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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;


105

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

//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

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" %>

106

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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”%>.


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.

107

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

20. (FCC - 2012 - TRE-CE - 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.
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.

108

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 - 2008 - 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:

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.

109

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

22. (FGV - 2008 – 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.

Comentários:

110

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

111

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 visto em aula, está perfeito.

Gabarito: D

23. (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

112

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

24. (NCE – 2005 – 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.

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.
113

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

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

25. (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?
114

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.
exception É o objeto Throwable que é resultante de uma situação de erro numa página JSP.

115

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

Gabarito: E

26. (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?

116

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

a) <jsp:invoke>
b) <jsp:include>
c) <jsp:forward>
d) <jsp:plugin>
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

28. (ESAF - 2009 - 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.

117

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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;

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

Gabarito: B

ACERTEI ERREI

118

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

JAVASERVER PAGES STANDARD TAG LIBRARY (JSTL)

O JavaServer Pages Standard Tag Library (JSTL) é um componente da plataforma Java EE! Ele estende
a especificação JSP ao adicionar uma biblioteca de tags que encapsula as principais funcionalidades comuns
a diversas aplicações, tais como: controle de fluxo; manipulação de XML; internacionalização; acesso a
banco de dados (SQL); etc.

Há quem afirme que ela se trata de um conjunto de bibliotecas, cada uma com um propósito bem definido,
que encapsula em tags simples toda a funcionalidade necessária para o desenvolvimento de algumas
páginas web. O JSTL permite empregar um único conjunto padrão de tags. Galera, por que essa
padronização é importante?

Ora, porque ela permite que você implante suas aplicações em qualquer contêiner que tenha suporte à
tecnologia JSTL. Galera, ela reduz ou até elimina o uso de scriplets. E daí, professor? Cara, scriplets
desorganizam o código-fonte e dificultam a integração entre designers e programadores. A
simplicidade das bibliotecas oferecidas pelo JSTL ajuda bastante na lógica de apresentação de uma Página
JSP.

Claro, essas tags podem acabar agregando maior sobrecarga no servidor. Tanto os scriplets quando as
bibliotecas são compiladas em servlets, as quais são executadas por um contêiner. O código das scriplets
são basicamente copiados na servlet resultante, já as tags geram um pouco mais de código. Além disso,
sejamos sinceros: scriplets são mais poderosas que as Tags JSTL.

Bem, essa tecnologia divide as tags basicamente em cinco áreas funcionais:

ÁREA DESCRIÇÃO LISTA DE TAGS


FUNCIONAL
CORE Compreende funções remove, set, choose, forEach, forTokens, if, import,
básicas, como loops, redirect, url, catch, out, otherwise, param, when.
condicionais e E/S.

119

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

XML Compreende funções out, parse, set, choose, forEach, if, transform,
de manipulação de otherwise, param, when.
XML.

BANCO DE Compreende funções setDataSource, query, transaction, update, param,


de manipulação de dateParam.
DADOS dados (SQL).

INTERNACIONA- Compreende funções setLocale, requestEncoding, bundle, message,


de formação setBundle, formatNumber, formatDate, parseDate,
LIZAÇÃO (I18N) internacional. parseNumber, setTimeZone, timeZone, param.

FUNÇÕES Compreende funções Length, toUpperCase, toLowerCase, split, substring,


genéricas e substringAfter, contains, join, substringBefore,
misturadas. trim, replace, indexOf, startsWith, endsWith,
containsIgnoreCase, escapeXml

QUESTÕES: JAVASERVER PAGES STANDARD TAG LIBRARY (JSTL)

1. (CESPE - 2006 – SGA/AC - Analista de Sistemas - I) As tags <if>, <switch>, <while> e <forEach> são
tags padronizadas pela JSTL.

Comentários:

ÁREA DESCRIÇÃO LISTA DE TAGS


FUNCIONAL

120

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

CORE Compreende funções remove, set, choose, forEach, forTokens, if, import,
básicas, como loops, redirect, url, catch, out, otherwise, param, when.
condicionais e E/S.

XML Compreende funções out, parse, set, choose, forEach, if, transform,
de manipulação de otherwise, param, when.
XML.

BANCO DE Compreende funções setDataSource, query, transaction, update, param,


de manipulação de dateParam.
DADOS dados (SQL).

INTERNACIONA- Compreende funções setLocale, requestEncoding, bundle, message,


de formação setBundle, formatNumber, formatDate, parseDate,
LIZAÇÃO (I18N) internacional. parseNumber, setTimeZone, timeZone, param.

FUNÇÕES Compreende funções Length, toUpperCase, toLowerCase, split, substring,


genéricas e substringAfter, contains, join, substringBefore,
misturadas. trim, replace, indexOf, startsWith, endsWith,
containsIgnoreCase, escapeXml

Conforme vimos em aula, não existe as tags <switch> ou <while>. No entanto, a banca considerou o item
verdadeiro :-(

Gabarito: C

121

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

2. (CESPE - 2008 – MPE/AM - Analista de Sistemas) A biblioteca JSTL (JavaServer Pages Standard Tag
Library) reúne funcionalidades comuns de aplicações web, provendo suporte para tarefas estruturais
como iterações e condições, etiquetas (tags) para manipular documentos XML, etiquetas para
internacionalização e etiquetas SQL.

Comentários:

O JavaServer Pages Standard Tag Library (JSTL) é um componente da plataforma Java EE! Ele estende a
especificação JSP ao adicionar uma biblioteca de tags que encapsula as principais funcionalidades comuns a
diversas aplicações, tais como: controle de fluxo; manipulação de XML; internacionalização; acesso a
banco de dados (SQL); etc.

Conforme vimos em aula, é exatamente isso! Lembrando que o controle de fluxo trata justamente de
sequência, seleção e iteração.

Gabarito: C

3. (CESPE - 2010 – INMETRO - Analista de Sistemas - B) As tags define, inputText, commandButton e message
pertencem ao JSP Standard Tag Library 1.0 (JSTL 1.0).

Comentários:

ÁREA DESCRIÇÃO LISTA DE TAGS


FUNCIONAL

122

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

CORE Compreende funções remove, set, choose, forEach, forTokens, if, import,
básicas, como loops, redirect, url, catch, out, otherwise, param, when.
condicionais e E/S.

XML Compreende funções out, parse, set, choose, forEach, if, transform,
de manipulação de otherwise, param, when.
XML.

BANCO DE Compreende funções setDataSource, query, transaction, update, param,


de manipulação de dateParam.
DADOS dados (SQL).

INTERNACIONA- Compreende funções setLocale, requestEncoding, bundle, message,


de formação setBundle, formatNumber, formatDate, parseDate,
LIZAÇÃO (I18N) internacional. parseNumber, setTimeZone, timeZone, param.

FUNÇÕES Compreende funções Length, toUpperCase, toLowerCase, split, substring,


genéricas e substringAfter, contains, join, substringBefore,
misturadas. trim, replace, indexOf, startsWith, endsWith,
containsIgnoreCase, escapeXml

Conforme vimos em aula, apenas a tag message pertence ao JSTL.

Gabarito: E

4. (FCC - 2010 – TRT/8ª REGIÃO - Analista de Sistemas) A biblioteca de tags padrão do Java Server Pages
(JSTL) é uma coleção de tags padronizadas para tarefas comuns a muitas aplicações JSP. Estas tags
estão divididas em 5 áreas funcionais:

123

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

a) Web, XML, Banco de Dados, Internacionalização (I18n) e Funções.

b) Core, XML, Banco de Dados, Internacionalização (l18n) e Funções.

c) Core, Estatística, Banco de Dados, Internacionalização (I18n) e Funções.

d) Web, Matemática, Banco de Dados, Internacionalização (I18n) e Funções.

e) Core, Web, Matemática, Internacionalização (I18n) e Funções.

Comentários:

ÁREA DESCRIÇÃO LISTA DE TAGS


FUNCIONAL

CORE Compreende funções remove, set, choose, forEach, forTokens, if, import,
básicas, como loops, redirect, url, catch, out, otherwise, param, when.
condicionais e E/S.

XML Compreende funções out, parse, set, choose, forEach, if, transform,
de manipulação de otherwise, param, when.
XML.

BANCO DE Compreende funções setDataSource, query, transaction, update, param,


de manipulação de dateParam.
DADOS dados (SQL).

124

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

INTERNACIONA- Compreende funções setLocale, requestEncoding, bundle, message,


de formação setBundle, formatNumber, formatDate, parseDate,
LIZAÇÃO (I18N) internacional. parseNumber, setTimeZone, timeZone, param.

FUNÇÕES Compreende funções Length, toUpperCase, toLowerCase, split, substring,


genéricas e substringAfter, contains, join, substringBefore,
misturadas. trim, replace, indexOf, startsWith, endsWith,
containsIgnoreCase, escapeXml

Conforme vimos em aula, trata-se de Core, XML, Banco de Dados, i18n e Funções.

Gabarito: B

5. (CESPE - 2009 – CEHAP/PB - Analista de Sistemas) Assinale a opção incorreta acerca de JSTL.

a) O JSTL não possui suporte nativo a SQL. Para tanto, é utilizada em conjunto com a biblioteca nativa
SQL do J2EE.

b) Uma página JSTL pode ser definida como uma página JSP contendo um conjunto de tags JSTLs.

c) Em uma página JSTL, cada tag realiza determinado tipo de processamento.

d) O JSTL permite ao programador escrever páginas JSPs sem necessariamente utilizar códigos Java,
facilitando a integração entre webdesigners e programadores.

Comentários:

O JavaServer Pages Standard Tag Library (JSTL) é um componente da plataforma Java EE! Ele estende a
especificação JSP ao adicionar uma biblioteca de tags que encapsula as principais funcionalidades comuns a
diversas aplicações, tais como: controle de fluxo; manipulação de XML; internacionalização; acesso a banco
de dados (SQL); etc.

(a) Conforme vimos em aula, o suporte é nativo – é até uma área funcional;
125

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

O JavaServer Pages Standard Tag Library (JSTL) é um componente da plataforma Java EE! Ele estende a
especificação JSP ao adicionar uma biblioteca de tags que encapsula as principais funcionalidades comuns a
diversas aplicações, tais como: controle de fluxo; manipulação de XML; internacionalização; acesso a banco de
dados (SQL); etc.

(b) Conforme vimos em aula, JSTL é JavaServer Pages (JSP) Tag Library. Logo, nada mais é que uma
biblioteca de tags para uma Página JSP.

ÁREA DESCRIÇÃO LISTA DE TAGS


FUNCIONAL

CORE Compreende funções remove, set, choose, forEach, forTokens, if, import,
básicas, como loops, redirect, url, catch, out, otherwise, param, when.
condicionais e E/S.

XML Compreende funções out, parse, set, choose, forEach, if, transform,
de manipulação de otherwise, param, when.
XML.

BANCO DE Compreende funções setDataSource, query, transaction, update, param,


de manipulação de dateParam.
DADOS dados (SQL).

INTERNACIONA- Compreende funções setLocale, requestEncoding, bundle, message,


de formação setBundle, formatNumber, formatDate, parseDate,
LIZAÇÃO (I18N) internacional. parseNumber, setTimeZone, timeZone, param.
126

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

FUNÇÕES Compreende funções Length, toUpperCase, toLowerCase, split, substring,


genéricas e substringAfter, contains, join, substringBefore,
misturadas. trim, replace, indexOf, startsWith, endsWith,
containsIgnoreCase, escapeXml

(c) Conforme vimos em aula, cada conjunto de tags tem uma função genérica e cada tag dentro desse
conjunto tem uma função específica. Por exemplo: a tag url cria uma UTL com parâmetros de consulta
opcionais.

Ora, porque ela permite que você implante suas aplicações em qualquer contêiner que tenha suporte à
tecnologia JSTL. Galera, ela reduz ou até elimina o uso de scriplets. E daí, professor? Cara, scriplets
desorganizam o código-fonte e dificultam a integração entre designers e programadores. A simplicidade
das bibliotecas oferecidas pelo JSTL ajuda bastante na lógica de apresentação de uma Página JSP.

(d) Conforme vimos em aula, este item está perfeito!

Gabarito: A

ACERTEI ERREI

127

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

REACT JS

O ReactJS é uma biblioteca para construir interfaces de usuários com JavaScript. Uma coisa
interessante é que essa biblioteca foi criada pela galera do Facebook e Instagram. É interessante notar
que a documentação oficial coloca o ReactJS como o V (Visão) do Modelo MVC, i.e., permitindo a criação
de seus próprios componentes reutilizáveis de interface. Como assim, professor?

Em uma aplicação em React, recomenda-se quebrar seus diferentes elementos em pequenos


componentes reutilizáveis. Em outras palavras, cada vez que tivermos que desenvolver algo for muito
complexo, recomenda-se quebrá-lo em pequenas partes e desenvolver em componentes – é o chamado
Component-Driven Development. Entendido?

Professor, eu conheço o AngularJS – ReactJS é a mesma coisa? Não, o AngularJS é um framework, ou seja,
um conjunto de ferramentas para resolver vários tipos de coisas. Já uma biblioteca serve para resolver
uma coisa específica – no caso do React é renderizar componentes. Como ele foi desenvolvido para
resolver um problema particular, ele é extremamente performático. Vamos ver algumas de suas vantagens:

 Facilidade de se criar componentes pequenos e reutilizáveis;


 Trabalha com a abordagem de Virtual DOM (mais rápido que o DOM Nativo);
 Pode rodar no lado do servidor, permitindo um melhor SEO15;
 Unifica o markup e a lógica da view, facilitando extensão e manutenção.

Pois é, a grande sacada do ReactJS é o Virtual DOM! Todo mundo sabe que manipular o DOM da página é
muito custoso e lento. Costuma-se evitar ao máximo manipulá-lo em excesso, porque isso exige
bastante do navegador. O ReactJS minimiza a quantidade de manipulação do DOM mantendo seu próprio
DOM virtual e somente renderizando quando necessário.

Quando um componente é inicializado, o método render é chamado, gerando uma representação da


view. Quando algum dado muda, o método render é chamado novamente e para que tenhamos uma
atualização mais eficiente possível, o React faz uma diferenciação (diff) do valor novo com o valor velho e
aplica no DOM somente a nova mudança. Quem quiser conhecer melhor, veja:

15
Search Engine Optimization – trata-se de um conjunto de estratégias com o objetivo de potencializar
e melhorar o posicionamento de um site nas páginas de resultados naturais nos sites de busca.
128

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

https://www.youtube.com/watch?v=BYbgopx44vo

O que vocês precisam de fato saber é que o DOM da página raramente é manipulado diretamente. Opta-se
por manipular um DOM virtual e aplicam-se apenas as mudanças no DOM real. Como isso se relaciona com
a componentização? Bem, todo componente React possui dois atributos principais: estado (state) e
propriedades (props) – no React, tudo precisa ser subclasse da classe Component.

Toda vez que o estado de um componente é alterado, ele é renderizado — este é o famoso JavaScript reativo
(que dá nome à biblioteca). Da mesma forma que criamos nossas Classes e Métodos, devemos pensar o
mesmo para os nossos componentes e seguir o princípio da responsabilidade única. Onde uma classe
deve fazer apenas uma coisa, deve fazê-la bem e deve fazer somente ela.

No ReactJS, os componentes são máquinas de estado, sendo que o fluxo de informações tende a ser
unidirecional no ReactJS. Por fim, cabe salientar que os componentes ReactJS são tipicamente escritos em
JSX (uma sintaxe de extensão Javascript que permite escrever tags HTML dentro do JavaScript para
renderizar subcomponentes). É isso, pessoal! Quem quiser conhecer mais:

https://www.youtube.com/watch?v=XxVg_s8xAms

QUESTÕES: REACT JS

129

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

ANGULAR

Pessoal, antes de apresentar os dois frameworks, vou contar um pouco da história de como eles
começaram...

Galera, quem nasceu antes dos anos 90, vai lembrar que o início da internet aconteceu com páginas HTML
estáticas, ou com pouquíssimo nível de dinamicidade (um contador de cliques aqui, um nome de usuário em
tela ali...). Nessa época a internet era lenta, e os navegadores extremamente simples.

O tempo passa, e a capacidade de processamento do seu computador pessoal aumenta exponencialmente,


junto com a velocidade da internet. Mais ou menos nesse período, o Google ganha muita força, e começa a
expandir sua presença na internet, não só como mecanismo de busca, mas como um fornecedor de serviços
completamente hospedados na web – Gmail, Orkut (quem se lembra desse?), Google Calendar, etc.

Pessoal, um dos grandes fatores que fez o Google bombar foi porque eles pensaram: oras, podemos fazer
aplicações inteiras rodarem dentro dos navegadores! Isso é uma maneira completamente diferente de pensar
na arquitetura server-side, onde você processa a página inteira do lado servidor, e retorna somente um
HTML para ser mostrado no navegador do cliente.

A arquitetura proposta pelo Google foi enviar todo HTML (na verdade HTML, Javascript e CSS) para o
navegador do cliente na primeira requisição, e através de códigos Javascript, o próprio navegador vai
montando a página. O navegador só precisa pedir os dados (normalmente JSON) para preencher a
130

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

parte de conteúdo. Perceba a diferença: ao invés de pedir HTML montado e só mostrar o resultado, o
navegador passou a pedir dados JSON, e ele mesmo montar a tela.

Galera, esse modelo de receber todo layout/estrutura na primeira requisição (e depois só pedir dados) é o
que se chama de SPA – Single Page Aplication. Por um lado, ele é muito mais responsivo e eficiente (o
cliente consulta só dados, ao invés de dados+html), mas por outro lado existe muito mais processamento
do lado cliente (exige-se muito mais do navegador).

Nesse contexto surgiu o AngularJS – O primeiro framework SPA “endossado” pelo Google.

AngularJS

Galera, vocês já devem conhecer o Modelo MVC! Ele é bastante utilizado por desenvolvedores back-end
com o intuito de separar o código de maneira mais organizada e facilitar a manutenção! Já os
desenvolvedores front-end tinham mais dificuldades de organizar seu código. Dessa forma, alguém teve a
ideia de também utilizar o mesmo modelo para o desenvolvimento front-end.

A partir daí, foram lançados um bocado de frameworks de desenvolvimento front-end que utilizam o
Modelo MVC. Quais, professor? Knockout, Backbone.js, Ember, batman.js, e... AngularJS! Trata-se de um
framework JavaScript (MVC), criado pela Google, cujo objetivo é construir aplicações web client-side
simples e fáceis de manter por meio de componentes reusáveis e modulares.

O AngularJS é escrito inteiramente em JavaScript! Ele é um potencializador para aplicações HTML – ele
adota uma abordagem mais ligada à sintaxe HTML, funcionando como uma extensão da linguagem e
enriquecendo seu vocabulário. Além disso, ele é extremamente modularizado, facilitando a automação de
testes (ngMock)! Ele oferece suporte a Single Page Applications (SPA) e Web Mobile.

Ele fornece a infraestrutura necessária para integrar com o back-end por meio de Ajax – tudo isso
embarcado no framework, sem necessidade de outras ferramentas ou bibliotecas. O AngularJS não é uma
biblioteca JavaScript (como JQuery); ele não é uma plataforma (como Java ou .Net); ele não é uma
linguagem (como C#); ele não é um plug-in; e ele também não é uma extensão do navegador.

Ele se encaixa melhor na definição de um framework, mesmo que seja muito mais leve do que um
framework típico e é por isso que muitos o confundem com uma biblioteca. Ele é totalmente JavaScript,
131

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

totalmente client-side e é compatível com desktop e navegadores móveis. Dessa forma, ele definitivamente
não é um plug-in ou alguma outra extensão do navegador nativo.

No parágrafo anterior eu escrevi algo que deve ter deixado uma pulga atrás da orelha de vocês: AngularJS
é totalmente client-side! Pois é! A aplicação roda inteiramente no navegador do cliente. Professor, funciona
em todos os navegadores? Em geral, sim – tanto desktop quanto mobile. Professor, e a performance? Bem,
pesa um pouquinho o cliente, mas em geral são aplicações leves.

Pessoal, uma das coisas mais legais do AngularJS é uma coisa chamada Two-Way Databind (Associação de
Dados e Mão-Dupla). Com essa forma, podemos associar uma variável Javascript a um campo HTML, de tal
forma que se a variável mudar, o HTML será atualizado, e vice-versa. Existem alguns mecanismos para fazer
isso acontecer. Veja o exemplo abaixo, associando a variável firstname ao conteúdo que será mostrado
dentro de <p> no HTML:

Código Javascript

var app = angular.module('myApp', []);


app.controller('myCtrl', function($scope) {
$scope.firstname = "John";
$scope.lastname = "Doe";
});

Código HTML (versão ng-bind)

<p ng-bind="firstname"></p>

Código HTML (versão “bigodes” – interpolação de strings)

<p>First name: {{firstname}}</p>

Pessoal, veja no exemplo acima duas formas de fazer o Two-Way Databind. Ambas precisam que exista a
variável firstname dentro de $scope no Javascript. Mas podemos fazer a associação de 2 formas no HTML:
via ng-bind, ou via interpolação de string. O ng-bind utiliza o nome da variável, e modifica o conteúdo da
tag <p> com o valor da variável. O segundo chama-se interpolação de strings, mas tem como apelido
“bigodes” (por causa das chaves {{ }}). Nesse segundo, AngularJS vai tentar resolver o que estiver entre os
132

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

bigodes, e retornará o resultado para aparecer no HTML. São formas semelhantes de obter o mesmo
resultado.

E quanto à segurança? Pois é, seu código trafega abertamente até o front-end, no entanto é possível
minificar o código, i.e., remover todos os caracteres desnecessários do código-fonte sem modificar sua
funcionalidade. Torna-se impossível roubar um código? Não, mas dificulta um bocado! Vejam a imagem
abaixo como é complicado entender alguma coisa assim.

Por fim, por que usar AngularJS? Porque se ganha muito em produtividade por conta dos componentes
reusáveis; porque o risco de ele ser descontinuado é muito baixo – lembrem-se que ele é mantido pelo
Google; a comunidade é absurdamente ativa, auxiliando os desenvolvedores; porque a curva de
aprendizado é relativamente baixa; entre tantas outras vantagens.

Spoiler Alert: Apesar de todos os motivos para dar certo, o AngularJS foi descontinuado! O Angular 2 passou
a ser seu sucessor...

133

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Angular (2,3,4..)

Mas, professor... a moda agora é o Angular 2! É verdade, rapaziada. O que aconteceu foi que, apesar de
todos os motivos para o AngularJS dar certo, ele não deu. Começaram a aparecer grandes concorrentes
“roubando” o mercado do desenvolvimento WEB, como o Vue.js, React e Ember. Foi aí que surgiu o Angular
2.0.

E o que é o Angular 2.0? Ele é um framework JavaScript e foi completamente reescrito, guardando poucas
coisas do AngularJS. De fato, Angular.JS e Angular 2 estão tão próximos como Java e Javascript... O
Framework perdeu o “.js” no final, e passou a ser conhecido apenas como Angular. Um ponto a ressaltar é
que, a partir da versão 2, todas as versões seguintes são evoluções naturais da anteriores. Assim, Angular 2
evoluiu para o 3, depois para o 4, e assim por diante. A única mudança que rompeu completamente com a
estrutura anterior foi do Angular.JS para Angular 2. Para fins de nomenclatura, chamaremos sempre que
você vir Angular sem o JS, entenda que são as versões 2+.

Aplicações Angular são desenvolvidas, por padrão, em TypeScript. TypeScript é uma linguagem de
programação que pode ser vista como uma evolução do Javascript. De fato, TypeScript permite fazer tudo
que Javascript faz, mas inclui diversos outros recursos como Tipagem Forte, Orientação a Objetos, e, além
de tudo isso, o código TypeScript ainda é compilado para Javascript no final.

A utilização TypeScript, ainda que padrão, não é obrigatória. Podemos usar também JavaScript ou Dart.
Apesar de ser bem diferente, com algum esforço, é possível conectar o Angular com aplicações Angular JS.

O código do framework Angular é composto de módulos (trata-se de um arquivo por módulo), que são
combinados em bibliotecas, que - por sua vez - são agrupadas logicamente em pacotes (ufa!). Alguns
pacotes são os @angular/core e @angular/common. A aplicação Angular deve carregar esses pacotes antes
do código em si. Beleza até aqui?

Um módulo Angular é um contêiner para um grupo de componentes, serviços e diretivas relacionados


entre si. Podemos pensar num módulo como sendo uma biblioteca de componentes e serviços que
implementa uma certa funcionalidade de negócio da aplicação, como um módulo de entregas de produto,
ou de pagamento num site e-commerce.

134

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Todos os elementos de uma aplicação mais simples podem estar localizados em um módulo (o módulo root,
obrigatório), mas nada impede de haver mais módulos, o que é comum em aplicações mais complexas. Em
termos de sintaxe, um módulo é uma classe anotada com um decorador NgModule. A peça chave de uma
aplicação Angular são os componentes. Atenção aqui!

Cada componente consiste de duas partes: uma visão que define a interface do usuário e a classe que
implementa a lógica por trás da visualização. Qualquer aplicação Angular é representada por uma hierarquia
de componentes “empacotadas” em módulos. Uma aplicação deve conter ao menos um módulo com um
componente, o componente root.

O componente root não tem nada de especial, qualquer componente marcado com a propriedade
“bootstrap” do módulo se torna um componente root. Galerinha, tudo muito legal, mas que tal ver o código
na prática? Pois é, para criar um componente é só declararmos uma classe e anotar com @Component
(espero que todos saibam o que é uma anotação).

Cada anotação @Component deve definir as propriedades selector e template (ou templateUrl), que
determinam como o componente deve ser descoberto e renderizado na página, respectivamente. Como
nós já vimos na aula, cada componente deve definir uma visão, que é especificada pelo atributo
template ou templateUrl:

@Component({

selector: 'app-component',

template: '<h1>App Component</h1>' })

class AppComponent {}

Para aplicações web, o template contém código HTML. Podemos utilizar outras linguagens de marcação
para diferentes tipos de renderização (para aplicações móveis, por exemplo). Galerinha, nós podemos
definir estilos para os componentes com CSS. Podemos utilizar a propriedade styles para definir o estilo
na forma inline e a propriedade styleUrls para referenciar arquivos externos com estilo CSS.

135

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

O decorador @Directive nos permite incluir comportamentos customizados aos elementos HTML. Um
exemplo é incluir autocomplete em elementos do tipo <input>. Cada componente é basicamente uma
diretiva que tem uma visão associada, sendo que a última não possui uma visão. Pessoal, não caiu nada
em prova, mas quando cair imagino que serão cobradas as diferenças entre o AngularJS e Angular.

QUESTÕES: ANGULAR E ANGULARJS

1. (CESPE – 2015 – STJ - Programação de Sistemas) O atributo ngBind informa ao AngularJS para atualizar o
conteúdo do texto, quando o valor da expressão for alterado.

Comentários:

Galera, é inviável que vocês decorem cada função do AngularJS (são dezenas!). Vamos comentá-las apenas se
houver exercícios. Bem, o ngBind diz para o AngularJS substituir o conteúdo textual de um elemento HTML
com o valor da expressão dada, e manter o conteúdo atualizado sempre que o valor da expressão mudar:

“The ngBind attribute tells Angular to replace the text content of the specified HTML element with the value of
a given expression, and to update the text content when the value of that expression changes”.

Gabarito: CERTO

2. (Cesgranrio – 2018– BASA – Técnico Científico – tecnologia da informação) É um exemplo de uma expressão
Angular (Angular Expression) em AngularJS:

a) <p>Candidato aprovado: {{ candidato.nome }}</p>

b) <p>Candidato aprovado: [[ candidato.nome ]]</p>

c) <p>Candidato aprovado: <%= candidato.nome %></p>

d) <p>Candidato aprovado: <?= candidato.nome ?> </p>

e) <p>Candidato aprovado: <js:angular value="candidato.nome"/></p>

Comentários:

136

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

Pessoal, lembre-se dos “bigodes” – {{ }}. É uma das formas de fazer a análise de expressões em AngularJS.

Gabarito: A

3. (CESPE – 2018 – STM – Técnico – tecnologia da informação) O serviço Angular JS $http é usado para fazer
uma chamada Ajax para o servidor.

Comentários:

Pessoal, o serviço $http permite fazer chamadas Ajax para uma URL, usando os métodos HTTP. É exatamente
essa sua função no framework.

Gabarito: CERTO

4. (CESPE – 2018 – STM – Técnico – tecnologia da informação) Após ser executada, a expressão Angular
JS

<div ng-app="">

<p>Resultado: {( 5 + 12 )}</p>

</div>

produzirá, como resultado, Resultado: 17

Comentários:

Mais uma vez, lembre-se dos “bigodes” – {{ }}. Na questão, ao invés de colocar chaves duplas, o examinador
colocou chaves e parêntesis {( )}, e isso não é nada na arquitetura AngularJS. Portanto, item errado.

Gabarito: ERRADO

ACERTEI ERREI

137

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

LISTA DE QUESTÕES JEE

1. (CESPE – 2009 – 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.

2. (CESPE – 2005 – SERPRO – Analista de Sistemas) A tecnologia Enterprise JavaBeans (EJB) é uma
arquitetura de componentes do tipo cliente que atua na plataforma J2EE.

3. (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.

4. (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.

5. (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.

6. (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.

138

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

7. (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.

8. (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.

139

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

9. (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 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-SP - Agente da Fiscalização Financeira - Informática - Suporte de Web) São apenas
tipos de componentes executados em servidores Web:

140

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

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.

141

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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).

LISTA DE QUESTÕES SERVLETS

1. (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.

2. (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.

3. (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:

142

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

4. (FCC – 2012 – 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.

5. (FCC – 2013 – 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.

143

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

6. (FCC – 2006 – 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:

7. (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()

144

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

8. (FCC - 2012 - TRE-CE - 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.

9. (FCC - 2013 - AL-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.

145

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 – 2013 – 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.
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.

146

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

14. (CESGRANRIO – 2006 – 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.

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.
147

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 – 2008 – 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.

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.

20. (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.
148

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.
e) invocar o método Servlet.service(Servlet.HTTP_REQUEST) antes do processamento da requisição.

22. (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.

23. (VUNESP - 2013 - FUNDUNESP - Analista Programador Júnior) Considere o Servlet a seguir:

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

149

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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.

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 - 2008 - TJ-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( )
150

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

d) invalidate( )
e) release( )

LISTA DE QUESTÕES JSF

1. (FCC – 2013 – TRT/12 – Analista de Sistemas) Considere as instruções abaixo encontradas em um


arquivo de uma aplicação que utiliza JSF:

<managed-bean>
<managed-bean-name>func</managed-bean-name>
<managed-bean-class>bean.Funcionario</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

Essas instruções indicam a existência de um bean gerenciado (classe Funcionario.java) no pacote bean
que poderá ser referenciado nas páginas JSP por meio da palavra func. O arquivo correto no qual essas
instruções são colocadas é o:

a) context.xml.
b) web-inf.xml.
c) web.xml.
d) faces-config.xml.
e) config-bean.xml.

2. (CESPE - 2009 - SECONT-ES - Auditor do Estado – Tecnologia da Informação) O JSF é um framework


web embasado em interface gráfica, capaz de renderizar componentes e manipular eventos em
aplicações web no padrão Java EE, no qual os componentes JSF são orientados a eventos. O JSF fornece,
ainda, mecanismos para conversão, validação, execução de lógica de negócios e controle de navegação.

3. (FCC - 2012 - TJ-PE - Programador de computador) Em uma aplicação que utiliza JSF, para configurar
o fluxo de comunicação presente na servlet de controle, é utilizado um arquivo de configuração:

a) webfaces.xml.
b) actionform.xml.
151

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

c) faces-config.xml.
d) webcontext.xml.
e) serverconfig.xml.

4. (CESPE - 2010 - TRE-BA - Analista Judiciário - Análise de Sistemas) Entre os itens que o padrão Java
Server Faces (JSF) utiliza, estão os componentes, os eventos e a navegabilidade.

5. (FCC – 2013 – TRT/9 – Analista de Sistemas) Uma aplicação utilizando o framework JSF e a IDE
NetBeans gera automaticamente dois componentes essenciais assim descritos:

I. É responsável por receber requisições dos componentes View do MVC, redirecioná-las para os beans
gerenciados (managed beans) do componente Model do MVC e responder a essas requisições.

II. É o arquivo principal de configuração de uma aplicação web que utiliza o framework JSF. É responsável
por descrever os elementos e sub-elementos que compõem o projeto, tais como as regras de
navegação, beans gerenciados, configurações de localização etc.

As descrições I e II referem-se, respectivamente, aos componentes:

a) servlet Controller.java e ao arquivo faces_config.xml


b) FaceletServlet e ao arquivo web_config.xml.
c) FacesServlet e ao arquivo faces-config.xml.
d) servlet Controller e ao arquivo web-config.xml.
e) servlet Facelet e ao arquivo web.xml.

6. (CESPE - 2012 - ANAC - Analista Administrativo - Área 4) A validação de dados de um componente


pode ser uma das funções de um backing bean, em uma aplicação JSF.

7. (FCC – 2012 – TST – Analista de Sistemas) O framework JavaServer Faces (JSF) é utilizado no
desenvolvimento de aplicações web que utiliza o design pattern MVC. O JSF:

a) disponibiliza controles pré-construídos e código para manipular eventos, estimulando o uso de código
Java convencional no componente View do MVC.

152

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

b) recebe requisições dos componentes da View do MVC, através do servlet FaveServerServlet.

c) armazena os mapeamentos das ações e regras de navegação em projetos JSF nos arquivos WEB-
INF.xml e FACES-CONFIG.xml.

d) possui bibliotecas que suportam Ajax (Asynchronous JavaScript And XML).

e) provê um conjunto de tags limitado para criar somente páginas HTML/XHTML.

8. (CESPE - 2013 - SERPRO - Analista - Desenvolvimento de Sistemas) O JSF provê uma linguagem de
expressão exclusiva para acesso a objetos armazenados em bancos de dados.

9. (FCC – 2012 – TST – Analista de Sistemas) Para criar as páginas XHTML de uma aplicação JSF é possível
utilizar um conjunto de bibliotecas de tags JSF. Algumas dessas bibliotecas são HTML, Core e Facelets.
Considere os fragmentos de códigos abaixo, que utilizam tags dessas bibliotecas:

A correlação correta entre o fragmento de código e a biblioteca de tags utilizada é:

153

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

a) I-Facelets, II-HTML e III-Core.


b) I-Core, II-Facelets, e III-HTML.
c) I-HTML, II-Core, e III-Facelets.
d) I-HTML, II-Facelets, e III-HTML.
e) I-HTML, II-HTML, e III-Core.

10. (CESPE - 2010 – TCU – Analista de Sistemas) No desenvolvimento de conteúdos para apresentação, o
uso de facelets traz vantagens em relação ao uso de JSP. Uma delas é a maior modularidade, com o uso
de templates e componentes compostos (composite).

11. (FCC - 2012 - TJ-PE - Analista Judiciário - Análise de Sistemas) No JSF, o componente Controller do
MVC é composto por uma classe servlet, por arquivos de configuração e por um conjunto de
manipuladores de ações e observadores de eventos. Essa servlet é chamada de:

a) ControllerServlet.
b) Facelet.
c) HttpServlet.
d) FacesConfig.
e) FacesServlet.

12. (CESPE - 2012 – TJ/AL – Analista de Sistemas – B) Em um aplicativo Facelets, a tag f:ajax adiciona
funcionalidades Ajax que necessitam de adicionais de codificação e configuração para as componentes
de interface do usuário.

13. (FCC - 2012 - TRE-CE - Analista Judiciário - Análise de Sistemas) No ciclo de vida do Java Server Faces
trata-se da fase na qual o componente deve primeiro ser criado ou recuperado a partir do FacesContext,
seguido por seus valores, que são geralmente recuperados dos parâmetros de request e,
eventualmente, dos cabeçalhos ou cookies gerados. Trata-se da fase:

a) Restore View.
b) Apply Request Values.
c) Process Validation.
d) Update Model Values.
e) Invoke Application.

154

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

14. (CESPE - 2012 – TJ/RO – Analista de Sistemas – E) JNDI, parte do projeto de JSF, utiliza XHTML como
tecnologia de apresentação dos dados, possibilitando a separação entre as camadas de negócio e de
controle.

15. (FCC - 2012 - TRT - 11ª Região (AM) - Técnico Judiciário - Tecnologia da Informação) Sobre o
framework JavaServer Faces é correto afirmar:

a) A grande limitação do JSF é a dificuldade de integração com outros frameworks como Spring, JPA e
EJB.

b) Expression Language (EL) é a linguagem utilizada para apresentação de conteúdo em aplicações que
utilizam JSF. Sua principal limitação é a impossibilidade de acessar valores e métodos em beans
gerenciados.

c) Facelets é uma parte da especificação JSF e também a tecnologia para implementar as regras de
negócio em aplicações que utilizam JSF.

d) Disponibiliza as bibliotecas de tags core e html para criar as páginas que compõem a interface do
usuário.

e) Define uma única forma para realizar a validação de dados em formulários JSP, por meio da
implementação de uma classe de validação que estende a interface Validator.

16. (CESPE - 2013 – CPRM – Analista de Sistemas) Facelets são utilizadas para desenvolver visões (views)
JavaServer Faces (JSF) com linguagem HTML e XHTML, em conformidade com a transitional document
type definition, sendo, ainda, compatível com a biblioteca de tag JSF.

17. (FCC - 2011 - TRE-AP - Técnico Judiciário - Programação de Sistemas) O JSF extrai todos os valores
digitados pelo usuário e guarda esse valor nos seus respectivos componentes. Se o valor digitado não
coincidir com o componente, um erro vai ser adicionado na classe FacesContext e será mostrado na fase
Render Response Phase.
155

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

No ciclo de vida do JSF trata-se de um evento típico da fase:

a) Process Validations Phase.


b) Restore View Phase.
c) Apply Request Values Phase.
d) Update Model Values Phase.
e) Invoke Application Phase.

18. (CESPE - 2013 – INPI - Analista Judiciário - Análise de Sistemas) Quando registrado em JSF 2 (Java
Server Faces), um managed bean permanece no escopo de session.

19. (CESPE - 2010 – TCU – Analista de Sistemas) Para suportar a construção de aplicações com Ajax e JSF,
recomenda-se aos desenvolvedores de páginas que usem a tag <f:ajax>, relacionada ao processamento
de pedidos http assíncronos.

20. (FCC - 2011 - TRE-RN - Técnico Judiciário - Programação de Sistemas) No ciclo de vida do JSF copiar
os parâmetros de requisição para valores submetidos pelos componentes, é a tarefa típica da fase:

a) Restaurar Visão (Restore view).


b) Invocar aplicação (Invoke application).
c) Aplicar valores de requisição (Apply request values).
d) Processar validações (Process validation).
e) Atualizar valores do modelo (Update model values).

21. (CESPE - 2010 – MPU – Analista de Sistemas) Uma aplicação web deve prover mecanismos de
validação de dados. O JSF fornece vários validadores de dados padrões que podem ser utilizados no lado
do cliente (client-side).

22. (FCC - 2010 - TRT - 22ª Região (PI) - Técnico Judiciário - Tecnologia da Informação) É um framework
MVC utilizado no desenvolvimento de aplicações para a internet de forma visual, que utiliza o recurso
de arrastar e soltar os componentes na tela para definir suas propriedades:

a) Enterprise JavaBeans.
b) JavaServer Faces.
156

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

c) Java 2 Enterprise Edition.

d) Servlets.
e) Java Server Pages.

23. (CESPE - 2015 – TCU - Analista de Sistemas) A partir da interpretação do trecho JSF (JavaServer Faces),
versão 2, no código a seguir, verifica-se que uma providência válida é configurar o managed-bean
clientePage no arquivo faces-config.xml.

<f:view>
<h:form id=”clienteForm”>
<h:outputLabel for=”informeNome” value=”Informe Nome”/>
<h:inputText id=”informeNome” value =”#{clientePage.nome}”/>
<h:commandButton value=”Nome do Cliente”
action=”#{clientePage.cliente}”/>
</h:form>
</f:view>

24. (CESPE - 2014 - TJ-SE - Analista Judiciário - Análise de Sistemas) Antes de uma aplicação web
desenvolvida nos moldes da JSF executar sua primeira página web, uma instância FacesServlet é
executada, a fim de gerenciar as requisições dessa aplicação.

25. (FGV - 2013 – ALEMA - Analista de Sistemas) Com relação à especificação Java Server Faces (JSF),
assinale V para a afirmativa verdadeira e F para a falsa.

( ) Visa substituir a especificação Java Server Pages.

( ) Java Server Faces são usadas como uma fachada para Servlets e Java Server Pages.

( ) Define um framework MVC (Model View Controler) para aplicações Web.

As afirmativas são, respectivamente,

a) F, F e V.

b) F, V e V.

c) V, F e F.
d) V, V e F.
e) F, V e F.

157

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

26. (CESPE - 2014 - TJ-SE - Analista Judiciário - Análise de Sistemas) Em aplicações web nos padrões da
JSF, é possível utilizar recursos Ajax para criar páginas dinâmicas, como, por exemplo, por meio da tag
f:ajax, conforme apresentado na sintaxe abaixo.

<h:inputText value=”#{bean.message}”>
<f:ajax />
</h:inputText>

27. (CESPE - 2014 - TJ-SE - Analista Judiciário - Análise de Sistemas) É possível utilizar XHTML no
desenvolvimento de facelets para criar páginas web compatíveis com a JSF (JavaServer Faces) para
apresentação dos dados. Na versão Java EE 7, essa forma de apresentação é mais indicada que a JSP
(JavaServer Pages), uma vez que esta não suporta todos os novos recursos da versão Java EE 7.

158

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

LISTA DE QUESTÕES JSP

1. (FCC - 2012 - TRE-SP - 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.

2. (FCC - 2009 - PGE-RJ - 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.

3. (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.
159

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

4. (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.

5. (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.

6. (FCC - 2010 - METRÔ-SP - 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.

7. (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.
160

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

8. (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.

9. (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.

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 - 2008 – TCE/SP – Analista de Sistema) Nas páginas dinâmicas escritas em JSP, para declaração
de atributos ou métodos, utilizam-se as tags:

a) <% %>
161

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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 – 2009 – 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.

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, é:

162

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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"/>

163

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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"%>.

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”%>.

20. (FCC - 2012 - TRE-CE - 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.
d) Session.
e) AutoFlush.

21. (FCC - 2008 - 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:

164

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

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

22. (FGV - 2008 – 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.

23. (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.


165

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

c) impossibilidade de inclusão de comentários.

d) execução exclusiva em sistemas Windows.

e) execução exclusiva em sistemas Linux.

24. (NCE – 2005 – 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.

25. (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.

166

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

c) getParameter.

d) String.

e) Request.

26. (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)

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>

28. (ESAF - 2009 - 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.

167

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

LISTA DE QUESTÕES JSTL

1. (CESPE - 2006 – SGA/AC - Analista de Sistemas - I) As tags <if>, <switch>, <while> e <forEach> são
tags padronizadas pela JSTL.

2. (CESPE - 2008 – MPE/AM - Analista de Sistemas) A biblioteca JSTL (JavaServer Pages Standard Tag
Library) reúne funcionalidades comuns de aplicações web, provendo suporte para tarefas estruturais
como iterações e condições, etiquetas (tags) para manipular documentos XML, etiquetas para
internacionalização e etiquetas SQL.

3. (CESPE - 2010 – INMETRO - Analista de Sistemas - B) As tags define, inputText, commandButton e message
pertencem ao JSP Standard Tag Library 1.0 (JSTL 1.0).

4. (FCC - 2010 – TRT/8ª REGIÃO - Analista de Sistemas) A biblioteca de tags padrão do Java Server Pages
(JSTL) é uma coleção de tags padronizadas para tarefas comuns a muitas aplicações JSP. Estas tags
estão divididas em 5 áreas funcionais:

a) Web, XML, Banco de Dados, Internacionalização (I18n) e Funções.

b) Core, XML, Banco de Dados, Internacionalização (l18n) e Funções.

c) Core, Estatística, Banco de Dados, Internacionalização (I18n) e Funções.

d) Web, Matemática, Banco de Dados, Internacionalização (I18n) e Funções.

e) Core, Web, Matemática, Internacionalização (I18n) e Funções.

5. (CESPE - 2009 – CEHAP/PB - Analista de Sistemas) Assinale a opção incorreta acerca de JSTL.

a) O JSTL não possui suporte nativo a SQL. Para tanto, é utilizada em conjunto com a biblioteca nativa
SQL do J2EE.

b) Uma página JSTL pode ser definida como uma página JSP contendo um conjunto de tags JSTLs.

c) Em uma página JSTL, cada tag realiza determinado tipo de processamento.


168

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

d) O JSTL permite ao programador escrever páginas JSPs sem necessariamente utilizar códigos Java,
facilitando a integração entre webdesigners e programadores.

LISTA DE QUESTÕES ANGULAR E ANGULARJS

1. (CESPE – 2015 – STJ - Programação de Sistemas) O atributo ngBind informa ao AngularJS para atualizar o
conteúdo do texto, quando o valor da expressão for alterado.

2. (Cesgranrio – 2018– BASA – Técnico Científico – tecnologia da informação) É um exemplo de uma expressão
Angular (Angular Expression) em AngularJS:

a) <p>Candidato aprovado: {{ candidato.nome }}</p>

b) <p>Candidato aprovado: [[ candidato.nome ]]</p>

c) <p>Candidato aprovado: <%= candidato.nome %></p>

d) <p>Candidato aprovado: <?= candidato.nome ?> </p>

e) <p>Candidato aprovado: <js:angular value="candidato.nome"/></p>

3. (CESPE – 2018 – STM – Técnico – tecnologia da informação) O serviço Angular JS $http é usado para fazer
uma chamada Ajax para o servidor.

4. (CESPE – 2018 – STM – Técnico – tecnologia da informação) Após ser executada, a expressão Angular JS

<div ng-app="">

<p>Resultado: {( 5 + 12 )}</p>
169

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

</div>

produzirá, como resultado, Resultado: 17

170

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

GABARITO

GABARITO: 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: SERVLETS

1 2 3 4 5 6 7 8 9 10
B A A E B D D E B A
11 12 13 14 15 16 17 18 19 20
E E C E E C B E C D
21 22 23 24 25 26 27 28 29 30
B C C D

GABARITO: JSF

1 2 3 4 5 6 7 8 9 10
D C C C C C D E A C
11 12 13 14 15 16 17 18 19 20
E E B E D C C E C C
21 22 23 24 25 26 27 28 29 30
E B C C A C C

171

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA


Pedro Henrique Chagas Freitas, Raphael Henrique Lacerda
Aula 05
1354451

GABARITO: JSTL

1 2 3 4 5 6 7 8 9 10
C C E B A

GABARITO: ANGULAR E ANGULARJS

1 2 3 4
CERTO A CERTO ERRADO

GABARITO: 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 B 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

Inserir aqui o nome do Curso 172

www.estrategiaconcursos.com.br 172

Desenvolvimento p/ TRE-RJ (Técnico Judiciário - Programação de Sistema) Com Videoaulas - 2020


www.estrategiaconcursos.com.br

34127622881 - CARLOS ALBERTO BRITO DE LIMA

Você também pode gostar