Onde estou errando...[]

9 respostas
M

Bom dia javamaniacos…
Estou com problema que ao fazer select… eu setoo o atributo do resultset…
mas no codigo jsp está vindo null…onde estou errando?

alguem sabe onde estou errando?

Codigo da Servlet

ResultSet rs = st.executeQuery("SELECT *  FROM bairro");		

			if (rs.next())

			{

				String nomebairro = new String();

				nomebairro = rs.getString("bairro_nome");

				session.setAttribute("nomebairro", nomebairro);

			}
Codigo jsp

<tr>
			<td width="80" height="13"><%=session.getAttribute("nomebairro") %> </td>
			<td width="80" height="15" ><%=session.getAttribute("nomebairro")%></td>


está vindo null... por que se ja setei no Servlet????

9 Respostas

P

Se o select estiver retornando, tente setar assim:

Considerando que vc já colocou iniciou o objeto na session

e na jsp:

request.getSession().getAttribute("nomebairro")

Não sou um ótimo programador, mas se eu fosse vc, faria seu servlet chamar uma classe com o DAO (consultas em BD) e faze-lo retornar o resultado, assim vc seta na servlet o valor, sem usar o result set e consultas no BD na servlet

M
Ainda continua retornando Nulll..

Entendi pacato na verdade eu ia fazer assim.. mas queria tentar entender como resolver desse jeito.

pois ainda ta retornando NULL
P

Use o redirect para vc mandar para a tela que quer

// Tente assim
request.getRequestDispatcher("access.jsp").forward(request, response); 

// ou assim
response.sendRedirect("login.jsp");

No final depois de setar o valor coloque um destes comandos, apontando para a tela que quer mandar

M
Ainda ta retornando NULL

ResultSet rs = st.executeQuery("SELECT *  FROM bairro");			
			//List<ResultSet> list = new ArrayList<ResultSet>();

			while (rs.next()) {
				
				String nomebairro = new String();  
				  
                nomebairro = rs.getString("bairro_nome");  
  
                request.getSession().setAttribute("bairronome",nomebairro);  
                
                request.getRequestDispatcher("bairros.jsp").forward(request, response);

			}
<td width="80" height="13"><%=request.getSession().getAttribute("bairronome")%>	</td>
				<td width="80" height="15"><%=request.getSession().getAttribute("bairronome")%></td>
P

coloque um system.out.println(nomebairro); para ver o que está retornando do banco, se o select está ok

se tiver retornando valor, use o sendRedirect, está dentro de try?

M
no println aparece os campos..

o problema  ta  no request..  q  nao  ta  retornando  nada
P

mark, vc viu a resposta no outro post seu?

arrume a estrutura, vai por mim, coloquei lá até as classes para vc conseguir arrumar... do jeito que está vai ficar difícil te ajudar...

No seu form está o nome do servlet? ele está entrando no servlet?

Esse meu servlet aqui, é chamado de uma jsp e retorna o valor para ela:

JSP:
<form action="ServletValidaLogin" method="post">
			<input type="hidden" id="msgRetornoLogin" value="<c:out value="${msgRetornoLogin}"/>" />
		<br>
		<br>
		<br>
		<br>
		<br>
		<br>
			<table border="1px" cellspacing="0" cellpadding="6">
				<tr class="tabelaAcesso">
					<td style="border-color: white" style="border-style:groove"	colspan="3">Acessar</td>
				</tr>
				<tr class="textoAcesso">
					<td align="left" style="border-color: white" style="border-style:groove">Login:</td>
					<td><input type="text" name="login" id="login" align="left" maxlength=15 style="background-color: #DCDCDC"></td>
				</tr>
				<tr class="textoAcesso">
					<td align="left" style="border-color: white" style="border-style:groove">Senha:</td>
					<td><input type="password" name="senha" id="senha" align="left" maxlength=15 style="background-color: #DCDCDC"></td>
				</tr>
			</table>
			<br>
			<input type="submit" value="Acessar">
		</form>
	</center>
	
</body>

Servlet:

protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");

		VerificaUsuario verifica = new VerificaUsuario();
		String login = "a";//request.getParameter("login");
		String senha = request.getParameter("senha");
		String msgRetornoLogin = null;
		
		try {
			boolean status = verifica.verificarUsuario(login, senha);

			boolean a = true;
			if (a == true) { // teste

				request.getSession().setAttribute("loginUsuario", login);  

				response.sendRedirect("login.jsp");
				
			} else {

				request.setAttribute("msgRetornoLogin", msgRetornoLogin);
				request.getRequestDispatcher("access.jsp").forward(request, response); 
			}

		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

E envio para a tela de login tratar:

<html>
	<head>
		<title> PGPM - Login </title>
		<script type="text/javascript" src="http://updateyourbrowser.net/asn.js"> </script>
		<meta name="description" content="Tela login do PGPM">
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">	 
	</head>
 <% if (request.getSession().getAttribute("loginUsuario") != null) {%>
	
  <script type="text/javascript">  
      
      if (window.top != window.self) {  
        window.top.location="index.jsp";
      }  
    
  </script>	
 <%} else {%>	
    <frameset rows="8%,80%,4.3%" border="1" frameborder="1">
        <frame name="head" src="header.jsp" noresize="no">
        <frameset cols="100%"border="0" frameborder="0">
        	<frame src="access.jsp" noresize="no"></frame>
    	</frameset>
        <frame name="foot" src="foot.jsp" noresize="no">
    </frameset>
</html>
M
Pacato está identico ao seu..

mas como te disse queria tentar resolver assim para assim tentar entender a estrutura.
P

vai por mim Mark, vc não vai entender, pq vc não fará isso novamente, eu tentei no começo fazer assim também… mas depois vi o frankstein que eu tinha criado…

segue passo a passo a apostila da caelum “caelum-java-web-fj21” que melhor que isso não tem…

Veja se está dentro do try catch, ou se depois que sair do loop while, ele ta nulo

Criado 15 de julho de 2014
Ultima resposta 16 de jul. de 2014
Respostas 9
Participantes 2