Lista de Exercícios de Projeto e Implementação Orientado a Objeto – Lista 3 (10 Questões)
Questão 1
(TJ-RO/2008) 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()
Questão 2
(Copel/2010) Na especificação de Servlets e JSP, o escopo de sessão é gerenciado pela interface HttpSession.
Sobre essa interface, analise as afirmativas abaixo:
I. Para manter um estado conversacional com o cliente, a API usa Cookies ou reescrita de URL.
II. O identificador da sessão é controlado por um campo de formulário escondido (campo hidden).
III. Os objetos inseridos na sessão ficam armazenados no cliente.
IV. Uma sessão pode ser invalidada através do método invalidate.
V. É possível inserir, consultar e remover atributos no escopo da sessão através de uma chave String.
Assinale a alternativa CORRETA:
a) Apenas as afirmativas I, II, III e V estão corretas.
b) Apenas as afirmativas I, II, IV e V estão corretas.
c) Apenas as afirmativas I, IV e V estão corretas.
d) Somente a afirmativa III está correta.
e) Todas as afirmativas estão corretas.
Questão 3
Dentre as alternativas abaixo, qual não corresponde a uma técnica destinada a manter a sessão do cliente:
a) Reescrita URL
b) Campos ocultos
c) Cookies
d) Clusterização
e) Objeto sessão
Questão 4
As aplicações web normalmente utilizam sessões que proporcionam um ambiente amigável para seus usuários e uma melhor forma de gerenciamento por parte da aplicação.
Quando se desenvolve uma aplicação web, é possível transferir informações entre diferentes servlets de duas maneiras: pela requisição e pela sessão.
Analise as afirmativas a seguir e selecione a alternativa correta:
I) Os dados armazenados em uma requisição têm um tempo de vida igual ao da requisição.
II) Os dados armazenados na sessão ficam armazenados para sempre, como em um banco de dados.
III) Tanto a requisição quanto a sessão podem ser usados para armazenar o estado de uma aplicação, pois os dados permanecem lá até que sejam removidos.
a) Apenas uma afirmativa está correta.
b) Apenas I e II estão corretas.
c) Apenas II e III estão corretas.
d) Apenas I e III estão corretas.
e) Todas as afirmativas estão corretas.
Questão 5
O protocolo HTTP possui como uma de suas principais características não possuir informações de estado. O que isto significa é que os servidores HTTP não mantêm qualquer informação a respeito dos navegadores que estão conectados a eles de uma solicitação para a outra.
Assinale a alternativa INCORRETA sobre servlets, com relação ao gerenciamento de sessão em um container Web:
a) Se o cliente não aceitar cookies, não há como rodar uma aplicação que depende de sessões.
b) Uma sessão permite manter dados entre as páginas web.
c) O objeto HttpSession pode manter o estado de conversação durante várias solicitações do mesmo cliente.
d) Uma reescrita de URL só entra em cena se os cookies falharem e se a resposta mandar codificar a URL.
e) Um cookie pode permanecer mesmo depois do browser ser fechado.
Questão 6
(TCE-RS/2014) O método a seguir está presente em uma classe de acesso a dados (DAO) de uma aplicação construída com Java utilizando JDBC.
Considere que:
− a variável conn é da interface Connection, st é da interface PreparedStatement e retorno é uma variável do tipo int, todas declaradas e inicializadas anteriormente.
− uma conexão com um banco de dados que contém a tabela cliente foi estabelecida com sucesso e em condições ideais.
− a tabela cliente possui os campos abaixo:
• id − inteiro, não nulo, chave primária
• nome − cadeia de caracteres
• renda − real
Nestas condições, para que o método esteja correto, a lacuna I deve ser preenchida com a instrução:
a) st = conn.prepareStatement(“insert into cliente (id, nome, renda) values (?, ?, ?)”);
b) st = conn.prepareStatement(“insert into cliente (id, nome, renda) values (varId, varNome, varRenda)”);
c) st = conn.preparedStatement(“insert into cliente (id, nome, renda) values (?, ?, ?)”);
d) st = conn.prepareStatement(“insert into cliente(id,nome,renda) values( “+varId+”,”+varNome+” ,'”+varRenda+”‘)”);
e) st = conn.executeStatement(“insert into cliente values ( ‘” + varId + “‘, ” + varNome + ” , ‘” + varRenda + “‘)”);
Questão 7
(TRE-RR/2015) A interface PreparedStatement do Java permite executar instruções SQL parametrizadas, ou seja, que primeiro são construídas e depois recebem parâmetros. Neste contexto, considere que no bloco de código abaixo con é um objeto da interface Connection que representa uma conexão com um banco de dados, estabelecida com sucesso.
String sql = “insert into contatos (nome, email, endereco) values (_I_, _II_, _III_);
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, “Paulo”);
stmt.setString(2, “[email protected]”);
stmt.setString(3, “Rua Vergueiro, 1567”);
stmt.execute();
No bloco de código apresentado, as lacunas I, II e III devem ser preenchidas, correta e respectivamente, com:
a) ?;
b) 1, 2, 3;
c) ${1}, ${2}, ${3};
d) *;
e) “Paulo”, “[email protected]”, e “Rua Vergueiro, 1567”
Questão 8
Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que fazem o envio de instruções SQL para qualquer banco de dados relacional.
Dentre as alternativas abaixo, assinale INCORRETA referente a Java Database Connectivity(JDBC):
a) O executeQuery é um método da classe Connection para execução de uma consulta.
b) Statement representa uma conexão estabelecida com o Banco de Dados.
c) O método close() da classe Connection fecha uma conexão com o banco de dados.
d) É possivel acessar Banco de Dados que não possuem Driver JDBC próprio através da ponte JDBC-ODBC.
e) O PreparedStatement é uma subinterface de Statement.
Questão 9
Dada a classe abaixo, complete as lacunas de forma correta:
a) Class.forName, DriverManager.getConnection, con.createStatement(),stm.executeQuery, rs.next()
b) DriverManager.getConnection, Class.forName, con.createStatement(),stm.executeQuery, rs.next()
c) Class.forName, DriverManager.getConnection, con.createStatament(),stm.executeQuery, rs.hasNext()
d) DriverManager.getConnection, Class.forName, rs.createStatement(),stm.executeQuery, rs.next()
e) DriverManager.getConnection, Class.forName, rs.createStatament(),stm.executeQuery, rs.hasNext()
Questão 10
A persistência em Banco de Dados é uma constante em programas de automação comercial. Porém certas interfaces e classes geram dúvidas para programadores iniciantes. Entres elas encontra-se a Statement. Dada as alternativas abaixo, selecione a que define Statement.
a) Implementado para acesso de uso geral do banco de dados. É útil quando você estiver usando as instruções SQL estáticas no tempo de execução. Não pode aceitar parâmetros.
b) Implementado quando você planeja usar as instruções SQL muitas vezes. Aceita parâmetros de entrada em tempo de execução.
c) Implementado quando você deseja acessar banco de dados procedimentos armazenados. Também pode aceitar parâmetros de entrada em tempo de execução.
d) É responsável por fornecer a conexão de uma aplicação Java com o Banco de dados.
e) Representa uma conexão a um banco de dados, a partir de uma URL JDBC recebida como parâmetro.
RESPOSTAS
Questão 1 – D
Justificativa: Os métodos cancel(), delete(), destroy() e release() não fazem parte da HttpSession.
O método invalidate() Não só faz parte como tem por objetivo finalizar a sessão do usuário.
Questão 2 – C
Justificativa: Todas as opções estão corretas exceto:
II. O identificador da sessão é controlado por um campo de formulário escondido (campo hidden). -> Errada. Quando uma sessão do usuário é criada, é gerado um identificador de sessão chamado ID session. Este é simplesmente um número único e é usado para associar um usuário a um objeto session no servidor.
III. Os objetos inseridos na sessão ficam armazenados no cliente. -> Errada. Na verdade ficam armazenado na sessão no lado servidor.
Questão 3 – D
Justificativa: Todas as opções são técnicas de manter sessão do cliente, exceto clusterização que corresponde a implementação de clusters. Um cluster consiste em um conjunto de computadores vagamente ou fortemente ligadas que trabalham em conjunto para que, em muitos aspectos, eles podem ser vistos como um único sistema.
Questão 4 – A
Justificativa: Analisando as opções:
I) Os dados armazenados em uma requisição têm um tempo de vida igual ao da requisição. -> Correto. Como o próprio nome diz, dados da requisicão.
II) Os dados armazenados na sessão ficam armazenados para sempre, como em um banco de dados. -> Errada. Os dados armazenados na sessão estão na memória. Por isto são voláteis.
III) Tanto a requisição quanto a sessão podem ser usados para armazenar o estado de uma aplicação, pois os dados permanecem lá até que sejam removidos. -> Errada, Os dados são armazenados temporariamente na sessão do usuário. Normalmente, a sessão em uma aplicação é determinada ou controlada por um tempo. Inclusive, a sessão pode expirar e com isto os dados serem perdidos.
Questão 5 – A
Justificativa: Todas as alternativas correspondem ao conceito de Servlet, exceto:
se o cliente não aceitar cookies, não há como rodar uma aplicação que depende de sessões.
Os dados podem ser passados via parâmetros da requisição ainda que não seja suportado cookies.
Questão 6 – A
Justificativa: Analisando as opções:
st = conn.prepareStatement(“insert into cliente (id, nome, renda) values (varId, varNome, varRenda)”); -> Errada, pois os parâmetros são indicados através do ponto de interrogação
st = conn.preparedStatement(“insert into cliente (id, nome, renda) values (?, ?, ?)”); -> Errada, pois o nome do método é prepareStatement e não preparedStatement
st = conn.prepareStatement(“insert into cliente(id,nome,renda) values( “+varId+”,”+varNome+” ,'”+varRenda+”‘)”); -> Errada, pois os parâmetros são indicados através do ponto de interrogação
st = conn.executeStatement(“insert into cliente values ( ‘” + varId + “‘, ” + varNome + ” , ‘” + varRenda + “‘)”); -> Errada, pois os parâmetros são indicados através do ponto de interrogação e o nome do método é prepareStatement e não executeStatement
Questão 7 – A
Justificativa: A reposta correta é ?, pois os parâmetros são indicados através do ponto de interrogação.
Questão 8 – A
Justificativa: Todas as opções estão corretas, exceto:
O executeQuery é um método da classe Connection para execução de uma consulta.
O executeQuery é um método da classe Statement ou PreparedStatement e não da classe Connection.
Questão 9 – A
Justificativa: Analisando as opções:
DriverManager.getConnection, Class.forName, con.createStatement(),stm.executeQuery, rs.next() -> Errada, pois o DriverManager não responsável por carregar o Driver, o Class.forName não é o responsável por obter uma instância Connection do JDBC.
Class.forName, DriverManager.getConnection, con.createStatament(),stm.executeQuery, rs.hasNext() -> Errada, pois o método do ResultSet corresponde a next() e não hasNext().
DriverManager.getConnection, Class.forName, rs.createStatement(),stm.executeQuery, rs.next() -> Errada, pois o DriverManager não responsável por carregar o Driver, o Class.forName não é o responsável por obter uma instância Connection do JDBC e o rs não é responsável por criar o Statement.
DriverManager.getConnection, Class.forName, rs.createStatament(),stm.executeQuery, rs.hasNext() -> Errada, pois o DriverManager não responsável por carregar o Driver, o Class.forName não é o responsável por obter uma instância Connection do JDBC, o rs não é responsável por criar o Statement e o método do ResultSet corresponde a next() e não hasNext().
Questão 10 – A
Justificativa: Analisando as opções:
Implementado quando você planeja usar as instruções SQL muitas vezes. Aceita parâmetros de entrada em tempo de execução. -> Errada, pois trabalha com instruções SQL estáticas. Não aceita parametrização.
Implementado quando você deseja acessar banco de dados procedimentos armazenados. Também pode aceitar parâmetros de entrada em tempo de execução. -> Errada, pois trabalha com instruções SQL estáticas. Não trabalha com Stored Procedures.
É responsável por fornecer a conexão de uma aplicação Java com o Banco de dados. -> Errada, pois não é o responsável por obter uma instância Connection do JDBC. Isto é função do DriverManager.
Representa uma conexão a um banco de dados, a partir de uma URL JDBC recebida como parâmetro. .-> Errada, isto é função do Connection.