我正在使用一种方法从数据库获取一些信息并返回包含该数据的对象。 当我在 Servlet doGet 上使用此方法时,对象变为空。当我在主设备上执行相同的操作时,它会正确填充数据。请问有人知道我做错了什么吗?
打印:
在 doGet 中:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
// TODO Auto-generated method stub
Conta conta = ContaDAO.GetConta(2);
double entrada = conta.getEntrada();
request.setAttribute("entrada", entrada);
request.getRequestDispatcher("dashboard.jsp").forward(request, response);
}
主要:
public static void main(String[] Args) {
Conta conta = new Conta();
conta = ContaDAO.GetConta(2);
double entrada = conta.getEntrada();
System.out.println(conta.getEntrada());
System.out.println(entrada);
这是我正在使用的 Conta 构造函数模型:
public class Conta{
//Atributos
protected int id;
protected String nomeDaConta;
protected double saldo;
protected double gasto;
protected double entrada;
/*protected ArrayList<String> categoriaDeGasto = new ArrayList<String>();
protected ArrayList<String> categoriaDeEntrada = new ArrayList<String>();*/
public Conta() {
super();
}
这是我正在使用的ContaDao方法:
public class ContaDAO {
public ContaDAO() {
super();
}
public static Conta GetConta(int id){
//Connection conexao = null;
PreparedStatement ps = null;
ResultSet rs = null;
Conta conta = new Conta();
Connection conexao;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
// Com o driver do Oracle já inserido pegando a variavel conexao e passando as credenciais do Oracle
conexao = DriverManager.getConnection(
"jdbc:oracle:thin:@oracle.fiap.com.br:1521:ORCL", "RM552501", "270697");
String sqlGetConta = "SELECT DISTINCT CD_CONTA, NR_TOTAL_ENTRADA, NR_TOTAL_SAIDA FROM T_FINEASY_CONTA WHERE CD_CONTA = ? ORDER BY CD_CONTA";
ps = conexao.prepareStatement(sqlGetConta);
ps.setInt(1, id);
rs = ps.executeQuery();
while(rs.next()) {
conta.setId(rs.getInt("CD_CONTA"));
//System.out.println(conta.getId());
conta.setEntrada(rs.getInt("NR_TOTAL_ENTRADA"));
//System.out.println(conta.getEntrada());
conta.setGasto(rs.getInt("NR_TOTAL_SAIDA"));
//System.out.println(conta.getGasto());
}
DBConnection.closeconexao(conexao);
DBConnection.closeconexaoPS(ps);
DBConnection.closeconexaoRS(rs);
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}
return conta;
}
这是一个驱动程序问题。基本上我的 oracle.jdbc 驱动程序是“安装”在 wrog 文件夹结构中的。我创建了一个文件夹,将驱动程序文件传输到该文件夹并添加到构建路径中。 PS:我正在开发一个动态网络项目。 正确的做法是根据我正在使用的文件结构将驱动程序文件传输到文件夹:“WebContent/WEB-INF/lib”。 我的教授说这是 Tomcat 的问题,它只能以这种方式看到驱动程序。 谢谢。