Servlets, JSF, AJAX e MVC — Guia prático e perguntas

Classificado em Computação

Escrito em em português com um tamanho de 65,08 KB

Servlets, JSF, AJAX e MVC — Perguntas e respostas

1. O que é um Servlet?

Pergunta: O que é um Servlet?

Resposta: São classes Java que processam dinamicamente requisições do cliente, constroem respostas e as devolvem ao cliente.

2. Arquitetura de um aplicativo Servlet

Desenhe uma das arquiteturas possíveis para um aplicativo Servlet em um servidor WEB.

Imagen

3. O que é um contêiner (container) Servlet? Cite dois exemplos

Resposta: É uma aplicação que auxilia no desenvolvimento e na execução de aplicações J2EE, oferecendo suporte à execução de Servlets e outras especificações web.

Exemplos: Tomcat, GlassFish

4. Explique o código abaixo

Trecho XML/Web descriptor:

<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
<web-app>
  <servlet>
    <servlet-name>Testando</servlet-name>
    <servlet-class>TestandoServlet</servlet-class>
  </servlet>
</web-app>

Explicação: O elemento <servlet-name> está mapeando o nome 'Testando' à classe 'TestandoServlet'. Em conjunto com um <servlet-mapping> apropriado (url-pattern), esse servlet ficará acessível via navegador.

5. Quais são os principais métodos da classe HttpServlet?

  • doPost(): envia e recupera dados no corpo da requisição (headers + body).
  • doGet(): recupera e envia informações por meio da URL (query string).
  • doPut(): permite enviar/atualizar arquivos/recursos no servidor (se permitido).
  • doDelete(): apaga recursos no servidor (se permitido).
  • doHead(): lê e manipula apenas os headers da resposta (sem corpo).
  • doTrace(): retorna o caminho percorrido da requisição (usado para diagnóstico).
  • doOptions(): recupera os métodos/serviços HTTP disponíveis para o recurso.

6. Quando os métodos doXxx() são chamados?

Resposta: Quando ocorre uma requisição HTTP para o servlet que corresponde a um dos métodos suportados (GET, POST, PUT, DELETE etc.).

7. Principais métodos da interface HttpServletRequest

  • getPathInfo(): recupera informações adicionais do caminho da requisição (path extra após o mapeamento do servlet).
  • getPathTranslated(): recupera as informações adicionais do caminho já traduzidas para um caminho físico do servidor.
  • getRequestURI(): retorna o URI da requisição (o caminho completo solicitado pelo cliente).
  • getServletPath(): retorna o caminho do servlet (a parte do URI que acionou o servlet).

8. Principais métodos da interface HttpServletResponse

  • setContentType(): define o tipo MIME (content type) que o servlet retorna ao cliente.
  • getWriter(): obtém um PrintWriter para escrever a saída para o cliente (saída do browser).
  • addCookie(): adiciona um cookie no lado do cliente.
  • setHeader(): acrescenta um campo e um valor no cabeçalho da resposta.
  • sendRedirect(): realiza um redirecionamento para outra página/URL.

9. O que são parâmetros de contexto? Diferença entre parâmetros de contexto e de inicialização

Resposta: São valores iniciais definidos no início da aplicação, formados por um nome e um valor.

Parâmetros de Inicialização: fornecem valores para um determinado servlet (definidos dentro do elemento <servlet> em web.xml com <init-param>).

Parâmetros de Contexto: fornecem valores acessíveis a toda a aplicação (definidos no <context-param> do web.xml).

10. Escopo de atributo em aplicações WEB

Explique o escopo de atributo em aplicações web.

Imagen

Resumo dos escopos:

  • Request: atributo disponível apenas durante a requisição atual.
  • Session: atributo associado à sessão do usuário e disponível durante a sessão.
  • Application/Context: atributo disponível para toda a aplicação (entre sessões e requisições).

11. O que é um Framework?

Resposta: Um framework é uma estrutura de suporte pré-estabelecida, utilizada para organizar e desenvolver projetos de software, oferecendo componentes e convenções reutilizáveis.

12. O que é um Design Pattern?

Resposta: É uma solução padrão para problemas recorrentes de projeto, baseada em boas práticas e reuso de conceitos.

