0% found this document useful (0 votes)
97 views213 pages

Reta Final BB Java e Mobile Ios

The document provides an overview of the Java programming language and Java EE/Jakarta EE specifications from Java 8 through Java 17. It discusses features and changes introduced in each version, including lambdas, streams, modules, records, switch expressions, and more. It also covers servlet containers, the differences between Java SE and Java EE, and includes servlet examples. The content is presented by Prof. Raphael Lacerda in a seminar on Java and Java EE technologies.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
97 views213 pages

Reta Final BB Java e Mobile Ios

The document provides an overview of the Java programming language and Java EE/Jakarta EE specifications from Java 8 through Java 17. It discusses features and changes introduced in each version, including lambdas, streams, modules, records, switch expressions, and more. It also covers servlet containers, the differences between Java SE and Java EE, and includes servlet examples. The content is presented by Prof. Raphael Lacerda in a seminar on Java and Java EE technologies.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 213

11630837636 - LUCIANA LEANDRO DA SILVA

@canetas.pretas

@canetaspretas
@lacerdaphjobs

DICAS E AGENDA!

11630837636 - LUCIANA LEANDRO DA SILVA


AGORA EM ÁUDIO TBM!

11630837636 - LUCIANA LEANDRO DA SILVA


@canetas.pretas

SEU LUGAR É AQUI!!!

11630837636 - LUCIANA LEANDRO DA SILVA


RETA FINAL BB

Prof. Raphael Lacerda

https://www.instagram.com/p/B74PyOzj5V3/
https://www.estrategiaconcursos.com.br/blog/prazer-um-eterno-estudante/
11630837636 - LUCIANA LEANDRO DA SILVA
#JAVA

Prof. Raphael Lacerda

11630837636 - LUCIANA LEANDRO DA SILVA


Java Básico - Sintaxe
Tipos primitivos, pré e pós
Casting explícito e implícito
Laços
Escopos
Strings

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java O.O
Classes, atributos, métodos
Construtores
Encapsulamento, modificadores de acesso, JavaBean
Atributos Estáticos

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java O.O avançado
Classes Abstratas
Interfaces
Polimorfismo

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java exceptions
try/catch
Checked x Unchecked
Exceções default

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java Collections
List
Set
Map
Queue

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 8
Data
Virtual extensions methods - default methods
removeIf, sort
herdando de múltiplas interfaces
Lambdas
Streams
filter, peek map, reduce, max, min, collect (alunos por estado)

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 8

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 9
https://www.pluralsight.com/blog/software-development/java-9-new-f
eatures

Jshell
módulo - JIGSAW
- JPMS (plataform module)
private methods interfaces
Reactive Streams
HTTP Client
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Java 10
https://www.techworld.com/developers/java-10-features-whats-new-in
-java-10-3680317/
}
var - http://openjdk.java.net/jeps/286
Docker -
https://medium.com/@jnsrikanth/docker-support-in-java-10-fbff28a31
827

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 11
https://www.journaldev.com/24601/java-11-features

LTS
javac is dead
Strings
strip x trim
repeat

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 12
https://www.journaldev.com/28666/java-12-features

switch expressions: arrow, break


Strings - https://www.journaldev.com/28673/java-12-string-methods

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 13
https://jaxenter.com/java-13-jdk-deep-dive-new-features-162272.html
No more value breaks!
switch ⇒ break to yield - adding a new yield keyword to return a
value from the switch expression.

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 14
● Pattern matching instanceof

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Lembra disso?

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 14
● Records
○ public record Person(String name, String address) { };
This simple declaration will automatically add a constructor, getters,
equals, hashCode and toString methods for us.

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 15
● hidden classes
○ which are classes that cannot be used directly by the
bytecode of other classes
○ Allow frameworks to define classes as non-discoverable
implementation details of the framework, so that they cannot
be linked against by other classes nor discovered through
reflection.
● Garbage Collector
○ both ZGC (JEP 377) and Shenandoah (JEP 379) will be no
longer be experimental. Both will be supported
configurations that teams can opt to use, while the G1
collector will remain the default.
https://openjdk.java.net/jeps/371
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Java 16
● enhancement to the default method in Interfaces

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 16
● Day period support
LocalTime date = LocalTime.parse("15:25:08.690791");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("h B");
assertThat(date.format(formatter)).isEqualTo("3 in the afternoon");

Instead of something like “3pm“, we get an output of “3 in the


afternoon“. We can also use the “B“, “BBBB“, or “BBBBB”
DateTimeFormatter pattern for short, full, and narrow styles
respectively.
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Java 16
● Stream.toList()

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 17
● Enhanced Pseudo-Random Number Generators

● Apple announced a long-term plan to transition its computer line


from X64 to AArch64. This JEP ports the JDK to run on AArch64
in macOS platforms.

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 17
● Pattern Matching for Switch

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Java 17
● Remove RMI Activation
● Sealed Clases
○ A sealed class or interface can be extended or implemented
only by those classes and interfaces permitted to do so.

Prof. Raphael Lacerda


https://openjdk.java.net/jeps/409
11630837636 - LUCIANA LEANDRO DA SILVA
Java Release Train

https://www.oracle.com/java/techno
logies/java-se-support-roadmap.ht
ml
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
AULA JAVAEE / JAKARTAEE

Prof. Raphael Lacerda

11630837636 - LUCIANA LEANDRO DA SILVA


QUANTIDADE
DE ESPECIFICAÇÕES
QUE PRECISO
SABER Prof. Raphael Lacerda

11630837636 - LUCIANA LEANDRO DA SILVA


Aula JavaEE / JakartaEE
❑ Definição
❑ Especificações
❑ Implementações
○ arquitetura Web
❑ JakartaEE
❑ Questões

JavaEE / JakartaEE
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Entendo a especificação

JavaEE / JakartaEE
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Implementações

JavaEE / JakartaEE
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Servlet Containers

JavaEE / JakartaEE
https://www.eclipse.org/jetty/documentation/current/introduction.html#what-is-jetty
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
JavaEE x JavaSE

JavaEE / JakartaEE
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
JavaSE != JavaEE

JavaEE / JakartaEE
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
JavaSE != JavaEE

JavaEE / JakartaEE
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
@estrategiaconcursosti

SERVLET

11630837636 - LUCIANA LEANDRO DA SILVA


Aula Servlet
❑ motivação: dinâmico x estático
❑ noções básicas do protocolo HTTP
❑ "Servidorzinho" web
❑ Característica principal!
❑ Questões

Servlets e HTTP: O que é e como funciona?


(devmedia.com.br)

HttpServlet (Java(TM) EE 7 Specification


Servlet APIs) (oracle.com)
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
desenhando o ciclo...

Servlet
Servlet with annotation | servlet 3 - javatpoint
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Resumo Servlet
● Extensão da classe HttpServlet: Para criar uma servlet, você precisa criar uma classe Java que estenda a classe
HttpServlet. Essa classe fornece métodos que permitem que você processe solicitações HTTP e envie respostas de
volta ao cliente.
● Método doGet() e doPost(): Esses são dois dos principais métodos fornecidos pela classe HttpServlet. O método
doGet() é usado para processar solicitações HTTP GET, enquanto o método doPost() é usado para processar
solicitações HTTP POST.
● Ciclo de vida da servlet: Uma servlet tem um ciclo de vida que inclui a inicialização, processamento de solicitações
e destruição. Durante a inicialização, a servlet pode ser configurada para lidar com solicitações específicas.
Durante o processamento de solicitações, a servlet recebe uma solicitação HTTP e envia uma resposta HTTP.
Durante a destruição, a servlet é liberada da memória.
● Objeto HttpServletRequest: Esse objeto fornece informações sobre a solicitação HTTP, como o método HTTP
usado, os parâmetros da solicitação e o cabeçalho da solicitação.
● Objeto HttpServletResponse: Esse objeto é usado para enviar a resposta HTTP de volta ao cliente. Ele fornece
métodos para definir o código de status da resposta, os cabeçalhos da resposta e o conteúdo da resposta.
● Mapeamento de URL: Uma servlet é mapeada para uma URL específica. Quando o servidor web recebe uma
solicitação para essa URL, ele direciona a solicitação para a servlet correspondente.

