Problema para passar variáveis de uma página JSP para outra

Hoje mais cedo postei uma dúvida sobre fazer pesquisa com parâmetros usando jdbc.

Agora o problema é outro, para que o parâmetro (chave primária da tabela) seja utilizado eu preciso inicializar ele em uma página, através de um campo “text” em um formulário.
Logo depois preciso recuperar o valor desse campo em uma outra página, página essa que deverá mostrar esse valor junto com todos os outros dados em uma tabela.

Por enquanto o código das páginas estão assim:

listar_perfis.jsp

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form method="POST" action="listar_perfis2.jsp">
            <input type="text" name="idPerfil">
            <input type="submit" value="Enviar">
        </form>
    </body>
</html>

listar_perfis2.jsp

<%@page import="modelo.Perfil"%>
<%@page import="java.util.ArrayList"%>
<%@page import="modelo.PerfilDAO"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Lista de Perfis</h1>
        
        <br>
        <h1 align="center">Lista de perfis <a href="form_cadastrar_perfil.jsp">(Novo)</a></h1>
        <br>
        <table border="1" align="center" width="60%">
            <tr>
                <td>
                     ID
                </td>
                <td>
                     Perfil
                </td>
                <td>
                     Alterar
                </td>
                <td>
                     Excluir
                </td>
            </tr>
            <%
                try{
                    PerfilDAO pDB = new PerfilDAO();
                    ArrayList<Perfil> lista;
                    pDB.conectar();
                    lista = pDB.listar2(Perfil p);
                    for (Perfil p:lista){

            %>
                        <tr>
                            <td>
                                <%=p.getIdPerfil() %>
                            </td>
                            <td>
                                <%=p.getNomePerfil() %>
                            </td>
                            <td>
                                <a href="form_alterar_perfil.jsp?idPerfil=<%=p.getIdPerfil() %>">Alterar</a>
                            </td>
                            <td>
                                <a href="excluir_perfil.do?idPerfil=<%=p.getIdPerfil() %>">Excluir</a>
                            </td>
                        </tr>
            <%
                    }
                    pDB.desconectar();
                }
                catch (Exception erro){
                    out.print (erro);
                }
            %>
        </table>
        
    </body>
</html>

PerfilDAO

public Perfil listar2(Perfil p) throws Exception {
        String sql = "SELECT * FROM perfil WHERE idPerfil=?";
        PreparedStatement pst;
        ResultSet rs;
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();

        if (rs.next()) {
            p.setIdPerfil(rs.getInt("idPerfil"));
            p.setNomePerfil(rs.getString("nomePerfil"));
        }
        return p;
    }

PS: Em listar_perfis2.jsp. O Netbeans acusa um erro na linha 37, alguém pode me dizer o porque?

errado,você não deve passar o valor de uma jsp para outra jsp,você deve passar o valor de uma jsp para um servlet,e no servlet utilizar todo o codigo necessario em java :smiley:
procure aprender sobre servlets…

Eu já utilizo servlets, porém utilizo apenas para Inserção e Exclusão de dados. Como posso utilizar um servlet para fazer pesquisas com parâmetros?

[code]protected void processRequest(HttpServletRequest request , HttpServletResponse response) throws ServletException , IOException{

	try{
		
		Produto produto = new Produto();
		ProdutoDAOImpl dao = new ProdutoDAOImpl();
		
		int id = Integer.parseInt(request.getParameter("id"));
		produto.setId(id);
		
		produto = dao.obter(produto);
		//obtive produto
                    
                    //adiciono o produto no request
		request.setAttribute("id", produto.getId());
		request.setAttribute("nome", produto.getNome());
		request.setAttribute("descricao", produto.getDescricao());
		request.setAttribute("fabricante", produto.getFabricante());
		request.setAttribute("preco", produto.getValor());
		request.setAttribute("categoria", produto.getCategoria());
		request.setAttribute("unidade", produto.getUnidade());
		
		//passo as caracteristicas obtidas do produto para  a pagina altera-produto.jsp
			RequestDispatcher rs = request.getRequestDispatcher("alterar-produto.jsp");
			rs.forward(request,response );
			
		
		
	}catch(Exception e){
		e.printStackTrace();
	}
}[/code]

na jsp

//Peguei o id do produto que foi passado pelo request 
${requestScope.id} 
//peguei o nome
${requestScope.nome}
//e vou pegar todos os outros valores que passei pelo request
${requestScope.descricao}
${requestScope.fabricante}
${requestScope.preco}
${requestScope.categoria}
${requestScope.unidade}

Evite fazer codigos de programação em jsp,para isso que serve os servlets :smiley:
E outra coisa,vi que seu codigo tem scriptlet,esqueça scriptlet,se o seu professor está ensinando em scriptlet,tente dar uma esudada em jstl
atualmente não se usa mais scriptlets

Coloque os dados recebidos na sessão do seu HttpServletRequest , como o slow17 lhe mostrou e na jsp pegue o valor pelo id que setou na classe.

Usar scriptlets deixa a jsp suja e não é uma boa pratica.

Abs