Lists com jstl, servlet e jsp

3 respostas
G

boa tarde galera beles?

tenho uma servlet que possui uma ‘funçao’ por assim dizer de listar setores cadastrados no bd…

vou postar os códigos se puderem ver se estar certo agradeceria mto!

jsp - 1° dúvida: como que eu uso o useBean…no caso eu coloquei a partir da Dao, tenho que colocar a partir do javabeans ou da servlet?
? - nao sei o que era pra por

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Consulta de Setores</title>
	</head>
	<body>
		<jsp:useBean id="setor" class="br.com.agenda.javabeans.Setor"></jsp:useBean>
		
		<table>
			<thead>
				<tr>
					<td>ID</td>
				</tr>
				<tr>
					<td>Nome</td>
				</tr>
				<tr>
					<td>Utiliza agenda?</td>
				</tr>
			</thead>
			<tbody>
				<c:forEach var="setor" items="${ListaSetor}">
					<tr>
						<td><c:out value="${setor.? }"</td>
					</tr>
					<tr>
						<td></td>
					</tr>
					<tr>
						<td></td>
					</tr>
				</c:forEach>
			</tbody>
		</table>
	</body>
</html>

servlet - 2° nessa ação de consultar eu devo montar um List ? se sim como faço pegando os dados que vem da dao?

package br.com.agenda.servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.agenda.dao.SetorDao;

public class SetoresSrv extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public SetoresSrv() {
        super();
    }

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String acao = request.getParameter("acao");

		SetorDao setorDao = new SetorDao();
		
		if(acao.equals("Consultar")){
			setorDao.consultarSetor();
			request.setAttribute("listaSetor", setorDao);
			request.getRequestDispatcher("setores.jsp").forward(request, response);
		}
	}

	
	
	
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		service(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		service(request, response);
	}
}

dao - ta certo o list?

package br.com.agenda.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.agenda.conexao.Conexao;
import br.com.agenda.javabeans.Setor;

public class SetorDao {

	Connection con = new Conexao().conexao();

	public List<Setor> consultarSetor(){

		ResultSet rs;

		List<Setor> listaSetor = new ArrayList();

		try {
			String sql = "SELECT * FROM TB_SETORES";
			
			Setor setor = new Setor();
			
			PreparedStatement stmt = con.prepareStatement(sql);  

			rs = stmt.executeQuery();
			
			while(rs.next()){ 
				setor.setIdSetor(rs.getInt("ID_SETOR"));
				setor.setSetor(rs.getString("SET_NOMESETOR"));
				setor.setAgenda(rs.getString("SET_AGENDA"));
			
				listaSetor.add(setor);
			}
		
			rs.close();
			stmt.close();

		} catch (SQLException e) {
			e.printStackTrace();
		}

		return listaSetor;  
		
	}
}

desculpe se estou enxendo de pergunta mas eh q realmente nao sei…os exemplos que acho por ai sao mais avançados usando JSF ou coisas assim que eu nao conheço

agradeço a paciencia de todos

abs

3 Respostas

odair.bonin

Gabriel, td bem ?

Algumas respostas sobre as suas perguntas:

Neste ponto, você está instanciando um bean Setor, acessando o seu construtor e chamando a instancia de “setor”. Não é uma lista, apenas um bean Setor.

<jsp:useBean id="setor" class="br.com.agenda.javabeans.Setor"></jsp:useBean>
...

Neste ponto, voce esta acessando uma instancia contida no request chamada ListaSetor (com L maiúsculo). Cada item da lista, voce esta chamando de setor (o mesmo nome da instancia anterior).

<c:forEach var="setor" items="${ListaSetor}">
...

Neste caso voce poderia acessar diretamente os getters da instancia setor (a da lista). Se vc usar setor.id, por trás voce estará acessando setor.getId();

<td><c:out value="${setor.? }"</td>

Neste ponto, você está adicionando ao request uma instância de setorDao. Veja que nomeou com L minúsculo. Talvez o correto seria adicionar não o Dao, e sim a lista obtida do Dao (setorDao.consultarSetor()) e alterar para “ListaSetor”.

...
request.setAttribute("listaSetor", setorDao);
...

Aparentemente, o list está correto.

Abraço

G

eae cara blza?

primeiramente obrigado pela ajuda o/

vou arrumar o q vc citou e fazer alguns testes…o q fikei na duvida é

o var ou o items do forEach tem que ser a msma coisa q eu colokei no useBean?

se eu pegar direto dos gettters e setters eu vou conseguir pegar a lista toda de setores?

sobre o ListaSetores errei msm foi mal rsrs

abs !

odair.bonin

Gabriel,

Sobre o var ou o itens: na verdade não tem que ser igual. Vc nem precisa do useBean … no seu caso, se vc tirar pode ser até melhor.

Sobre o getters e setters: A lista de todos os setores estará no request com a chave “ListaSetores”.

O for usará esta lista com ${ListaSetores} e chamará cada item da sua lista de setor.

Abs

Criado 12 de dezembro de 2011
Ultima resposta 13 de dez. de 2011
Respostas 3
Participantes 2