我很难完成这项工作。我可以毫无问题地连接到数据库,但是我无法让它显示 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 driver
try
{
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 STDOUT
PrintWriter out = response.getWriter();
out.println("<HTML><Head><Title>Bedrock</Title></Head>");
out.println("<Body><H1>Bedrock</H1>");
try
{
// Declare our statement
Statement statement = dbcon.createStatement();
String query = "SELECT name, dept, ";
query += " jobtitle ";
query += "FROM employee ";
// Perform the query
ResultSet rs = statement.executeQuery(query);
out.println("<table border>");
// Iterate through each row of rs
while (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.
我收到以下错误有人知道为什么吗?
您收到该错误正文的原因是您的处理程序ClassNotFoundException
is 扔掉原始异常堆栈跟踪。您正在将原始异常消息写入System.err
但(显然)这不会进入正常的系统日志。 (您可能会在“catalina.out”文件中找到该消息...具体取决于 Tomcat 的配置/启动方式。)
正确的方法是链接异常;例如
throw new ServletException("Class not found Error", e);
或者在捕获它时明确记录它。如果您确实明确记录它,请确保记录异常,而不仅仅是异常消息。
除非我们看到原始的异常堆栈跟踪,否则我们无法告诉您问题的实际根本原因......但两个最可能的原因是:
- 类加载器找不到需要的类;例如因为 JAR 文件不在正确的位置。
- 在您尝试加载的类的初始化过程中,某些类的类初始化失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)