Guia Completo de Servlets e JSP para Desenvolvimento Web
Servlets e JSP: Fundamentos
Servlets e JSP são a tecnologia básica para o desenvolvimento de sistemas web em Java. Um arquivo com a extensão .jsp é transformado em um arquivo .java pelo container, sendo depois compilado para um .class que será executado. Servlets são subclasses que herdam de Servlet, GenericServlet ou HttpServlet.
Java Server Pages (JSP) é uma linguagem de script que permite integrar HTML com tags JSP e código Java. Em servlets, tags HTML podem estar misturadas em código Java, enquanto em JSP podemos ter códigos Java misturados a tags HTML e JSP. Servlets são mais úteis no desenvolvimento de controles, enquanto JSP são mais eficazes na camada de apresentação.
Diretivas de Página e Atributos JSP
- Importar pacotes:
<%@ page import="java.util.*" %> - Configurar tipo de conteúdo:
<%@ page contentType="text/plain" %> - Configurar sessão HTTP:
<%@ page session="true" %> - Configurar página de erro:
<%@ page errorPage="url" %> - Incluir páginas:
<%@ include file="/common/header.jsp" %> - Biblioteca de tags:
<%@ taglib uri="uri" prefix="op" %>
Componentes JSP
- Declarações: Permitem a definição de métodos ou variáveis no corpo do servlet gerado.
- Expressões JSP: Usadas para incluir diretamente o resultado de uma expressão Java no resultado do JSP.
- Scriptlets: Permitem a inserção de código Java no método
_jspService()do JSP.
Requisições e Objetos
Solicitações GET: Parâmetros enviados na URL. Solicitações POST: Dados enviados no cabeçalho do documento.
- HttpServletRequest: Encapsula dados da requisição (IP, navegador, etc.).
- PrintWriter: Encapsula textos formatados como fluxo de dados.
- IOException: Encapsula exceções de operações de entrada ou saída.
Hierarquia e Implementação
Para estender GenericServlet, deve-se implementar o método service(), pois ele é abstrato. Em HttpServlet, implementa-se doGet() e doPost().
Hierarquia: Servlet < GenericServlet < HttpServlet < MyServlet.
Camada de Visão e Escopo
HTML vs JSP: HTML é estático (lado cliente); JSP é dinâmico (lado servidor).
Forward(): Passa o objeto request para outro recurso sem informar o cliente.
Atributos: setAttribute() insere/modifica atributos; getAttribute() recupera valores.
Escopo de Dados:
- Application:
ServletContext(acessível a toda a aplicação). - Session:
HttpSession(acessível na sessão atual). - Request:
ServletRequest(acessível na requisição atual). - Page:
JspContext(acessível apenas na página JSP).
Filtros e JSTL
Filtros: Indicados para requisitos não funcionais (autenticação, criptografia). Métodos: init(), doFilter(), destroy().
Expression Language (EL): Simplifica o acesso a recursos via tags (ex: ${param.idade}).
JSTL: Coleção de bibliotecas de tags que permite escrever JSP sem código Java, aumentando a legibilidade e a colaboração com webdesigners.