您的位置:首页技术文章
文章详情页

Java Servlet中的PostgreSQL连接,用于从数据库检索信息。遇到错误

浏览:46日期:2024-05-02 13:15:48
如何解决Java Servlet中的PostgreSQL连接,用于从数据库检索信息。遇到错误?

我收到以下错误,任何人都知道为什么?

为什么你得到的是错误的身体的原因是,你的处理程序ClassNotFoundException被 原始异常堆栈跟踪。您正在将原始异常的消息写入,System.err但是(显然)不会写入普通系统日志中。(您可能会在“catalina.out”文件中找到该消息……这取决于Tomcat的配置/启动方式。)

正确的方法是要么链接异常;要么链接异常。例如

throw new servletexception('Class not found Error', e);

或在您将其捕获时将其明确记录。并且如果确实记录了日志,请确保记录异常,而不仅仅是异常消息。

除非我们看到原始异常stacktrace,否则我们无法告诉您问题的真正根本原因,但是最可能的两个原因是:

该类加载器找不到所需的类。例如,因为JAR文件不在正确的位置。在您尝试加载的类的初始化期间,某些类的类初始化失败。解决方法

我很难完成这项工作。我可以毫无问题地连接到数据库,但是我无法使其显示html页面。它不会运行。

import java.io.*;import java.sql.*;import java.text.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class ShowBedrock extends HttpServlet { public String getServletInfo() { return 'Servlet connects to PostgreSQL database and displays result of a SELECT'; } private Connection dbcon; // Connection for scope of ShowBedrock // 'init' sets up a database connection public void init(ServletConfig config) throws ServletException {String loginUser = 'postgres';String loginPasswd = 'supersecret';String loginUrl = 'jdbc:postgresql://localhost/bedrock';// Load the PostgreSQL drivertry { Class.forName('org.postgresql.Driver'); dbcon = DriverManager.getConnection(loginUrl,loginUser,loginPasswd);}catch (ClassNotFoundException ex){ System.err.println('ClassNotFoundException: ' + ex.getMessage()); throw new ServletException('Class not found Error');}catch (SQLException ex){ System.err.println('SQLException: ' + ex.getMessage());} } // Use http GET public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException {response.setContentType('text/html'); // Response mime type// Output stream to STDOUTPrintWriter out = response.getWriter();out.println('<HTML><Head><Title>Bedrock</Title></Head>');out.println('<Body><H1>Bedrock</H1>');try{// Declare our statementStatement statement = dbcon.createStatement();String query = 'SELECT name,dept,';query += ' jobtitle ';query += 'FROM employee ';// Perform the queryResultSet rs = statement.executeQuery(query);out.println('<table border>');// Iterate through each row of rswhile (rs.next()){ String m_name = rs.getString('name'); String m_dept = rs.getString('dept'); String m_jobtitle = rs.getString('jobtitle'); out.println('<tr>' +'<td>' + m_name + '</td>' + '<td>' + m_dept + '</td>' + '<td>' + m_jobtitle + '</td>' + '</tr>');}out.println('</table></body></html>');statement.close();}catch(Exception ex){out.println('<HTML>' + '<Head><Title>' + 'Bedrock: Error' + '</Title></Head>n<Body>' + '<P>SQL error in doGet: ' + ex.getMessage() + '</P></Body></HTML>');return;}out.close(); }}

任何机构都知道为什么会出现以下错误:

javax.servlet.ServletException: Class not found Error ShowBedrock.init(ShowBedrock.java:42) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Unknown Source)note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.

标签: java