Ajuda 'HttpSession'

3 respostas
alexlima72

Estou começando a desenvolver com javabeans usando (eclipse-jsp+TomCat+BD-Oracle).
E eu gravo na Sessão o nome do usuário direto pela pagina JSP, até ai beleza…
Na minha classe criei um objeto (public String getIncluir())
e estou chamando ele pelo bean beleza gravando no BD tudo certo.
Porém agora eu queria inserir o usuário da sessão na tabela dentro desta getIncluir mas não estu conseguindo…

public String getIncluir() {
		String s = "";
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
		} catch (Exception e) {
			s = "Driver não Instalado";
		}
		try {
			Connection conexao = DriverManager.getConnection("jdbc:oracle:thin:sugartst/sugartst@sugar:1521:sugar");			
///		Verifica se ja tem registro			
			PreparedStatement sql = conexao.prepareStatement("select leo_dtturno,leo_hrturno from leo_una_turno where leo_dtturno = ? and leo_hrturno = ?");
			sql.setString(1,getLeo_dtturno());
			sql.setString(2,getLeo_hrturno());
			ResultSet rs1 = sql.executeQuery();
		if (rs1.next()) {
			s = "      existe turno aberto para este dia e periodo. Insira uma Ocorrência para o seu setor !!!!!!"+"<----"+"<a href=incluirsetor.jsp>Incluir Ocorrência</a>";
			rs1.close();
			conexao.close(); 
			} else {
///   Inclui
				HttpServletRequest request;
				HttpSession session = request.getSession(); 
				PreparedStatement sql2 = conexao.prepareStatement("Insert into "
					+ "leo_una_turno(leo_dtturno, leo_hrturno, leo_fechado, leo_user, leo_dtreal, leo_codigo) "
					+ "values(?,?,?,?,SYSDATE,LEO_UNA_TURNO_S.NEXTVAL)");
			sql2.setString(1,leo_dtturno);
			sql2.setString(2,leo_hrturno);
			sql2.setString(3,"N");
			sql2.setString(4 , session.setAttribute("sessao_leo_user"));//dá erro aqui no setString (- The method setString(int, String) in the type PreparedStatement is not applicable for the 
	 arguments (int, void))
			sql2.executeUpdate();
			s = "  Turno e Período incluído com Sucesso.";
			}
			conexao.close();

Está faltando algum import? eu estou usando os abaixo:

import java.sql.*;
import java.text.*;
import java.util.*;
import java.lang.String;
import java.io.*;   
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

Eu sei q o Código está Tosco mas alguem poderia ajudar??

3 Respostas

blpsilva

Esta sua atribuição abaixo no prepared statement não deveria usar setAttribute, e sim getAttribute.

sql2.setString(4 , session.setAttribute(“sessao_leo_user”));

// troque por

sql2.setString(4 , (String) session.getAttribute(“sessao_leo_user”));

Se você gravou este atributo corretamente na sessão, esta troca deve resolver

alexlima72

blpsilva obrigado não deu erro de compilação…eu fiz assim:

public String getIncluir() {
		String s = "";
		try {
			Connection conexao = DriverManager.getConnection("jdbc:oracle:thin:sugartst/sugartst@sugar:1521:sugar");			
//		Verifica se ja tem registro			
			PreparedStatement sql = conexao.prepareStatement("select leo_dtturno,leo_hrturno from leo_una_turno where leo_dtturno = ? and leo_hrturno = ?");
			sql.setString(1,getLeo_dtturno());
			sql.setString(2,getLeo_hrturno());
			ResultSet rs1 = sql.executeQuery();
		if (rs1.next()) {
			s = "      existe turno aberto para este dia e periodo. Insira uma Ocorrência para o seu setor !!!!!!"+"<----"+"<a href=incluirsetor.jsp>Incluir Ocorrência</a>";
			rs1.close();
			conexao.close(); 
			} else {
///   Inclui
				
				HttpServletRequest request = null;
				HttpSession session = request.getSession(); 
				PreparedStatement sql2 = conexao.prepareStatement("Insert into "
					+ "leo_una_turno(leo_dtturno, leo_hrturno, leo_fechado, leo_user, leo_dtreal, leo_codigo) "
					+ "values(?,?,?,?,SYSDATE,LEO_UNA_TURNO_S.NEXTVAL)");
			sql2.setString(1,leo_dtturno);
			sql2.setString(2,leo_hrturno);
			sql2.setString(3,"N");
			sql2.setString(4,(String)session.getAttribute("leo_user_session"));//aqui compilou
			sql2.executeUpdate();
			s = "  Turno e Período incluído com Sucesso.";
			}
			conexao.close();
		} catch (Exception e){		 
			s = e.getMessage();
		}	
		return s;
	}

na JSP está igual antes quando ainda não estava usando ‘HttpSession’ e estava funcionando normal

<jsp:getProperty name="Turno" property="incluir"/>

e a variavel q gravo a Sessão é: “leo_user_session”
Eu estou mostrando ela na pagina para enviar os dados para o Bean e está normal.
Só que está trazendo a mensagem “NULL” no lugar do Return s … e não grava o registro no BD

alexlima72

Alguém para ajudar???

Criado 6 de fevereiro de 2008
Ultima resposta 7 de fev. de 2008
Respostas 3
Participantes 2