0

サーブレットは Tomcat で正常にロードされます。現在、プロトタイプの .html ページに問題なくアクセスできますが、ボタンをクリックしてサーブレットを実行すると、次のエラーが発生します。

HTTP Status 500 - Error instantiating servlet class dbServlet

type Exception report

message Error instantiating servlet class dbServlet

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Error instantiating servlet class dbServlet
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
root cause

java.lang.ClassNotFoundException: dbServlet
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

以下は、私のプロトタイプ サーブレットのコードです。

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

@SuppressWarnings("serial")
public class databaseServlet extends HttpServlet {
protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text.html");
PrintWriter out = response.getWriter();

out.println("<xml version = \"1.0\"?>");
out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD " +
"XHTML 1.0 Strict//EN\" \"http://www.w3.org" +
"/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
out.println("<html xmlns = \"http://www.w3.org/1999/xhtml\">");

out.println("<head>");
out.println("<title>MySQL Servlet</title>");
out.println("<style type='text/css'>");
out.println("body{background-color: blue}");
out.println("</style>");
out.println("</head>");

out.println("<body>");
out.println("<h1>The MySQL Servlet Works!</h1>");
out.println("</body>");

out.println("</html>");
out.close();
}
}

そのスタックトレースが何を意味するか知っている人はいますか?

助けてくれてありがとう。

4

2 に答える 2

4

java.lang.ClassNotFoundException: dbServlet org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)

上記のスタック トレースから:

あなたのサーブレットはですdatabaseServletが、あなたは呼び出していますdbServlet。入力を間違えたようですweb.xml

注: ところで、Java の命名規則では、クラス名が大文字で始まることが示唆されています。

于 2012-11-12T04:55:27.503 に答える
1

質問にサーブレット マッピングが含まれていません。

java.lang.ClassNotFoundException: dbServlet

という名前のサーブレットがあり、デプロイメント記述子でdatabaseServlet宣言しました。dbServlet

サーブレット エントリは次のようになります。

例:

<servlet>
    <servlet-name>DatabaseServlet</servlet-name>
    <servlet-class>controller.DatabaseServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>DatabaseServlet</servlet-name>
    <url-pattern>/dbServlet</url-pattern>
  </servlet-mapping>

質問とは無関係:

プレゼンテーション用の JSP、Web アプリケーションのフローをリダイレクトするコントローラーとしてのサーブレット、およびエンティティとしての Modle が可能な MVC パターンを使用してみてください。

于 2012-11-12T05:25:24.327 に答える