13. Fluxo de uma aplicação Struts

  • Requisição HTTP do usuário ao servidor.
  • Verifica-se o arquivo struts-config.xml para identificar a ação solicitada.
  • Valida dados de entrada e executa a ação solicitada.
  • A requisição também pode vir de um formulário HTML em comunicação com JavaBeans (Form Beans).
  • O Action pode acessar o FormBean, executar operações e armazenar o resultado em um ResultBean.
  • O Action interage com a camada de negócio, onde uma base de dados pode ser utilizada.

14. O que é JavaServer Faces (JSF)?

Resposta: O framework JSF (JavaServer Faces) provê uma arquitetura baseada em componentes reutilizáveis para construir interfaces de usuário (UI), trabalhando com o padrão MVC (especialmente MVC2 para aplicações web).

15. Fluxo da aplicação JSF

Explique o fluxo de uma aplicação JSF.

O fluxo JSF inclui o ciclo de vida de requisição da página JSF: restaurar a árvore de componentes (Restore View), aplicar valores, validações, atualizar modelos, invocar ações e renderizar a resposta. (Detalhamento técnico pode incluir fases: Restore View, Apply Request Values, Process Validations, Update Model Values, Invoke Application, Render Response.)

16. Taglibs JSF e suas utilidades

  • <view>: tag usada para criar um componente de exibição de nível superior que engloba os demais componentes.
  • <form>: representa um formulário de entrada.
  • <commandLink>: link que aciona uma ação e pode navegar para outra página.
  • <panelGrid>: exibe uma grade/tabela de componentes.
  • <outputText>: exibe uma linha de texto.
  • <inputText>: permite que o usuário informe uma string.
  • <commandButton>: submete um formulário para a aplicação.

17. Principais tecnologias e linguagens do AJAX

  • XHTML e CSS: usados para apresentar as informações visuais da aplicação web.
  • DOM ou PARSE: usado para expor, editar e alterar dinamicamente a estrutura de um documento (HTML/XML).
  • XML e XSLT: tecnologias para prover dados (XML) e transformar/converter documentos (XSLT).
  • XMLHttpRequest: objeto JavaScript responsável pela comunicação assíncrona entre servidor e cliente.
  • JavaScript: integra e orquestra as tecnologias anteriores em uma página.

18. Diferença entre modelo AJAX e modelo clássico

Modelo clássico: Em geral, quando o usuário executa uma ação na página, uma requisição HTTP é disparada ao servidor, que processa e retorna uma nova página HTML (necessário refresh ou navegação completa).

Modelo AJAX: A aplicação web roda no navegador; quando o usuário executa uma ação é feita uma requisição ao servidor, mas o navegador não é totalmente recarregado — apenas partes da página são atualizadas de forma assíncrona.

Lista 2

Lista 2 — Perguntas e respostas

1) Ciclo de vida de um Servlet

Resumo:

  1. Se não existir uma instância do servlet, a classe é carregada pelo contêiner.
  2. Cria-se uma instância do servlet a partir da classe.
  3. Inicializa-se a instância do servlet através do método init().
  4. Para cada requisição, o contêiner chama o método service(), que despacha para doGet/doPost/etc.
  5. Quando o servlet não for mais necessário, o contêiner chama destroy() para finalizá-lo.

2) Vantagem de usar Servlets em vez de JSF

Resposta: Separar a regra de negócio da interface, maior controle de segurança e não expor código fonte; Servlets permitem implementação direta do controle e processamento de requisições.

3) Tornar o servlet acessível via /MeuServlet (web.xml)

Exercício: adicionar as linhas necessárias para tornar o servlet acessível via HTTP://localhost/MeuServlet

Exemplo de web.xml (original corrigido):

<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
<web-app>
  <servlet>
    <servlet-name>Testando</servlet-name>
    <servlet-class>TestandoServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Testando</servlet-name>
    <url-pattern>/MeuServlet</url-pattern>
  </servlet-mapping>
</web-app>

4) O que é HttpServlet?

Resposta: É a classe base que trata requisições HTTP para um determinado servlet, fornecendo métodos como doGet/doPost.

5) Principais eventos HTTP

POST: envia dados no corpo da requisição (headers+body).

GET: envia dados por meio da URL (query string).

6) Interfaces de solicitação e resposta do pacote javax.servlet.http

Resposta: HttpServletRequest e HttpServletResponse.