11630837636 - LUCIANA LEANDRO DA SILVA


Resumo Servlet

11630837636 - LUCIANA LEANDRO DA SILVA


@estrategiaconcursosti

JSP

11630837636 - LUCIANA LEANDRO DA SILVA


Aula JSP
❑ motivação / Hello World
❑ Ciclo de vida / Scriplets / JSTL
❑ Estrutura de um projeto Web
❑ Filters e Listeners
❑ Escopos
○ Request, Session, Application
❑ Questões

JSP
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
JSP “transformer”

JSP
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Resumo JSP
O JavaServer Pages (JSP) é uma tecnologia da plataforma Java que permite criar páginas web dinâmicas e interativas. Os principais pontos
do JSP são:

● Linguagem de marcação: O JSP é baseado em HTML, que é a linguagem padrão para a criação de páginas web. O JSP também usa
a linguagem de marcação do XML para definir os elementos dinâmicos.
● Inserção de código Java: O JSP permite a inserção de código Java nas páginas web para torná-las dinâmicas. O código Java é
inserido entre tags especiais <% e %>.
● JSTL: O JSP usa a Biblioteca de Tags JSTL (JavaServer Pages Standard Tag Library) para adicionar recursos adicionais de tags.
● MVC: O JSP é usado em conjunto com o modelo MVC (Model-View-Controller) para separar a lógica de negócios da apresentação
dos dados. A Servlet age como o controlador, enquanto o JSP age como a visualização.
● Acesso a banco de dados: O JSP permite o acesso a bancos de dados através do JDBC (Java Database Connectivity).
● Acesso a objetos: O JSP permite o acesso a objetos através do JNDI (Java Naming and Directory Interface).
● Compatibilidade com Servlets: O JSP é uma extensão da tecnologia Servlet, e pode ser usado com outras tecnologias Servlet, como
o Struts e o Spring.
● Suporte a internacionalização: O JSP suporta internacionalização de páginas web através da Biblioteca de Tags JSTL.
● Desempenho: O JSP tem um bom desempenho porque usa a técnica de pré-compilação para converter as páginas JSP em Servlets.
● Facilidade de uso: O JSP é fácil de usar e aprender porque usa a sintaxe HTML familiar e pode ser usado com outras tecnologias
Java.

JSP Directives | JSP Page Directive -


javatpoint
11630837636 - LUCIANA LEANDRO DA SILVA
JSTL core

JSP
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
@estrategiaconcursosti

JPA

11630837636 - LUCIANA LEANDRO DA SILVA


Aula ORM

❑ Motivação para o JPA


❑ Implementações: Hibernate e Eclipselink
❑ Estados e Mapeamentos do JPA
❑ CRUD + JPQL + Criteria
❑ Padrões e validações com Beans Validations
❑ Connection Pool com Hikari
❑ Questões
ORM/JPA/Hibernate
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Arquitetura

ORM/JPA/Hibernate
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Criteria Ok
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Country> q = cb.createQuery(Country.class);
Root<Country> c = q.from(Country.class);
q.select(c);

ORM/JPA/Hibernate
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Criteria Hell
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Double> criteria = builder.createQuery(Double.class);
Root<Venda> root = criteria.from(Venda.class);
Path<Double> valor = root.get("valor");
Expression<Double> soma = builder.sum(valor);
criteria.select(soma);
TypedQuery<Double> query = em.createQuery(criteria);
Double total = query.getSingleResult();
ORM/JPA/Hibernate
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Easy Criteria (fora do JPA)
List<Employee> employees = query.select(employee)
.where(employee.fullName.like("John%"))
.orderBy(employee.age.asc())
.limit(20, 10)
.getResultList();

https://github.com/sveryovka/easy-criteria

ORM/JPA/Hibernate
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
QueryDSL (fora do JPA)
List<Person> persons = queryFactory.selectFrom(person)
.where(
person.firstName.eq("John"),
person.lastName.eq("Doe"))
.fetch();

http://querydsl.com/

ORM/JPA/Hibernate
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
QUESTÕES

Prof. Raphael Lacerda

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/ELETRO/2022

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/ELETRO/2022
A função acima não está completa. É preciso substituir os comentários // 1 e // 2 por comandos que façam
com que a função execute a troca de vogais minúsculas por vogais maiúsculas e retorne a string resultante.

Quais comandos completam a função de acordo com o objetivo definido acima?

// 1 deve ser substituído por return c + troca ( str.substring ( 1 ) );

// 2 deve ser substituído por return troca ( str.substring ( 1 ) );

// 1 deve ser substituído por return c + troca ( str.substring ( 1 ) );

// 2 deve ser substituído por return c + troca ( str.substring ( 0 ) );

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/ELETRO/2022
C
// 1 deve ser substituído por return c ;
// 2 deve ser substituído por return c + troca ( str.substring ( 1 ) );
D
// 1 deve ser substituído por return c ;
// 2 deve ser substituído por return c + troca ( str.substring ( 0 ) );
E
// 1 deve ser substituído por return c + troca ( str.substring ( 1 ) );
// 2 deve ser substituído por return c + troca ( str.substring ( 1 ) );

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/Banco Amazonia/2022
Qual definição de interface Java NÃO produz erro de compilação?

Alternativas

A interface P { int x; int y;

public void op1(String x); }

B abstract interface Q { public int x; public int y;

public default void op1() { System.out.println(x+y); } }

C final interface R { int x=10; int y=20;

public static void op1() { System.out.println(x+y); } }

D public interface S { public static int x=10; public static int y=20; ● Interface attributes are by
default public, static and
public static void op1() { x++; y++; System.out.println(x+y); } }
final
E public abstract interface T { static int x=20; public int y=20;

static void op1() { System.out.println(x+y); } }

Java Interface (w3schools.com)


11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/Banco Amazonia/2022
Admita que as duas classes Java a seguir pertençam ao pacote default e ocupem arquivos separados.

public class Va { private int a=0,b=2,c=4; private static int sb;

public Va() { a*=2; b*=3; c*=4; }

public Va(int x) { this(); sb+=x; }

{ sb*=2; a+=1; }

static { sb+=8; }

public void print() { System.out.print(a+b+c+sb); }}

public class Main { public static void main(String[] args) { new Va(1).print(); }}

O que será exibido no console quando o método main for executado?

Static vs. Instance Initializer Block in Java |


Baeldung
11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/ELETRO/2022
O encapsulamento é um dos quatro conceitos fundamentais da orientação a objetos. Seu objetivo é tratar os dados (variáveis) e as
operações sobre esses dados (métodos), de forma unitária. De acordo com esse princípio, as variáveis de uma classe ficam ocultas de outras
classes, de forma que só possam ser acessadas pelos métodos públicos da classe em que se encontram.

Entretanto, a maioria das linguagens de programação orientadas a objetos disponibilizam um mecanismo para que o encapsulamento possa
ser atenuado sob certas condições. Por exemplo, as variáveis de instância de uma classe podem ser livremente acessadas pelos métodos de
instância de todas as suas subclasses.

Esse acesso é possível, caso essas variáveis sejam declaradas como

A protegidas

B estáticas

C globais

D automáticas

E virtuais

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BANCO AMAZONIA/2021
Considere a classe Java abaixo.
O que o console exibirá quando o método main() for executado?

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BANCO AMAZONIA/2021

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BANCO AMAZONIA/2021
O que o console exibirá quando o método main() for executado?
A .i.a..
B ..a.i.
C l.s.rB
D Br.s.l
E Brasil

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/PETRO/2014
O que imprimirá esse programa quando executado?
A oirnrgsevorp
B provegrnrio
C oirnrgsecvorp
D ac a
Eaa
How to Compare Characters in Java | Java
Hungry
11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/BNDES/2013
Cada tipo de enterprise bean passa por diferentes fases durante seu ciclo de vida.
Um desses tipos possui um estado denominado Passivo. Quando um bean entra
nesse estado, o container EJB o desloca da memória principal para a memória
secundária.
Qual tipo de bean se comporta dessa maneira?
A Stateless Session Bean
B Stateful Session Bean
C Web Service Bean
D Singleton Session Bean
E Message-Driven Bean
EJB
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/BNDES/2009
Entity EJB e o statement SQL "SELECT FOR UPDATE" são técnicas
para se implementar o padrão arquitetural
A Estado da sessão no cliente (Client Session State).
B Bloqueio offline otimista (Optimistic Offline Lock).
C Bloqueio offline pessimista (Pessimistic Offline Lock).
D Objeto de transferência de dados (data transfer object).
E Mapeador (mapper).

EJB
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/PETRO/2010

EJB
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/PETRO/2010
O código acima apresenta um(a)
A EJB padrão 2.1 com informação de estado.
B bean de entidade para a tabela Produto.
C classe POJO que segue o padrão JavaBean.
D classe que utiliza JMS.
E classe que implementa o padrão FrontController

EJB
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/Petro/2012
Em aplicações Java Enterprise Edition 6, é comum o uso da API JPA. Nessa API,
há o conceito de classe de entidade (entity class).
Por definição, uma classe de entidade deve, obrigatoriamente, cumprir os
seguintes requisitos, EXCETO
A estar anotada com a anotação Entity ou representada em um descritor XML.
B não ser qualificada com final.
C ter as variáveis de instância persistentes qualificadas com private, protected, ou
package-private.
D ter ao menos um construtor, este sem argumentos (no-arg constructor).
E ter o mesmo nome da tabela correspondente do banco de dados
JSP - questões
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/Petro/2011
I - EJB fornece ao programador Java EE os seguintes tipos fundamentais: Entity
Beans, Session Beans e Message Driven Beans.
II - JPA é parte integrante da especificação EJB e serve para definir as interfaces
de acesso local e/ou remoto de um componente EJB.
III - Um servidor de aplicações Java EE oferece vários recursos ao desenvolvedor
como pool de conexão, controle de transação, segurança e gerenciamento de
recursos.
IV - Uma diferença entre as tecnologias Servlets e JSP é que, ao contrário da
segunda, a primeira permite o armazenamento do estado da aplicação em
variáveis de sessão

JSP - questões
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/PETRO/2006
assinale a afirmativa INCORRETA.
A A arquitetura J2EE Connector define um conjunto de contratos no
nível de sistema entre um servidor de aplicação e o EIS (Enterprise
Information System), entre os quais, o Connection Management, que
permite que um pool de servidores de aplicação se conecte a um EIS
subjacente e que componentes da aplicação se conectem a um EIS.
B Uma prática que pode melhorar o desempenho de EJBs consiste em
empacotar beans de entidade em um bean de sessão para transformar
chamadas EJB remotas em uma chamada de bean de sessão remota e
várias locais (pattern conhecido como fachada de sessão).
EJB
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/PETRO/2006
C Um descritor de instalação, localizado dentro de um arquivo Java Archive (JAR), permite que
as propriedades de um EJB sejam mantidas fora do código Java e que o desenvolvedor do
bean torne as informações sobre o bean disponíveis para o montador da aplicação e para o
instalador do bean.
D Para se garantir a entrega de uma mensagem para um único destinatário, o modelo de troca
de mensagens publish/subscribe do JMS com o modo de entrega persistente e um assinante
durável é mais indicado, enquanto que se a mensagem for para vários destinatários, pode-se
utilizar o modelo ponto a ponto do JMS com um modo de entrega persistente.

E Na persistência gerenciada por contêiner (CMP), os dados do bean de entidade são


mantidos automaticamente pelo contêiner, como, por exemplo, um contêiner implementando
persistência sobre um banco de dados relacional (RDBMS) pode gerenciar a persistência
armazenando os dados de um bean como uma linha em uma tabela.

EJB
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/Caixa/2021
As classes Java a seguir pertencem ao pacote default e foram incluídas no
arquivo Main.java.
O que será exibido no console quando o método main for executado?
A3
B4
C 19
D 27
E 31

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/Caixa/2021
As classes Java a seguir pertencem ao pacote default. class A1 { protected int va1=1,va2=2;
public A1(int x) { va1+=x; va2*=x; } } class A2 extends A1 { protected int
vb1=10; } class A3 extends A2 { protected int vc1=0; public A3(int y) {
vc1=(va1+va2)*y; } } public class Main { public static void main(String[] args) { A3
o=new A3(2); System.out.println(o.vc1); } } Qual construtor poderá ser inserido na
classe A2, sem que um erro de compilação seja gerado?
A public A2() { vb1=va1+va2; }
B public A2(int z) { super(z); vb1=va1+va2; }
C public A2() { vb1=va1+va2; super(vb1); }
D public A2() { super(0); vb1=va1+va2; }
E public A2() { super(vb1); }

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021
Sejam as seguintes classes Java:

