
Problema comunicando JSP con clase coneccion postgresql usando servlet
Publicado por Adrian (2 intervenciones) el 11/06/2017 14:28:38
Buenas amigos un gusto saludarlos,
Situación: Actualmente estoy tratando de crear una app web en java usando servlet, donde tengo 4 componentes:
1. Clase Servlet: Controlador que mantiene y gestiona la comunicación entre jsp y mis java class.
2. JSP: Es una sencilla interfax que pasa un parametro al servlet y en base a esto ejecuta una decisión de "if" dentro del servlet.
3. Clase Conexión: Esta es la clase que conecta con postgresql, esta clase la he probado sin el uso de servlet y la conexión retorna "Exito", además desde otra clase puedo consultar un valor en mi BD y mostrar un dato de una tabla, por ende la conexión si funciona.
4. Clase consultaBD: Esta clase es la que tiene la lógica dentro de la bd usando la clase conexión.
Problema:
Como les mencionaba la clase conexión a la BD si funciona, sin embargo cuando ejecuto el proyecto y hago mi trabajo en mi jsp, comunico mi servelt y este cuando requiere ir a hacer la conexión a la BD no lo permite. Ya he realizado buenos debug y es acá donde no realiza la conexión correctamente.
Error:
HTTP Status 500 - Internal Server Error
type Exception report
messageInternal Server Error
descriptionThe server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1.1 logs.
Clase conexión:
package DAO;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.Statement;
//import com.sun.mail.iap.ConnectionException;
import java.sql.SQLException;
public class ConectaDB {
private static Connection conexion;
//Metodo que administra la conexion a la BD
public Connection ConectaDB() throws SQLException{
String clave = "XXX";
String controllerDBPostgresql = "jdbc:postgresql://localhost:XX/XX";
try {
Class.forName("org.postgresql.Driver");
conexion = DriverManager.getConnection("jdbc:postgresql://localhost:XX/XX","postgres", clave);
int x = 9;
if(conexion != null){
System.out.println("Conectado con exito");
}
else{
System.out.print("Error conectando la bd");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conexion;
}
//Metodo para abrir la conexion a la bd
public Connection abrirConexion(){
return conexion;
}
//Metodo para cerrar la conexion a la BD
public void cerrarConexion() {
try {
conexion.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Clase para realizar consultas BD
package MetodosConsultas;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import DAO.ConectaDB;
//Clase para calcular segmento de indicadores
public class CalculoIndicadores {
ResultSet resultadoIndicador = null;
//Statement ejecutaIndicador = null;
//Metodo para calcular el GERD
public int calculoGERD(int GERD){
ConectaDB con;
String tipoCambio = null;
int resultadocalculoGERD = 0;
try {
con = new ConectaDB();
Connection conexion1 = con.ConectaDB();
Statement stCalculoGERD = conexion1.createStatement();
String query1 = "Select \"TipoCambioDolar\" from \"TablaTipoCambio\" where \"Anno\" = '2012'";
resultadoIndicador = stCalculoGERD.executeQuery(query1);
if(resultadoIndicador.next()){
tipoCambio = resultadoIndicador.getString(1);
}
GERD = Integer.parseInt(tipoCambio);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return GERD;
}
}
Servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int GERD = 0;
response.getWriter().append("Served at: ").append(request.getContextPath());
String variable = request.getParameter("variable");
String PIB= request.getParameter("KPI");
if(Integer.parseInt(PIB) == 1 ){
//CalculoIndicadores calculoGerdServlet = new CalculoIndicadores();
//int a = calculoGerdServlet.calculoGERD();
pruebaPersistenciaServlet a = new pruebaPersistenciaServlet();
int f = a.sumarNumeros();
response.getWriter().print("<p> El valor enviado es: " + f + "</p>");
response.getWriter().print("Hola SazkynEW");
}
else if(Integer.parseInt(PIB)==2){
CalculoIndicadores cal = new CalculoIndicadores();
int suma = cal.calculoGERD(GERD);
int g =9;
System.out.println(suma);
int x = 0;
response.getWriter().print("Hola Sazky" + suma);
Situación: Actualmente estoy tratando de crear una app web en java usando servlet, donde tengo 4 componentes:
1. Clase Servlet: Controlador que mantiene y gestiona la comunicación entre jsp y mis java class.
2. JSP: Es una sencilla interfax que pasa un parametro al servlet y en base a esto ejecuta una decisión de "if" dentro del servlet.
3. Clase Conexión: Esta es la clase que conecta con postgresql, esta clase la he probado sin el uso de servlet y la conexión retorna "Exito", además desde otra clase puedo consultar un valor en mi BD y mostrar un dato de una tabla, por ende la conexión si funciona.
4. Clase consultaBD: Esta clase es la que tiene la lógica dentro de la bd usando la clase conexión.
Problema:
Como les mencionaba la clase conexión a la BD si funciona, sin embargo cuando ejecuto el proyecto y hago mi trabajo en mi jsp, comunico mi servelt y este cuando requiere ir a hacer la conexión a la BD no lo permite. Ya he realizado buenos debug y es acá donde no realiza la conexión correctamente.
Error:
HTTP Status 500 - Internal Server Error
type Exception report
messageInternal Server Error
descriptionThe server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1.1 logs.
Clase conexión:
package DAO;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.Statement;
//import com.sun.mail.iap.ConnectionException;
import java.sql.SQLException;
public class ConectaDB {
private static Connection conexion;
//Metodo que administra la conexion a la BD
public Connection ConectaDB() throws SQLException{
String clave = "XXX";
String controllerDBPostgresql = "jdbc:postgresql://localhost:XX/XX";
try {
Class.forName("org.postgresql.Driver");
conexion = DriverManager.getConnection("jdbc:postgresql://localhost:XX/XX","postgres", clave);
int x = 9;
if(conexion != null){
System.out.println("Conectado con exito");
}
else{
System.out.print("Error conectando la bd");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conexion;
}
//Metodo para abrir la conexion a la bd
public Connection abrirConexion(){
return conexion;
}
//Metodo para cerrar la conexion a la BD
public void cerrarConexion() {
try {
conexion.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Clase para realizar consultas BD
package MetodosConsultas;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import DAO.ConectaDB;
//Clase para calcular segmento de indicadores
public class CalculoIndicadores {
ResultSet resultadoIndicador = null;
//Statement ejecutaIndicador = null;
//Metodo para calcular el GERD
public int calculoGERD(int GERD){
ConectaDB con;
String tipoCambio = null;
int resultadocalculoGERD = 0;
try {
con = new ConectaDB();
Connection conexion1 = con.ConectaDB();
Statement stCalculoGERD = conexion1.createStatement();
String query1 = "Select \"TipoCambioDolar\" from \"TablaTipoCambio\" where \"Anno\" = '2012'";
resultadoIndicador = stCalculoGERD.executeQuery(query1);
if(resultadoIndicador.next()){
tipoCambio = resultadoIndicador.getString(1);
}
GERD = Integer.parseInt(tipoCambio);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return GERD;
}
}
Servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int GERD = 0;
response.getWriter().append("Served at: ").append(request.getContextPath());
String variable = request.getParameter("variable");
String PIB= request.getParameter("KPI");
if(Integer.parseInt(PIB) == 1 ){
//CalculoIndicadores calculoGerdServlet = new CalculoIndicadores();
//int a = calculoGerdServlet.calculoGERD();
pruebaPersistenciaServlet a = new pruebaPersistenciaServlet();
int f = a.sumarNumeros();
response.getWriter().print("<p> El valor enviado es: " + f + "</p>");
response.getWriter().print("Hola SazkynEW");
}
else if(Integer.parseInt(PIB)==2){
CalculoIndicadores cal = new CalculoIndicadores();
int suma = cal.calculoGERD(GERD);
int g =9;
System.out.println(suma);
int x = 0;
response.getWriter().print("Hola Sazky" + suma);
Valora esta pregunta


0