7) Diferença entre sendRedirect e getRequestDispatcher

Resposta: sendRedirect redireciona para uma URL externa ou relativa, causando uma nova requisição pelo cliente (cliente recebe 302 e faz nova requisição). getRequestDispatcher faz um encaminhamento interno (forward) para um recurso dentro da mesma aplicação, sem nova requisição do cliente.

8) O que são parâmetros de inicialização? Onde descrevê-los?

Resposta: São valores iniciais passados para a aplicação ou servlet, configurados dentro do arquivo web.xml (usando <init-param> em <servlet> para parâmetros de servlet, ou <context-param> para parâmetros de contexto).

9) Métodos de manipulação de atributos: getAttribute, setAttribute, removeAttribute e getAttributeNames

  • getAttribute(name): retorna o valor associado ao atributo.
  • setAttribute(name, object): armazena um objeto no escopo (request, session ou context) ligado a um nome.
  • removeAttribute(name): remove o objeto associado ao nome do escopo.
  • getAttributeNames(): retorna uma enumeração de nomes dos atributos armazenados atualmente no escopo.

10) Desenhe e explique o modelo MVC

Imagen

Descrição: É um modelo de desenvolvimento baseado em separação de responsabilidades: Model (dados/negócio), View (apresentação) e Controller (controle/fluxo). MVC facilita manutenção, teste e reuso em aplicações web (ex.: Struts e JSF implementam variações do MVC2).

11) Diferença entre Framework e Design Pattern

Resposta: Um design pattern determina regras e boas práticas de projeto (padrões conceituais). Um framework é uma aplicação ou biblioteca reutilizável que implementa e aplica esses padrões para facilitar o desenvolvimento (ex.: Struts).

12) O que é Struts?

Resposta: É um framework para aplicações Java que adota o padrão MVC, focado na camada de controle.

13) Serviços disponíveis no JSF

Exemplos: validação de dados, internacionalização, componentes reutilizáveis, gerenciamento de erros, conversão de dados.

14) Principais componentes de uma aplicação JSF

Resposta: Componentes de interface (input, output, containers), gerenciadores de estado, conversores e validadores.

15) Diferença entre Struts e JSF. Podem ser usados juntos?

Resposta: Struts foca mais na camada de controle; JSF foca na camada de visualização (componentes UI). Sim, podem ser usados em conjunto, cada um cuidando de sua especialização.

16) Surgimento do AJAX em aplicações web

Resposta: Motivado pela necessidade de interfaces mais interativas e dinâmicas, transformando páginas web em aplicações ricas sem recarregamento total da página.

17) Onde utilizar AJAX?

Exemplos: validação de formulários, autocomplete, atualização parcial de páginas, carregamento dinâmico de conteúdo.

18) Vantagens e desvantagens do AJAX

Vantagens: comunicação assíncrona cliente-servidor, atualização parcial da página sem refresh, execução paralela de processos.

Desvantagens: depende de recursos do lado do cliente e do suporte do navegador às tecnologias usadas.

2. Diferença entre requisições síncronas e assíncronas (AJAX)

Modelo síncrono: chamadas e respostas sequenciais — é necessário receber a resposta de uma requisição antes de enviar a próxima. Na arquitetura clássica, um refresh da página é frequentemente necessário.

Modelo assíncrono: outras lógicas podem rodar em paralelo enquanto uma requisição é processada; quando a resposta chega, é disparado um callback para tratar os dados recebidos.

3. Beans

Descrição: Beans são componentes que administram o fluxo de dados entre cliente e servidor web, ou entre servidor web e banco de dados. São classes POJO com getters e setters; não são componentes exclusivos da plataforma Java EE, mas usados amplamente para manipular dados.

4. MVC é a mesma coisa que desenvolvimento em três camadas?

Resposta: Não. No MVC o fluxo é triangular (View ↔ Controller ↔ Model) com interação direta entre camadas de forma diferente do fluxo estritamente sequencial do modelo de três camadas (apresentação → negócio → dados). A View pode consultar diretamente o Model e o Controller coordena as ações.

5. Páginas JSP podem existir sem Servlets?

Resposta: Não. Páginas JSP são pré-compiladas pelo servidor web na primeira requisição em servlets. A compilação de uma página JSP gera um servlet Java que é executado como um servlet comum.

Entradas relacionadas: