Considere uma aplicação web desenvolvida utilizando-se o Jav...

Próximas questões
Com base no mesmo assunto
Ano: 2013 Banca: FCC Órgão: DPE-SP Prova: FCC - 2013 - DPE-SP - Programador de computador |
Q304595 Programação
Considere uma aplicação web desenvolvida utilizando-se o Java EE 6 que contém dois arquivos, uma página de abertura de um site (chamada index.html) e uma classe servlet (Controle.java):


index.html

< !DOCTYPE html>
<html>
  <head>
    <title>Teste</title> 
      </head>
        <body>

          <form method ="post" action="Controle">

          <p>Interesses:< br />
          <label><input type="checkbox" value="Livros" name="interesses"/>Livros</label>
          <label><input type="checkbox" value="Revistas" name="interesses"/>Revistas</label>
          <label><input type="checkbox" value="Teatro" name="interesses"/>Teatro</label>
          </p>

          <p> <input type="submit" value="Enviar"/></p>
      </form>
   </body>
</html>


Controle.java
import java.io.*;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(name = "Controle", urlPatterns = {"/Controle"})
public class Controle extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}

Com base nessa aplicação e na plataforma Java EE 6 é correto afirmar que
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C

A alternativa C é a correta porque afirma que os pacotes javax.servlet e javax.servlet.http oferecem interfaces e classes necessárias para escrever servlets, o que é uma afirmação verdadeira. A classe javax.servlet.http.HttpServlet é uma classe abstrata do Java EE que simplifica a criação de servlets ao prover métodos que são chamados de acordo com o tipo de requisição HTTP recebida (GET, POST, PUT, DELETE, etc).

Os métodos doGet e doPost são exemplos de métodos que podem ser sobrescritos para personalizar o comportamento da servlet em resposta a requisições HTTP GET e POST, respectivamente. Na servlet Controle fornecida na questão, os métodos doGet e doPost foram implementados e ambos chamam o método processRequest, embora esse último não esteja plenamente implementado. A ideia é que, dependendo do tipo de requisição, a lógica apropriada seja executada dentro do método processRequest ou diretamente nos métodos doGet/doPost.

É importante mencionar que a alternativa A está errada porque o método getParameter retorna um String e não um array, e é usado para obter um único valor de parâmetro. Quando se espera vários valores, como numa seleção de checkboxes com o mesmo nome, deve-se usar getParameterValues, que retorna um array de String.

A alternativa B também está incorreta porque o formulário HTML está configurado para usar o método POST (method="post"). Portanto, os dados do formulário serão enviados para o método doPost da servlet, não para doGet.

A alternativa D contém erros de sintaxe no código Java, como o uso incorreto de size() em vez de length para verificar o tamanho de um array, e a alternativa E está errada porque os métodos doPost e doGet não devem ser removidos, pois eles são parte do ciclo de vida da servlet e responsáveis por tratar requisições HTTP específicas.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

a) Alternativa ERRADA. Para realizar a operação indicada seria necessário fazer String[3] interesses = request.getParameterValues("interesses");. Os dados selecionados serão as posições não-nulas do vetor.


b) Alternativa ERRADA. Ao submeter os dados selecionados no formulário HTML, esses dados serão recebidos no método doPost da servlet, pois apesar do GET ser o método padrão para requisições HTTP em uma aplicação web, foi especificado method ="post" na declaração do form.


c) Alternativa CORRETA.

http://docs.oracle.com/javaee/1.3/api/javax/servlet/http/HttpServlet.html


d) Alternativa ERRADA. A variável interesse neste caso, por ser um vetor primitivo, não possui o método .size(). A condição de repetição nesse caso deveria ser for (int i=0; i<=interesses.length; i>.


e) Alternativa ERRADA. A HttpServlet receberá as requisições através de seus métodos doPost e doGet, devendo então delegar a continuidade do fluxo para o método processRequest da classe Controle.java.

<p>Interesses:< br />   ->>>>>      <p>Interesses:<br/>


Ainda há outra dica na letra d: a expressão <= gera exceção.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo