Boa tarde, estou tentando exibir uma lista pelo jsp, tentei chamar do servlet e do managerBean e nao consegui, alguem me socorre…rsrsrs.
Chamando do ManagerBean
<%@pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><%@pageimport="entity.*, persistence.*"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><jsp:useBeanid="mb"class="manager.ManagerBean"scope="request"/><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>Times</title></head><body><tableborder=1><tr><th> Codigo </th><th> Nome </th><th> Email</th><th> Sexo</th><th> Nascimento</th><th> Time</th></tr><c:forEachitems="${mb.torcedores }"var="linha"><tr><td> ${linha.idTorcedor}</td><td> ${linha.nome}</td><td> ${linha.email}</td><td> ${linha.sexo}</td><td> ${linha.dataNascimento}</td><td> ${linha.time}</td></tr></c:forEach></table>
${msg}
</body></html>
ManagerBean
packagemanager;importjava.util.List;importentity.Torcedor;importpersistence.TorcedorDao;publicclassManagerBean{privateList<Torcedor>torcedores;publicManagerBean(){// TODO Auto-generated constructor stub}publicList<Torcedor>getTorcedores(){try{TorcedorDaotd=newTorcedorDao();torcedores=td.findAll();}catch(Exceptione){}returntorcedores;}publicvoidsetTorcedores(List<Torcedor>torcedores){this.torcedores=torcedores;}}
eu chamei pelo managerBean e tbm chamei pelo servlet
esse é o servlet
packagecontrol;importjava.io.IOException;importjava.util.Date;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importentity.Torcedor;importpersistence.TorcedorDao;/** * Servlet implementation class Controle */@WebServlet("/Controle")publicclassControleextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringcmd=request.getParameter("cmd");if(cmd.equalsIgnoreCase("listar"))listar(response,request);}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringcmd=request.getParameter("cmd");if(cmd.equalsIgnoreCase("login")){login(response,request);}if(cmd.equalsIgnoreCase("gravar"));gravar(request,response);}protectedvoidgravar(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringmsg="";try{Stringnome=request.getParameter("nome");Stringemail=request.getParameter("email");Stringsexo=request.getParameter("sexo");StringdataNascimento=request.getParameter("dataNascimento");Stringtime=request.getParameter("time");Torcedort=newTorcedor(null,nome,email,sexo,dataNascimento,time);newTorcedorDao().gravar(t);msg="Dados Gravados com Sucesso";}catch(Exceptione){msg="Erro"+e.getMessage();e.printStackTrace();}finally{request.setAttribute("msg",msg);request.getRequestDispatcher("cadastrarTorcedor.jsp").forward(request,response);}}protectedvoidlogin(HttpServletResponseresponse,HttpServletRequestrequest)throwsServletException,IOException{Stringemail=request.getParameter("email");Torcedortorcedor=null;try{torcedor=newTorcedorDao().findByEmail(email);request.setAttribute("torcedor",torcedor);if(torcedor!=null){request.getRequestDispatcher("visualizarTime.jsp");}else{request.getRequestDispatcher("cadastrarTorcedor.jsp");}}catch(Exceptione){e.printStackTrace();}}protectedvoidlistar(HttpServletResponseresponse,HttpServletRequestrequest)throwsServletException,IOException{try{request.setAttribute("lst",newTorcedorDao().findAll());}catch(Exceptione){e.printStackTrace();}finally{request.getRequestDispatcher("visualizarTime.jsp");}}}
quando chamo pelo servlet faço dessa forma
<%@pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><%@pageimport="entity.*, persistence.*"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><jsp:useBeanid="mb"class="manager.ManagerBean"scope="request"/><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>Times</title></head><body><formid="vt"action="Controle?cmd=listar"method="get"><tableborder=1><tr><th> Codigo </th><th> Nome </th><th> Email</th><th> Sexo</th><th> Nascimento</th><th> Time</th></tr><c:forEachitems="${mb.torcedores}"var="linha"><tr><td> ${linha.idTorcedor}</td><td> ${linha.nome}</td><td> ${linha.email}</td><td> ${linha.sexo}</td><td> ${linha.dataNascimento}</td><td> ${linha.time}</td></tr></c:forEach></table></form>
${msg}
</body></html>
L
LostSoldier
Essa linha
<c:forEachitems="${mb.torcedores}"var="linha">
Não deveria ser o parâmetro atribuido no request?
<c:forEachitems="${lst}"var="linha">
Creio que você está confundindo os conceitos, ManagerBean é coisa do JSF e você está usando JSP, são coisas diferentes… além do mais JSF usa variáveis com #{} em arquivos .xhtml e JSP usa com ${} em arquivos .jsp
C
Cristiano_Gomes
ja coloquei dessa forma, porem nao busca os dados do banco
L
LostSoldier
Alguma mensagem de erro?
Outra, você não está encaminhando corretamente no método listar…
o problema que ele nao esta resgatando os dados do banco, a pagina abre, só nao vem com os dados
C
Cristiano_Gomes
Alguem sabe como consigo listar no jsp, ja tentei todos o metodos ai em cima e nada.
L
lucas.sampaio
Posta o método que faz o acesso ao banco. O método DAO que lista os dados.
L
lucas.sampaio
No Sevlet:
Usa o método service(HttpServletRequest request, HttpServletResponse response) no lugar do doGet e do doPost.
Na criação do Tocedor (new Torcedor(null, ...)) tira o id do construtor e tira esse null daí tambem.
No .jsp:
O que é esse mb.torcedores? Sendo que tu tá mandando um attributo lst (request.setAttribute("lst", new TorcedorDao().findAll()))
L
lucas.sampaio
Mais uma coisa. se tiver acc no github, coloca esses arquivos (os arquivos em questão: Servlet, jsp, classe DAO) como gist e manda o link.
C
Cristiano_Gomes
mb.torcedores pq primeiro tentei chamar do managerBean depois tentei chamar pelo listar do servlet, so que nao funcionou nenhum dos dois jeitos
C
Cristiano_Gomes
packagepersistence;importjava.util.ArrayList;importjava.util.List;importentity.Torcedor;publicclassTorcedorDaoextendsDao{publicvoidgravar(Torcedort)throwsException{open();stmt=con.prepareStatement("insert into torcedor values(null,?,?,?,?,?)");stmt.setString(1,t.getNome());stmt.setString(2,t.getEmail());stmt.setString(3,t.getSexo());stmt.setString(4,t.getDataNascimento());stmt.setString(5,t.getTime());stmt.execute();stmt.close();close();}publicList<Torcedor>findAll()throwsException{open();stmt=con.prepareStatement("select*from torcedor");rs=stmt.executeQuery();List<Torcedor>lst=newArrayList<Torcedor>();while(rs.next()){Torcedort=newTorcedor();t.setIdTorcedor(rs.getInt("idTorcedor"));t.setNome(rs.getString("nome"));t.setEmail(rs.getString("email"));t.setSexo(rs.getString("sexo"));t.setDataNascimento(rs.getString("dataNascimento"));t.setTime(rs.getString("time"));lst.add(t);}close();returnlst;}publicTorcedorfindByEmail(Stringt)throwsException{open();stmt=con.prepareStatement("select*from torcedor where email =?");stmt.setString(1,t);rs=stmt.executeQuery();Torcedorto=null;if(rs.next()){to=newTorcedor();to.setIdTorcedor(rs.getInt("idTorcedor"));to.setNome(rs.getString("nome"));to.setEmail(rs.getString("email"));to.setSexo(rs.getString("Sexo"));to.setDataNascimento(rs.getString("dataNascimento"));to.setTime(rs.getString("time"));}close();returnto;}}
L
LostSoldier
Cara, agora que estou vendo, não faz sentido você ter um form mandando get…
Critiano, você já debugou nessa linha na hora que tu chama o findAll para ver se os dados estão vindo? request.setAttribute(“listar”,new TorcedorDao().findAll());
Se sim, após carregar os dados e setar no atributo da requisição, você tem que “encaminhar” a requisição e resposta para a JSP, ai na JSP você referencia no items do forEach o atributo que você setou na requisição que no teu caso é o “listar”.
Obrigado a todos por ajudarem, estava com um erro no banco de dados, apos resolver esse erro nao conseguia listar, para resolver esse problema utilizei criei a classe com o nome de managerBean para listar e chamei ela pelo jsp para exibir a lista, estarei postando como ficou a classe managerBean e o jsp.
OBS: Não consegui listar pelo servlet.
<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><%@pageimport="entity.*, persistence.*, java.util.*"%><jsp:useBeanid="mb"scope="request"class="manager.ManagerBean"></jsp:useBean><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>Times</title></head><body><tableborder=1><tr><th> Codigo </th><th> Nome </th><th> Email</th><th> Sexo</th><th> Nascimento</th><th> Time</th></tr><c:forEachvar="linha"items="${mb.torcedores}"><tr><td> ${linha.idTorcedor}</td><td> ${linha.nome}</td><td> ${linha.email}</td><td> ${linha.sexo}</td><td> ${linha.dataNascimento}</td><td> ${linha.time}</td></tr></c:forEach></table></body></html>
Essa foi a classe que utilizei para listar.
packagemanager;importjava.util.List;importentity.Torcedor;importpersistence.TorcedorDao;publicclassManagerBean{privateList<Torcedor>torcedores;publicManagerBean(){// TODO Auto-generated constructor stub}publicList<Torcedor>getTorcedores(){try{TorcedorDaotd=newTorcedorDao();torcedores=td.findAll();}catch(Exceptione){}returntorcedores;}publicvoidsetTorcedores(List<Torcedor>torcedores){this.torcedores=torcedores;}}
L
lucas.sampaio
Que bom que conseguiu.
Uma coisa que achei interessante foi você usar o método close(); antes de do return list;.
Outra coisa que notei é que você tá usando isso solto. Ou seja, não está explicitando que quer abrir e fechar um PreparedStatement. Dá pra ver que você é iniciante, o importante é fazer funcionar, mas aconselho que depois de conseguir fazer funcionar, tente seguir boas práticas e busque sempre manter um código organizado.
E qualquer dúvida posterior não deixe de perguntar.