gpt4 book ai didi

java - jsp、servlet连接mysql数据库

转载 作者:行者123 更新时间:2023-11-29 13:01:05 25 4
gpt4 key购买 nike

尝试连接 mysql 数据库时遇到奇怪的错误。我有一个index.jsp:

<%@page import="proj.team.Team" %>
<%@page import="servlets.Init" %>
<%@page import="java.sql.Connection" %>
<%@page import="java.sql.DriverManager" %>

<!-- default html doctype, head, body etc. -->

<select class="select">
<option selected="selected">Choose Team</option>
<%= Init.getTeams() %>
</select>

<!-- default html, closing body and html -->

它正在调用此 servlet 的 (Init.java) 静态方法 getTeams():

package servlets;

import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import proj.database.MySQLConnection;
import proj.team.Team;

@WebServlet("/Init")
public class Init extends HttpServlet {
private static final long serialVersionUID = 1L;

public Init() {
super();
}

public static String getTeams() {
String s = "";

ArrayList<Team> teams = new ArrayList<Team>();
teams = MySQLConnection.getTeams();

for (Team t : teams) {
s += "<option value='" + t.getId() + "'>" + t.getName() + "</option>";
}

return s;
}

}

当我从另一个 java 类运行静态方法 getTeams() 时,它会工作并输出所有 <option>是我在数据库中的。但是当我从 jsp 调用这个方法时,它给了我这些错误:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:259)
at proj.database.MySQLConnection.getConnection(MySQLConnection.java:23)
at proj.database.MySQLConnection.getTeams(MySQLConnection.java:34)
at servlets.Init.getTeams(Init.java:34)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:93)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:744)
Apr 27, 2014 2:45:49 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [/class-java-project-baseball] threw exception [An exception occurred processing JSP page /index.jsp at line 28

25: <select class="select">
26: <option selected="selected">Choose Team</option>
27: <%=
28: Init.getTeams()
29: %>
30: </select>
31: </div>


Stacktrace:] with root cause
java.lang.NullPointerException
at proj.database.MySQLConnection.getTeams(MySQLConnection.java:36)
at servlets.Init.getTeams(Init.java:34)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:93)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:744)

我已经调试这个有一段时间了,人们似乎通过更改构建路径来解决这个问题,但我不确定它可能出了什么问题,因为它是从另一个 java 类工作的,但不是在 jsp 中,但为了以防万一,下面是这样的。

Build Path

预先感谢您为我提供的任何帮助。

最佳答案

我解决了这个问题,方法如下:

您会注意到 proj.database.MySQLConnection.getTeams(MySQLConnection.java:36) 处的 java.lang.NullPointerException 位于打印堆栈跟踪的中间部分。我在尝试连接到数据库时遇到 NullPointerException - 访问 Init.getTeams() 方法之间的唯一区别是从另一个 java 类而不是从网页调用它 - 我的 索引.jsp.

所以,经过几次谷歌之后,我发现最好将 mysql-connector.jar 放在 WebContent/WEB-INF/libs 文件夹中,并且更改构建路径以引用此位置。更改后现在可以使用了。

关于java - jsp、servlet连接mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com