Passar um valor e receber vários - jsp/servlet

5 respostas
E

Pessoal,

Tenho o seguinte jsp:

<table border="0" cellpadding="5" cellspacing="0">
                <tr>
                	<td align="left">
                		<a href=""><b>&nbsp;A iniciar</b></a>
                    </td>
                </tr>
                <tr>
                    <td align="left">
                        <a href="/SupplyWeb/Filtro?status=Em andamento"><b>&nbsp;Em andamento</b></a>
                    </td>
                </tr>
                <tr>
                    <td align="left">
                        <a href="#"><b>&nbsp;Finalizado</b></a>
                    </td>
                </tr>
                <tr>
                    <td align="left">
                        <a href="#"><b>&nbsp;Cancelado</b></a>
                    </td>
                </tr>
                </table>

O seguinte servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String status = request.getParameter("status"); 
		
		PrintWriter out = response.getWriter();
		out.println("Status: " + status);
		
		FiltroProjetos fazLogin = new FiltroProjetos();    //conecta a classe
		String resultado = fazLogin.FiltroProjetos2(status);// passa o parametro e recebe a resposta
	}

E a seguinte classe:

package model;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class FiltroProjetos {
	private ConexaoMysql conexaoMysql;
	
	public String FiltroProjetos2(String status){
		
		String statusProjeto = "Em andamento";
		
		conexaoMysql = new ConexaoMysql(); 
	    Statement state = null;   
	    ResultSet rs = null;   
	    
	    try {  
	     	state = conexaoMysql.getConnection().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);   
	        rs = state.executeQuery("Select nome from projeto where statusProjeto = '" + status + "'");
	        
            while (rs.next()) {
	            String nome = rs.getString("nome");
	            
	            System.out.println("Nome:" + nome);
        }
	    } catch(Exception erro) {   
	        System.out.println("Erro ocorrido na classe FiltroProjetos: n" + erro);   
	    } finally {   
	    	if(state != null){   //fechar os statments
				try {
					state.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}  
	    	}
		}
		return statusProjeto;
	}
}

O problema é que vou passar o status pelo JSP, este será pego pela servlet que passará para a classe buscar no banco de dados e este resultado tem que parar lá no JSP para que ele formate os registros achados. Como faço para passar esses registros para o jsp?

5 Respostas

tathy.vip

Elennsmp,
Você pode fazer isso usando sessions…

Mais ou menos assim:

HttpSession session = req.getSession();
session.setAttribute("nome", objeto);

Depois você direciona para a página através do Dispacher, mais ou menos assim:

RequestDispacher rd = req.getRequestDispacher("pagina.jsp");
rd.forward(request, response);

E para recuperar no jsp:

<% TipoObjeto variavel = session.getAttribute("nome"); %>

Lembro que, desta forma, você não passa para o JSP as variáveis necessariamente, e sim objetos… por isso você não deve usar variáveis de tipos primitivos (int, boolean…)

fmad27

Isso se você quiser que este objeto fique na sessão enquanto o navegador estiver aberto.
Se for para usar apenas neste jsp você pode setar direto no request.

request.setAttribute("nome", objeto);
request.getRequestDispacher("pagina.jsp").forward(request, response);

para recuperar no jsp é do mesmo jeito que a tathy.vip falou.

E

fmad27:
Isso se você quiser que este objeto fique na sessão enquanto o navegador estiver aberto.
Se for para usar apenas neste jsp você pode setar direto no request.

request.setAttribute("nome", objeto);
request.getRequestDispacher("pagina.jsp").forward(request, response);

para recuperar no jsp é do mesmo jeito que a tathy.vip falou.

Mas não quero coloca-los em session, já estou utilizando mto este recurso e isso pode atrapalhar na performance do sistema.

Paulo_Silveira

Oi Ellen!

A forma comum é como o Fabiano indicou, colocando os atributos no request. Voce pode colocar mais de um atributo, e recuperar no JSP fazendo ${atributo}

E

Paulo Silveira:
Oi Ellen!

A forma comum é como o Fabiano indicou, colocando os atributos no request. Voce pode colocar mais de um atributo, e recuperar no JSP fazendo ${atributo}

A forma comum é a mais recomendada? E quanto a performance?
Imagina varios usuarios e o tanto de objetos que eles terão… 200 objetos no minimo para cada usuario, sendo que 200 só nesta parte do sistema, fora os outros.

Isso são registro buscados do bd.

Criado 27 de outubro de 2009
Ultima resposta 27 de out. de 2009
Respostas 5
Participantes 4