public class Va1 {

public static String getStr() {

return “abcdefghijklmnop“; }
Online Java Compiler - Online Java Editor -
public String ini(String s, int cpr) { Java Code Online (jdoodle.com)

return s.substring(0, cpr);

}
A Single Java Program Can Contain How
public String fin(String s, int cpr) { many Classes? - Scaler Topics

return ini(s, cpr)+s.substring(s.length()-cpr, s.length());

}
Can We Override Static Method in Java -
Javatpoint

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021
public class Va2 extends Va1 {

public static String getStr() {

return “0123456789ABCDEF“; }

public String ini(String s, int cpr) {

return s.substring(s.length()-cpr, s.length());

public static void main(String[] args) {

Va1 o=new Va2();

System.out.println(o.fin(o.getStr(), 5));

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021

O que será exibido no console quando o método main for executado?


(A) 0123BCDE
(B) BCDEFBCDEF
(C) 01234BCDEF
(D) abcdelmnop
(E) lmnoplmnop

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021
As classes Java a seguir são públicas e ocupam arquivos
separados.
O que será exibido no console quando o método main for
executado?
(A) 0 (B) 10 (C) 24 (D) 25 (E) 33
https://www.geeksforgeeks.org/ord
er-execution-initialization-blocks-co
nstructors-java/

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021
Foi solicitado a um programador de sistemas de informação que transformasse uma classe escrita em Java em uma classe equivalente, para ser executada em um programa Kotlin.

O código da classe Java é:

public class AlunoJava{

private String codigo;

private String nome;

private int numero=0;

private String texto= “EscolaX”;

public AlunoJava (String codigo,String nome)

{ this.codigo = codigo;

this.nome = nome; }

A classe em Kotlin equivalente à classe Java acima é

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021
(A) public class AlunoKotlin (private String: nome , private String: codigo ) { private:
numero int = 0
texto String = “EscolaX” }
(B) public class AlunoKotlin (private var nome; codigo: String) { private var numero = 0
private var texto = “EscolaX” }
(C) class AlunoKotlin (val nome: String, val codigo: String) { private this.nome = nome
private this.codigo=codigo
private var int numero = 0
private var String texto = “EscolaX” }

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021
(D) class AlunoKotlin (var nome: String, var codigo: String) { private
var numero = 0
private var texto = “EscolaX”
private AlunoKotlin.nome, AlunoKotlin.codigo }
(E) class AlunoKotlin (private val nome: String, private val codigo:
String) { private var numero = 0
private var texto = “EscolaX” }

11630837636 - LUCIANA LEANDRO DA SILVA


Linguagem
⇒ Linguagem moderna
⇒ 100% compatível com Java
⇒ server ou client side, IoS, mas especialmente ANDROID
⇒ muti-paradigma
⇒ concisa
⇒ first-class language on Android.

https://techcrunch.com/2017/05/17/google-makes-kotlin-a-first-class-language-for-writing-a
Prof. Raphael Lacerda
ndroid-apps
11630837636 - LUCIANA LEANDRO DA SILVA
must
loved
language

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
hated?

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
wanted

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
val x var

Properties | Kotlin Documentation


(kotlinlang.org)

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Palavras Reservadas

Prof. Raphael Lacerda https://kotlinlang.org/docs/keyword-reference.html#hard-keywords


11630837636 - LUCIANA LEANDRO DA SILVA
Data Class

Data classes | Kotlin Documentation


(kotlinlang.org)

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Visibilidade

Kotlin Visibility Modifiers - public, protected,


internal, private | DigitalOcean

android - What's the difference when adding


a private modifier to arguments in a Kotlin's
constructor? - Stack Overflow

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/BANCO amazonia/2022
Uma prática essencial do Test Driven Development (TDD) é o teste de unidade, em que o desenvolvedor cria um ou mais
testes para cada unidade do sistema, como uma classe ou uma função ou um método, normalmente usando um pacote
feito na mesma linguagem de programação na qual o programa é feito, como JUnit para Java. Esses testes de unidade
são, então, necessariamente executados sempre que alguma modificação no código é feita, caracterizando uma outra
prática de testes, que ajuda a detectar quando partes do código que estavam funcionando passam a apresentar erros
após o código ter sido modificado.

Essa outra prática de testes citada é conhecida como testes de

A exaustão

B integração

C modificação

D mutantes

E regressão

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/Caixa/2021
O teste de unidade tem como finalidade testar os componentes
mais simples do software
A de forma isolada.
B quanto à sua coesão.
C quanto ao seu acoplamento.
D quando unificados na versão a ser lançada.
E quanto à sua capacidade de responder a entradas únicas.

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BANCO amazonia/2022
Em linguagens de programação como Java, onde existem estruturas de repetição, a recursão pode ser muitas vezes substituída pela
repetição, com ganhos de desempenho.

Considere a seguinte função recursiva segredo, em Java:

public static int segredo(int a) { if (a<2) { return 0; } else { return segredo(a-2)+1; }}

Que fragmento de código, em Java, contendo uma estrutura de repetição, é adequado para substituí-la?

A public static int alternativaA(int a) { int s = 0; for (int i=a;i>2;i--) { s++; } return s; }

B public static int alternativaB(int a) { int s = 0; for (int i=a;i<2 && i>0;i--) { s++; } return s; }

C public static int alternativaC(int a) { int s = 0; while (a>=2) { a-=2; s++; } return
s; }

D public static int alternativaD(int a) { int s = 0; do { a-=2; s++; } while (a>0 && a<=2);
return s; }

E public static int alternativaE(int a) { int s = 0; do { a-=2; s++; } while (a>0 && a<2);
return s; }

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BANCO amazonia/2022
Um conceito básico de programação a objetos é a sobrecarga.

Por meio desse conceito, é possível escrever métodos, em uma mesma classe, os quais

A definem apenas a existência do método que deve ser implementado em uma classe mais
especializada.

B executam um código único comum, mesmo possuindo nomes diferentes.

C possuem nomes diferentes, de acordo com a classe que os chama.

D possuem o mesmo nome, com argumentos pertencentes a classes, ou tipos, diferentes.

E reescrevem métodos de uma classe que se especializa, substituindo-os.

11630837636 - LUCIANA LEANDRO DA SILVA


Cesgranrio/2019
Que linha de programação Java deve ser dada para obter, via JDBC,
o resultado da consulta guardada na variável S, da classe String,
sabendo-se que a variável st é da classe Statement?
A ResultSet rs = jdbc.executeQuery (S);
B ResultSet rs = st.executeQuery(S);
C ResultSet rs = st.runQuery(S);
D st = S.executeQuery();

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/2018

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/2018
A linha marcada por um comentário que causará um erro em tempo
de compilação é a linha

A1
B2
C3
D4
E5

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/2018
Que comando deve ser inserido na linha vi para exibir o valor 5 na
console?

A System.out.println(a);
B System.out.println(Classe.a);
C System.out.println(Integer.parseInt(a));
D System.out.println(super.a);
E System.out.println(this.a);

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/2018
A linguagem de programação Java suporta
A passagem de parâmetros de tipos primitivos por referência
B sobrecarga de operadores
C herança múltipla
D polimorfismo
E ponteiros

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/2014

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/2014
Um técnico de informática identifica que esse programa
A não compila em nenhuma versão da linguagem Java
B compila apenas a partir da versão Java SE 6, porém apresentará um
erro de execução.
C compila apenas a partir da versão Java SE 7, porém apresentará
um erro de execução.
D compila e executa perfeitamente a partir da versão Java SE 6.
E compila e executa perfeitamente a partir da versão Java SE 7.

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/2012

JavaEE / JakartaEE - questões


Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/2012
Qual instrução usa corretamente o parâmetro request para atribuir o
objeto armazenado na variável de sessão a uma variável de referência
do tipo Usuario e denominada usr, definida no corpo da função
doGet?
A usr = (Object) request.getSession().getParameter("usuario");
B usr = (Usuario) request.getSession().getAttribute("usuario");
C usr = (Usuario) request.getSession().getParameter("usuario");
D usr = request.getSession().getAttribute("usuario");
E usr = request.getSession().getParameter("usuario")
JavaEE / JakartaEE - questões
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
JSTL core

JSP
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Cesgranrio/BB/2018

JSP
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/UNIRIO/2019
As classes e interfaces Java a seguir ocupam arquivos distintos, situados no pacote default

public interface ITA {

void a_m01();

void a_m02();

public interface ITB extends ITA {

void b_m01();

public abstract class CA {

private void a_ma02( ) {

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/UNIRIO/2019
public final void a_m01() {
}
protected void op02( ) {
}
public abstract void op03();
}
Qual versão da classe XY NÃO produzirá erros de compilação?

11630837636 - LUCIANA LEANDRO DA SILVA


PYTHON

Prof. Raphael Lacerda

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021
Ao analisar um conjunto de dados com Python, um programador resolveu usar um dataframe Pandas de
nome dp para guardá-los. Em um certo momento, ele resolveu que precisaria usar, apenas, quatro colunas
de dados do dataframe: “pais“, “ano“, “renda per capita“ e “expectativa de vida“.

Que fragmento de código Python 3 deve ser usado para selecionar, apenas, essas quatro colunas do
dataframe dp?

(A) dp[“pais“,“ano“,“expectativa de vida“,“renda per capita“]

(B) dp[[“pais“,“ano“,“expectativa de vida“,“renda per capita“]]

(C) dp(“pais“,“ano“,“expectativa de vida“,“renda per capita“)

(D) dp([“pais“,“ano“,“expectativa de vida“,“renda per capita“])

(E) dp[dp[“pais“,“ano“,“expectativa de vida“,“renda per capita“]]

11630837636 - LUCIANA LEANDRO DA SILVA


Pandas

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Que tipo de ajuda?
⇒ intervalo de dados
⇒ trabalho com múltiplos dados
⇒ planilhas

10 minutes to pandas — pandas 1.5.2


Pandas Example - Python - OneCompiler documentation (pydata.org)
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Métodos e atributos do DataFrame
⇒ info() → informações sobre o DataFrame
⇒ head() → mostra os 5 primeiros por padrão
⇒ tail() → mostra os 5 últimos
⇒ dtypes → tipos dos dados do DataFrame
⇒ shape → linhas e colunas
⇒ concat → concatenar DataFrames

Prof. Raphael Lacerda https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html


11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/BB/2021
Considere o código Python a seguir.
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]]) print (a[a>5])
O que será exibido após esse código ser executado?

11630837636 - LUCIANA LEANDRO DA SILVA


Numpy

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
ndarray Vs standard python

tem o tamanho fixado na pode aumentar dinamicamente


criação
mesmo tipo (homogêneo) qualquer tipo
facilitar cálculos matemáticos não lida bem com grande
quantidade de dados
mais eficiente com menos + verborrágico
código
consome menos memória - otimizado
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Atributos
⇒ ndim: número de eixos
⇒ shape: indica o tamanho do array em cada dimensão (linhas e
colunas)
⇒ size: total de elementos do array
⇒ dtype: tipo dos elementos do array

Online NumPy Compiler (tutorialspoint.com)

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/BB/2021
Considere o código Python a seguir.
import numpy as np
valorAplicado = np.array([5000, 6000, 7000, 8000]) taxaJuros =
np.array([1, 2, 3, 4])
resultado = valorAplicado * taxaJuros

11630837636 - LUCIANA LEANDRO DA SILVA


IAC

Prof. Raphael Lacerda

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021
Em um ambiente Cluster, há um servidor Linux que tem o Ansible instalado.

Para construir um arquivo YAML, que informe os passos que o Ansible realizará
automaticamente na conexão com os servidores que fazem parte do Cluster, além de exe-
cutar um conjunto de tarefas solicitadas, o administrador desse servidor deve seguir o padrão

(A) Apache-Start

(B) Nodel

(C) Playbook

(D) Taskbook

(E) Tower

11630837636 - LUCIANA LEANDRO DA SILVA


Infra as Code

Devops https://stackshare.io/stackups/ansible-vs-terraform
Prof. Raphael Lacerda
https://logz.io/blog/terraform-vs-ansible-vs-puppet/
11630837636 - LUCIANA LEANDRO DA SILVA
https://medium.com/edureka/ansible-cheat-sheet-guide-5fe615ad65c0
Devops
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
code na infra

Devops
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
code na infra

Devops
Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
Palpites

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Palpites

https://www.digitalocean.com/com
munity/cheatsheets/how-to-use-ans
ible-cheat-sheet-guide

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Palpites

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
#TYPESCRIPT

Prof. Raphael Lacerda

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BANCO amazonia/2022
O tratamento de erros e exceções é, atualmente, uma exigência para as linguagens de
programação.
Qual fragmento de código, em Javascript, é um exemplo válido desse tratamento?
A try { adddlert("Bem vindo!"); } else(err) { window.alert(err.message); }
B try { adddlert("Bem vindo!"); } except(err) { window.alert(err.message); }
C try { adddlert("Bem vindo!"); } catch(err) { window.alert(err.message); }
D try { adddlert("Bem vindo!"); } catch(err) { window.alert(err.message); } else {
window.alert("sem erros"); }
E try { adddlert("Bem vindo!"); } catch(err) { window.alert(err.message); } otherwise {
window.alert("sem erros"); }

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BANCO amazonia/2022
Um programador teve por tarefa escrever uma função Javascript que receba uma string como parâmetro e retorne outra
string. A string retornada deve conter os mesmos caracteres que a string recebida, sem espaços em branco.

Exemplo:

String recebida: ‘ B r a s il ‘ (total de 14 caracteres e 8 espaços em branco)

String retornada: ‘Brasil’ (total de 6 caracteres e nenhum espaço em branco)

Considere que, na função a ser escrita, duas aspas simples seguidas (‘‘) representam uma string vazia, e duas aspas
simples com um espaço entre elas (‘ ‘) representam um caracter de espaço em branco.

Qual função realiza o que foi pedido a esse programador?

A function tiraBranco(str) { var i=0,len=str.length,aux=’’;

while(i<len) { if(str[i]===’ ‘) aux=aux+str.slice(i+1,str.length); i++; } return aux; }

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BANCO amazonia/2022
B function tiraBranco(str) { if(str.length===0) return ‘’; if(str[0]===’ ‘) return
tiraBranco(str.slice(1,str.length)); else return str[0]+tiraBranco(str.slice(1,str.length)); }

C function tiraBranco(str) { var i=0,len=str.length,aux=’’; while(i<len) { if(str[i]===’ ‘)


aux=aux+str[i]; i++; } return aux; }

D function tiraBranco(str) { var aux=’’;

for(let c in str) { if(c!==’ ‘) aux+=c; } return aux; }

E function tiraBranco(str) { if(str.length===0) return ‘’; var c=str[0],ret;


ret=tiraBranco(str.slice(str.length)); if(str[0]===’ ‘) return ret; else return c+ret; }

javascript - What is the difference between


String.slice and String.substring? - Stack
String.prototype.slice() - JavaScript | MDN Overflow
(mozilla.org)
11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/ELETROBRAS/2022
Um usuário realizou a autenticação na aplicação Web de um banco. Durante a utilização dessa aplicação, o
usuário sofreu um ataque de engenharia social que o fez clicar em um link presente numa mensagem de
e-mail com conteúdo HTML e cuja URL corresponde a uma requisição válida na aplicação Web do banco.
Essa URL foi processada pelo navegador do usuário, e a requisição foi enviada e executada com sucesso
em nome do usuário da aplicação Web.

Esse ataque bem-sucedido demonstra que a aplicação Web do banco está vulnerável ao ataque de

A SQL Injection

B XPATH Injection

C Buffer Overflow

D CSRF

E XSS

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021
Considere o fragmento de código TypeScript a seguir.
const a = <T extends {b: string}>(obj: T) => { <código removido>
javascript - How to restrict object fields in
}; Typescript using Type parameter - Stack
Overflow
Com relação ao código apresentado acima, a(o)
(A) função a() retorna um objeto do tipo string. Using Typescript Generic Constraints to
Restrict Function Arguments Based on Other
(B) variável a é uma lista de objetos do tipo string. Arguments - DEV Community 󰠁󰞵

(C) variável a é um dicionário cujas chaves são objetos do tipo string.


(D) objeto que for passado para a função a() deve ter um campo b do tipo string.
(E) valor retornado pela função a() é um objeto que estende um objeto do tipo string.

11630837636 - LUCIANA LEANDRO DA SILVA


Ecossistema

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Características
⇒ Compilada (error checking)
⇒ Fortemente e Estaticamente tipada
⇒ Orientação a Objetos

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Sintaxe básica

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Variáveis

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
Palavras Reservadas

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
strings

Prof. Raphael Lacerda


11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/BB/2021
Em TypeScript 4, é possível usar o seguinte fragmento de código:

// definir x

const y = (...args: number[]) => args.reduce(x, 0);

Que fragmento de código apresenta uma versão compilável e executável da definição de x que poderia
aparecer no lugar do comentário “// definir x” ?

(A) const x = 1;

(B) const x = [1,2,3];

(C) const x = (a:number) => [a*2];

(D) const x = (a:number[]) => a[0];

(E) const x = (a:number,b:number) => a+b;


Array.prototype.reduce() - JavaScript | MDN
(mozilla.org)
11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/BB/2018
Um desenvolvedor Web precisa transformar em JSON a seguinte variável, em um programa
JavaScript:
var d1 = { "nome":"Ana Anacleto", "idade":31 };
Qual fragmento de código faz isso corretamente?
A var d2 = d1.stringfy(d1)
B var d2 = d1.parse()
C var d2 = JSON.stringify(d1);
D var d2 = JSON.parse(dados);
E var d2 = d1.toJSON();

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BANCO amazonia/2018
A hora não irá aparecer no <div> porque

A o append em jQuery não pode ser utilizado para containers vazios; deveria ter sido substituído por html.

B o objeto identificado por idLugar ainda não existe quando o script é executado.

C o símbolo de # está faltando na frente da identificação na definição do <div>

D a variável data está escrita erradamente (está escrita em português).

E os métodos getHours e getMinutes estão escritos no plural, quando deveriam ser, respectivamente, getHour e getMinute.

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/IBGE/2013
Considere o seguinte trecho de código em Javascript.

var studentGrade;

var firstNumber = 50;

var secondNumber = 90;

studentGrade = firstNumber*0.7 + secondNumber*0.3;

if (studentGrade>=90) document.writeln (“A”);

else if (studentGrade>=80) document.writeln (“B”);

else if (studentGrade>=70) document.writeln (“C”);

else if (studentGrade>=60) document.writeln(“D”);

else document.writeln (“E”);

Após análise desse trecho, constata-se que será impresso o

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/IBGE/2013
Considere o seguinte trecho de código em Javascript.

var sum = 0;

for (var number = 2; number < 100; number +=2)

sum+=number;

Após análise do trecho, verifica-se que será armazenado na variável sum a soma de todos os números.

A pares entre 2 e 98

B pares entre 2 e 100

C ímpares entre 2 e 98

D ímpares entre 2 e 100

E entre 2 e 100

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/IBGE/2013
Usando o conjunto de tecnologias conhecido como AJAX, é possível fazer requisições assíncronas a um servidor. Para
isso, é necessário criar um objeto da classe XMLHttpRequest, a menos que se esteja trabalhando no ambiente do
Microsoft Internet Explorer de versões anteriores a 7. O código para isso é:

xmlhttp=new XMLHttpRequest() ;

Que fragmento de código corresponde aos dois passos necessários para enviar uma requisição a um servidor?

A xmlhttp.connect("ajax_info.txt",true); xmlhttp.get( );

B xmlhttp.connect("GET","ajax_info.txt",true); xmlhttp.send( );

C xmlhttp.initialize("GET","ajax_info.txt",true); xmlhttp.send( );

D xmlhttp.open("ajax_info.txt",true); xmlhttp.get( );

E xmlhttp.open("GET","ajax_info.txt",true); xmlhttp.send( );

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2018
Observe as seguintes Figuras extraídas de uma página HTML com Javascript. A Figura 1 apresenta um
campo do tipo select sendo selecionado pelo usuário (no caso, a opção 2). A Figura 2 mostra o que
acontece imediatamente depois que o usuário seleciona a opção. O Google Chrome foi utilizado para
capturar a imagem, mas o efeito seria o mesmo nos navegadores mais utilizados.

A página HTML com Javascript que apresenta esse comportamento é:

HTML DOM Event Object (w3schools.com)

HTML DOM Select Object (w3schools.com)


11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/BB/2018

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2018

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/CEFET-RJ/2014
Em um texto em um website educacional, um professor deseja que um título (H1) seja
automaticamente trocado por outro texto quando clicado.
Um desenvolvedor decidiu implementar uma função em JavaScript trocar(id) que troca o texto
de um elemento DOM passado como o parâmetro id. Essa função está apresentada a seguir.
function trocar(id)
{
id.innerHTML="Título Mudado"
}
Que fragmento de HTML corresponde à execução do comportamento desejado pelo
professor?
HTML DOM Event Object (w3schools.com)

HTML DOM Select Object (w3schools.com)


11630837636 - LUCIANA LEANDRO DA SILVA
CESGRANRIO/CEFET-RJ/2014

HTML DOM Event Object (w3schools.com)

HTML DOM Select Object (w3schools.com)


11630837636 - LUCIANA LEANDRO DA SILVA
#MOBILE

Prof. Raphael Lacerda

11630837636 - LUCIANA LEANDRO DA SILVA


QUESTÕES

Prof. Raphael Lacerda

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021
Um programador de aplicativos para dispositivos Apple com iOS
recebeu a seguinte parte de um código, escrito na linguagem
swift:

11630837636 - LUCIANA LEANDRO DA SILVA


CESGRANRIO/BB/2021
A execução dessa parte do código produz como resposta
(A) o carro eh
(B) a casa eh
(C) o carro não eh
(D) a casa eh forte
(E) o carro eh forte

11630837636 - LUCIANA LEANDRO DA SILVA


FEPESE/2022
Componentes de aplicativo são os blocos de construção de um app Android. Cada
componente é um ponto de entrada por onde o sistema ou o usuário pode entrar no
aplicativo. Alguns componentes dependem de outros.
Assinale a alternativa que contém quatro tipos diferentes de componentes de aplicativo.
A Atividades, Serviços, Broadcast Receivers e Provedores de Conteúdo
B Provedores de Interface, Provedores de Atividades, Serviços, Unicast Senders e Multicast
C Provedores Internos, Provedores Externos, Atividades, Serviços e Unicast Receiver
D Provedores de Atividades, Broadcast sender, Servidores, Unicast Receiver e Interfaces
E Provedores de Serviços, Unicast receivers, Atividades, Objetos de Interface e Provedores de
Conteúdo

11630837636 - LUCIANA LEANDRO DA SILVA


Componentes de Aplicativo

Fundamentos de aplicativos |
Android Components with Examples - DEV
Desenvolvedores Android | Android
Community
Developers
11630837636 - LUCIANA LEANDRO DA SILVA
UFRPE/2022
O framework Bootstrap possui uma abordagem conhecida como mobile first, a qual é uma
estratégia que otimiza o código para dispositivos móveis inicialmente. Dentro do contexto de
interfaces gráficas de um website, assinale a alternativa que contém a tag responsável por
garantir uma renderização adequada do site, nos mais variados tamanhos de dispositivos
eletrônicos.

A <meta http-equiv="refresh" content="30">

B <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

C <meta name="description" content="Free Web tutorials">

D <meta name="viewport" content="Mobile, Desktop, Tablet, JavaScript">

E <meta name="keywords" content="HTML, CSS, JavaScript">

11630837636 - LUCIANA LEANDRO DA SILVA


FGV/2022
No contexto do ambiente Android, considere as seguintes
afirmativas a respeito do SQLite.
I. Deve ser utilizado com o apoio de um servidor de bancos de
dados separado.
II. Suporta transações (ACID).
III. Sua instalação requer cuidados, haja vista o número de
arquivos que devem ser preparados.

11630837636 - LUCIANA LEANDRO DA SILVA


AOCP/2021
A classe View é a base para o design da interface do usuário. Um
objeto View é projetado para conter qualquer coisa que precise
ser visualizada em um aplicativo Android usando a tela do
dispositivo.

11630837636 - LUCIANA LEANDRO DA SILVA


IF-RS/2021
Sobre a RecyclerView do Android, é procedente afirmar que:
A não possui suporte a animações ao adicionar ou remover
elementos da lista.
B permite alterar o gerenciador de layout para renderizar as views
como listas, grids, ou outra forma customizada.
C não utiliza, diferente do ListView, o conceito de adapters para
preencher o conteúdo da lista.
D trata os seus eventos de clique, assim como ListView
Create dynamic lists with RecyclerView |
Android Developers
11630837636 - LUCIANA LEANDRO DA SILVA
IF-RS/2021
Analise as afirmações a seguir sobre a classe Handler e AsyncTask do Android:

I. O método onPreExecute() da classe AsyncTask deve ser executado manualmente para dar
início ao Thread.

II. O método sendMensage(msg) é um método da classe Handler que envia a mensagem


informada para a fila de mensagens para ser processada assim que possível.

III. A classe AsyncTask gerencia internamente as threads e os handlers necessários para


atualizar a interface.

IV. A classe AsyncTask contém métodos para atualizar o andamento (progresso) de uma tarefa,
por exemplo, o progresso de um download.

Estão corretas apenas as afirmativas

AsyncTask | Android Developers


11630837636 - LUCIANA LEANDRO DA SILVA
IF-RS/2021
Analise as afirmações a seguir sobre o uso de Threads, Handler e AsyncTask em sistemas para Android:

I. Nas versões mais atuais do Android, se o código fizer uma operação de I/O na thread principal, o
sistema vai lançar a exceção NetWorkOnMainThreadException.

II. No Android, cada aplicação é executada em um único processo e cada processo, por sua vez, tem uma
Thread dedicada, a qual é responsável por desenhar e tratar todos os eventos da interface gráfica e é
conhecida como Main Thread ou UI Thread.

III. A classe Handler é utilizada para enviar uma mensagem para ser processada pela UI Thread que,
geralmente, é um código que vai atualizar a view.

IV. A Main Thread é utilizada para gerenciar todos os eventos e funções da aplicação e a UI Thread é
responsável apenas pela interface da aplicação.

Estão corretas apenas as afirmativas


NetworkOnMainThreadException | Android
Developers
Handler | Android Developers
11630837636 - LUCIANA LEANDRO DA SILVA
Threads do Android

Processes and threads overview | Android


Developers Android Threads Tutorial for Beginners | by
Abhishek
11630837636 - LUCIANA LEANDRO DA SILVASrivastava | Medium
IF-RS/2021
Um Fragment é um componente independente do Android que pode ser usado por uma Activity, analise
as afirmações abaixo sobre Fragments:

I. Fragment é utilizado para dividir uma Activity em várias partes, porém o fragment não tem controle
sobre os eventos e não consegue gerenciar seu próprio conteúdo.

II. O Ciclo de vida de um fragment conta com o método onAttach(activity) e é chamado logo depois de
um fragment ser associado com a activity, o que acontece assim que a activity infla o layout do fragment
pela tag ou o fragment é adicionado dinamicamente via FragmentTransaction.

III. O método onDetach() é chamado para indicar que o fragment não está mais sendo utilizado e será
destruído.

IV. A API do Fragments possui a classe android.app.FragmentTransaction, que é utilizada para adicionar,
remover ou substituir os fragments dinamicamente no layout.

11630837636 - LUCIANA LEANDRO DA SILVA


IF-RS/2021
Um Fragment é um componente independente do Android que pode ser usado por uma Activity, analise
as afirmações abaixo sobre Fragments:

I. Fragment é utilizado para dividir uma Activity em várias partes, porém o fragment não tem controle
sobre os eventos e não consegue gerenciar seu próprio conteúdo.

II. O Ciclo de vida de um fragment conta com o método onAttach(activity) e é chamado logo depois de
um fragment ser associado com a activity, o que acontece assim que a activity infla o layout do fragment
pela tag ou o fragment é adicionado dinamicamente via FragmentTransaction.

III. O método onDetach() é chamado para indicar que o fragment não está mais sendo utilizado e será
destruído.

IV. A API do Fragments possui a classe android.app.FragmentTransaction, que é utilizada para adicionar,
remover ou substituir os fragments dinamicamente no layout.
Fragment lifecycle | Android Developers

11630837636 - LUCIANA LEANDRO DA SILVA


Ciclo de Vida

Fragment Lifecycle Tutorial With Example In


Prof. Raphael Lacerda Android Studio | Abhi Android
11630837636 - LUCIANA LEANDRO DA SILVA
IF-RS/2021
Em relação ao ciclo de vida de classe Activity, é procedente afirmar que o método

A onStart() é chamado quando a activity está ficando visível ao usuário e já tem uma view.

B onResume() é chamado quando uma activity foi parada temporariamente e está sendo
iniciada outra vez.

C onStop() é chamado sempre que a tela da activity fechar. Isso acontece quando o usuário
pressiona o botão Home ou botão voltar para sair da aplicação ou, ainda, quando recebe uma
ligação no telefone. Ele é chamado para salvar o estado da aplicação.

D onClose() literalmente encerra a execução de uma activity. Ele pode ser chamado
automaticamente pelo sistema operacional para liberar recursos ou pode ser chamado pela
aplicação pelo método finish() da classe activity.

The activity lifecycle | Android Developers


11630837636 - LUCIANA LEANDRO DA SILVA
Ciclo de Vida

The activity lifecycle | Android Developers


Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
IF-RS/2021
A respeito da classe Activity, no desenvolvimento de aplicações Android, analise as afirmações
a seguir:

I. A classe Activity deve ser herdada da classe android.app.Activity ou de alguma subclasse


desta, a qual representa uma tela da aplicação e é responsável por tratar eventos gerados
nessa tela.

II. a classe Activity deve sobrescrever o método onCreate(bundle). Esse método é obrigatório e
responsável por realizar a inicialização necessária para executar a aplicação.

III. a classe Activity é uma subclasse da classe FragmentActivity.

IV. a classe AppCompatActivity é uma subclasse da classe Activity.

Estão corretas apenas as afirmativas

AppCompatActivity | Android Developers The activity lifecycle | Android Developers


11630837636 - LUCIANA LEANDRO DA SILVA
IF-RS/2021
Para iniciar o desenvolvimento de aplicações Android é necessário realizar a instalação de alguns softwares
e realizar algumas configurações. Sabendo disso, analise as afirmações abaixo sobre o ambiente de
desenvolvimento Android:

I. Android SDK é o software utilizado para desenvolver aplicações no Android, que tem um emulador para
simular o dispositivo, ferramentas utilitárias e uma API completa para a linguagem Java, com todas as
classes necessárias para desenvolver aplicações.

II. Como existem muitas versões do sistema operacional Android, existe um identificador de cada uma
dessas plataformas que se chama API Level.

III. Gradle é um moderno sistema de gerenciamento de banco de dados para Android.

IV. O Android Studio conta com um utilitário chamado SDK Manager onde é possível baixar todas as
plataformas do Android e suas documentações, drive USB do Google para conectar um dispositivo na
USB, bibliotecas de compatibilidade, bibliotecas do Google Play Services etc.

11630837636 - LUCIANA LEANDRO DA SILVA


IF-RS/2021
Sobre o arquivo AndroidManifest.xml, é procedente a seguinte afirmação:
A Dentro da tag < manifest > é declarado o pacote principal do projeto, utilizando a
tag < package >
B O arquivo AndroidManifest.xml contém a documentação completa da aplicação
criada, inclusive, das funções globais da aplicação.
C O arquivo AndroidManifest.xml é gerado automaticamente ao compilar o projeto e
permite que a aplicação acesse qualquer recurso como arquivo e imagens utilizando
constantes.
D No arquivo AndroidManifest.xml são realizadas várias configurações da aplicação e
é nele que são inseridos os dados de acesso ao banco de dados.

App manifest overview | Android Developers

11630837636 - LUCIANA LEANDRO DA SILVA


SWIFT

Prof. Raphael Lacerda

11630837636 - LUCIANA LEANDRO DA SILVA


@canetas.pretas

CONCEITOS
BÁSICOS

11630837636 - LUCIANA LEANDRO DA SILVA


Características da Linguagem
● Histórico
● Versões
○ What’s new in Swift 5.0 – Hacking with Swift

About Swift | Documentation


11630837636 - LUCIANA LEANDRO DA SILVA
Panorama de uso
● ranking stack overflow

11630837636 - LUCIANA LEANDRO DA SILVA


Panorama de uso
● ranking stack overflow

11630837636 - LUCIANA LEANDRO DA SILVA


Prof. Raphael Lacerda
11630837636 - LUCIANA LEANDRO DA SILVA
@canetas.pretas

OBJECTIVE C
VS
SWIFT

11630837636 - LUCIANA LEANDRO DA SILVA


@canetas.pretas

SINTAXE

11630837636 - LUCIANA LEANDRO DA SILVA


Variáveis
● var vs let <nome> : <type> = <value>
● type inference
○ Chapter 5 Static Typing and Type Inference | Learn Swift (aidanf.net)

● let (x, y) = (1, 2)


● strongly typed and Statically typed
○ Cannot assign value of type 'Int' to type 'String'
● Conversão
○ let a = 5 var nome: String = "lacerda"
○ let b = 10.3
○ let c = Double(a)+b
var nome = "lacerda"

The Basics | Documentation (swift.org) Is Swift a dynamic or static language? - Stack


Overflow
11630837636 - LUCIANA LEANDRO DA SILVA
Data Types
● tipos padrão
● type safe

Swift Data Types (With Examples)


Swift - Data Types - GeeksforGeeks
(programiz.com)
11630837636 - LUCIANA LEANDRO DA SILVA
Operadores
● Assignment, Math, Comparison, Identity, Logical

Basic Operators | Documentation (swift.org)


Swift Operators (With Examples)
(programiz.com) Structures and Classes | Documentation
(swift.org)
11630837636 - LUCIANA LEANDRO DA SILVA
Operadores alternativos

Basic Operators | Documentation (swift.org)


Swift Operators (With Examples)
(programiz.com) Structures and Classes | Documentation
(swift.org)
11630837636 - LUCIANA LEANDRO DA SILVA
@canetas.pretas

STRINGS

11630837636 - LUCIANA LEANDRO DA SILVA


Strings
● inicializando Strings
○ almost endless number of ways to create a String
○ Swift String Cheat Sheet (useyourloaf.com)

● concatenação (+) (+=)


○ somente para strings
● interpolação \()
○ construct a new String value from a mix of variables
● multiline
○ """
○ To be,
○ or not
○ """

Strings and Characters | Documentation


Swift String Methods | Programiz (swift.org)
11630837636 - LUCIANA LEANDRO DA SILVA
Strings

● funções básicas
○ == , < , >
○ uppercased() | Apple Developer Documentation

○ substring - How does String substring work in Swift - Stack Overflow - Why cannot subscript String with an Int in
Swift | by Banghua Zhao | Medium

● sequência de caracteres the result is an instance of


Substring, not another string.

Strings and Characters | Documentation


Swift String Methods | Programiz (swift.org)
11630837636 - LUCIANA LEANDRO DA SILVA
@canetas.pretas

CONDICIONAIS

11630837636 - LUCIANA LEANDRO DA SILVA


if if nome.count > 5{
print("nome grande")
● } else{
print("nome pequeno")
}

Control Flow | Documentation (swift.org)


11630837636 - LUCIANA LEANDRO DA SILVA
switch In contrast with switch statements
switch idade{ in C and Objective-C, switch
statements in Swift don’t fall
● não precisa through the bottom of each case
case 10: and into the next one by default.
de break Instead, the entire switch
print("pode entrar") statement finishes its execution as
soon as the first matching switch
case 11: case is completed,
print("pode sair")
case 12:
print("ferrou")
default:
print("nao vai dar nada")

}
Control Flow | Documentation (swift.org)
11630837636 - LUCIANA LEANDRO DA SILVA
Default obrigatório?
● Swift only truly verifies that a switch block is exhaustive when
working with enum types
○ ou seja, não é mas é!
● switch must be exhaustive, consider adding a default clause - Evolution / Discussion - Swift Forums

ios - Exhaustive condition of switch case in This default case is indicated by the
Swift - Stack Overflow default keyword, and must always
appear last.

Control Flow | Documentation (swift.org)


11630837636 - LUCIANA LEANDRO DA SILVA
By chatGPT

Control Flow | Documentation (swift.org)


11630837636 - LUCIANA LEANDRO DA SILVA
guard let vs if let
● guard
○ is used to provide early return without requiring nesting of the rest of the
function. Control Flow | Documentation (swift.org)
○ designed to exit the current function, loop, or condition if the check fails.
● let
○ does not require anything special of it. It can return or not.

guard let path = Bundle.main.path(forResource: "canetaspretas", ofType: "png")


else {
debugPrint("Photo not found")
return
if vs if let vs guard let in Swift · Suneet swift2 - Swift: guard let vs if let - Stack
} Agrawal (agrawalsuneet.github.io) Overflow

11630837636 - LUCIANA LEANDRO DA SILVA


Optional
var vitorias:Int
● SafeGuard ao invés de Nil print (vitorias)
○ pode ser nula ou vazio
● Forced Unwrapping
○ Force unwrapping - a free Hacking with Swift tutorial

○ avoid - Optional Chaining | Documentation (swift.org)


■ let roomCount = john.residence!.numberOfRooms
● solução: optional binding

Optionals and Unwrapping in Swift | Swift


Anytime

11630837636 - LUCIANA LEANDRO DA SILVA


@canetas.pretas

LOOPS

11630837636 - LUCIANA LEANDRO DA SILVA


for-in / while-in
● break let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
● continue
print("Hello, \(name)!")
● label statement }

let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]


for (animalName, legCount) in numberOfLegs {
print("\(animalName)s have \(legCount) legs")
}

Control Flow | Documentation (swift.org)


11630837636 - LUCIANA LEANDRO DA SILVA
@canetas.pretas

DATA STRUCTURES

11630837636 - LUCIANA LEANDRO DA SILVA


Collections

If you create an array, a set, or a


dictionary, and assign it to a variable,
the collection that’s created will be
mutable.

Collection Types | Documentation (swift.org)


11630837636 - LUCIANA LEANDRO DA SILVA
Arrays
● apenas elementos do mesmo tipo
● ordem de inserção
● métodos
○ filter(_:) | Apple Developer Documentation

○ forEach(_:) | Apple Developer Documentation

● var anyArray: [Any] = []


○ não é o jeito mais otimizado de lidar com objetos de diferentes tipos

Collection Types | Documentation (swift.org)


11630837636 - LUCIANA LEANDRO DA SILVA
Tuples
● armazenar múltiplos valores de diferentes tipos
● pode ser usado para retornar múltiplos valores de uma função
● é um grupo temporário de valores relacionados
○ não é adequado para estruturas complexas
● NamedTuples

Swift Tuple (With Examples) (programiz.com)


11630837636 - LUCIANA LEANDRO DA SILVA
Set
● conjunto de valores
● não há ordem
● não há repetição
● hashable values

A set type can’t be inferred from an


array literal alone, so the type Set
must be explicitly declared.

Set | Apple Developer Documentation Collection Types | Documentation (swift.org)


11630837636 - LUCIANA LEANDRO DA SILVA
Dictionaries
● hashtable
● keys (same type) and values (same type)

Dictionary | Apple Developer Documentation Collection Types | Documentation (swift.org)


11630837636 - LUCIANA LEANDRO DA SILVA
@canetas.pretas

FUNCTIONS

11630837636 - LUCIANA LEANDRO DA SILVA


Functions
● executam uma atividade específica
● func - palavra reservada
● pode retornar múltiplos argumentos
● argument labels, default (_) and default values (=)
○ Function parameters are immutable by default.
○ inout func someFunction(argumentLabel parameterName: Int) {
}
○ variadic (numbers: Int…)
● Function Types

What is the '$0' syntax in Swift | Apple


Developer Forums Functions | Documentation (swift.org)
11630837636 - LUCIANA LEANDRO DA SILVA
@canetas.pretas

CLOSURES

11630837636 - LUCIANA LEANDRO DA SILVA


Closures
● self-contained blocks of functionality that can be stored in a
variable.
○ blocos de funcionalidades
● funções anônimas passadas como argumento

Closures | Documentation (swift.org)

11630837636 - LUCIANA LEANDRO DA SILVA


@canetas.pretas

STRUCTURES

11630837636 - LUCIANA LEANDRO DA SILVA


Structures
● propriedades, métodos, initializers
● Thread Safety
○ São value types. Ou seja, seus valores são copiados para
um novo espaço de memória.
● Sem herança
● métodos, em regra, não podem alterar as propriedades
Struct vs. Class in Swift Explained - Appy Pie

Structures and Classes | Documentation


(swift.org)

11630837636 - LUCIANA LEANDRO DA SILVA


Classes
● tudo que uma structure faz
● herança
● type casting
● Deinitializers
● Reference counting
○ seus valores são passados por referência para o mesmo espaço de memória
● Stored vs Computed Properties
○ Computed properties vs methods | Swift by Sundell Class vs Struct in Swift. When we need to
decide how to store… | by Burak Akyalçın |
Medium

Choosing Between Structures and Classes |


Apple Developer Documentation
11630837636 - LUCIANA LEANDRO DA SILVA
Subscripts
● o significado depende do contexto
○ atalho para acessar membros de uma collection []

Subscripts | Documentation (swift.org)


11630837636 - LUCIANA LEANDRO DA SILVA
@canetas.pretas
OBRIGADO!
FOCO NA
@canetaspretas

APROVAÇÃO
@
oscanetaspretas

@canetaspretas Prof. Raphael Lacerda

11630837636 - LUCIANA LEANDRO DA SILVA


Resumo Servlet
● Extensão da classe HttpServlet: Para criar uma servlet, você precisa criar uma classe Java que estenda a classe
HttpServlet. Essa classe fornece métodos que permitem que você processe solicitações HTTP e envie respostas de
volta ao cliente.
● Método doGet() e doPost(): Esses são dois dos principais métodos fornecidos pela classe HttpServlet. O método
doGet() é usado para processar solicitações HTTP GET, enquanto o método doPost() é usado para processar
solicitações HTTP POST.
● Ciclo de vida da servlet: Uma servlet tem um ciclo de vida que inclui a inicialização, processamento de solicitações
e destruição. Durante a inicialização, a servlet pode ser configurada para lidar com solicitações específicas.
Durante o processamento de solicitações, a servlet recebe uma solicitação HTTP e envia uma resposta HTTP.
Durante a destruição, a servlet é liberada da memória.
● Objeto HttpServletRequest: Esse objeto fornece informações sobre a solicitação HTTP, como o método HTTP
usado, os parâmetros da solicitação e o cabeçalho da solicitação.
● Objeto HttpServletResponse: Esse objeto é usado para enviar a resposta HTTP de volta ao cliente. Ele fornece
métodos para definir o código de status da resposta, os cabeçalhos da resposta e o conteúdo da resposta.
● Mapeamento de URL: Uma servlet é mapeada para uma URL específica. Quando o servidor web recebe uma
solicitação para essa URL, ele direciona a solicitação para a servlet correspondente.

11630837636 - LUCIANA LEANDRO DA SILVA

You might also like