2
respostas

request Vs req

Boa noite pessoal. Na minha classe NovaEmpresaServlet, coloquei os nomesreq para o HttpServletRequest e resp para o HttpServletResponse. No arquivo novaEmpresaCriada.jsp, no meu caso, não seria correto colocar String nomeDaEmpresa = (String) req.getAttribute("empresa");? Pois só funciona se eu colocar String nomeDaEmpresa = (String) request.getAttribute("empresa");, sendo que não chamei nenhum atributo de request

package br.com.alura.gerenciador.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class NovaEmpresaServlet
 */
@WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("Cadastrando nova empresa");

        String nomeDaEmpresa = req.getParameter("nome");
        Empresa empresa = new Empresa();
        empresa.setNome(nomeDaEmpresa);

        Banco banco = new Banco();
        banco.adiciona(empresa);

        RequestDispatcher rd = req.getRequestDispatcher("novaEmpresaCriada.jsp");
        req.setAttribute("empresa", empresa.getNome());
        rd.forward(req, resp);
    }

    private static final long serialVersionUID = 1L;

}
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%
String nomeDaEmpresa = (String) request.getAttribute("empresa");
System.out.println(nomeDaEmpresa);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Prontinho!!!</title>
</head>
<body>
    Empresa
    <%=nomeDaEmpresa%>
    criada com sucesso!
</body>
</html>
2 respostas

Estou com a mesma duvida

Oi,

Estou iniciando os estudos agora, como estava lendo sobre JSP encontrei algo que pode ser a resposta da sua pergunta.

A tecnologia JSP possui alguns objetos implícitos que recebem as referências dos dados da solicitação (cliente - servidor), esses objetos possuem como herança/interface de um servletrequest do qual decorrem os métodos que permitem você acessar os parâmetros da requisição.

Logo, a resposta da sua pergunta está nela. Não é permitido você utilizar o objeto "req", pois você não instanciou esse objeto no JSP.

Em relação a você ter êxito no arquivo.jsp em utilizar o objeto "request" sem ter instanciado no servlet com a mesma denominação, ocorre em razão de "request" ser um objeto implícito da tecnologia JSP que já carrega os dados da requisição que acionou o servlet da aplicação.

Espero que o texto consiga esclarecer algo.

fonte: https://docs.oracle.com/javaee/5/tutorial/doc/bnagx.html