Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

request, não esta enviando o atributo

package br.com.servlet;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

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;
import javax.xml.crypto.Data;

import br.com.modelo.BancoDados;
import br.com.modelo.Empresa;

@WebServlet(urlPatterns = "/cadastroServlet")
public class cadastroServlet extends HttpServlet{

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


    String nome = request.getParameter("nome");    
    String dataCadastro = request.getParameter("dataCadastro");



        Date dataAbertura= null;



        try {

            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/YYYY");
            dataAbertura= sdf.parse(dataCadastro);

        } catch (ParseException e) {

            throw new ServletException(e); 

        }        


        Empresa empresa = new Empresa();
        empresa.setNome(nome);
        empresa.setDataCadastro(dataAbertura);

        System.out.print("Olá Estou no Meu Servlet"+empresa.getDataCatastro());


        BancoDados bd = new BancoDados();
        bd.adicionaLista(empresa);


        request.setAttribute("retornoCadastro",empresa.getNome());    
        response.sendRedirect("cadastro_resposta.jsp");



    }

}

Bomm dia Galera da Aluraa. Estou utilizando o sendRedirect, porém quando minha servlet chama minha jsp, eu queria que esta exiba o nome da pessoa que foi cadastrada. Não sei se a utilização do request.setAtrtibute esta correta, pois a jsp não consegue receber o "retornoCadastro"

5 respostas

Olá Luciano, bom dia!

Isso acontece porque você está utilizando o sendRedirect() do objeto responde - este método vai redirecionar para outra página. É como se o cliente fizesse uma nova requisição (no seu caso, para cadastro_resposta.jsp) e os dados da requisição anterior (como o retornoCadastro) já não existem mais. Caso você queira manter a mesma, use o fowrad() do RequestDispatcher:

request.getRequestDispatcher("cadastro_resposta.jsp").foward(request, response);

Isso faz um redirecionamento do lado do servidor.

Espero ter ajudado e bons estudos!

Thais Thomazini, Obrigado pela atenção, eu não utilizei o getRequestDispatcher por que após enviar para a cadastro_resposta, se eu pressionar F5 ele vai inserir novamente no banco as informações ja inseridas anteriormente. Utilizei o redirect para não acontecer esta duplicação caso eu pressione F5.

Fiz desta forma porém mesmo assim, fica com o resultado null

request.setAttribute("retornoCadastro",empresa.getNome());

    response.sendRedirect("cadastro_resposta.jsp");
solução!

Olá Luciano, bom dia!

Neste caso, você pode usar o escopo de sessão e o objeto HttpSession da API de Servlets: javadoc aqui .

A session tem um método chamado setAttribute() parecido com o da HttpServletRequest, com a diferença que o objeto pendurado na sessão vai permanecer por muitas requisições. Ela também possui um removeAttribute() quando você precisar remover o objeto.

Você pode obter uma sessão pela request, através do método getSession().

Espero ter ajudado e bons estudos!

Oii Thais Ajudou sim, muito obrigado.