使用JSP和Servlet POST方法查询MySQL

使用JSP和Servlet POST方法查询MySQL,mysql,jsp,servlets,Mysql,Jsp,Servlets,我不确定我是否试图“打印”正确的结果。我试图做的是使用JSP接收变量,然后将其传递给servlet,在servlet中查询数据库,然后显示结果。我在另一个java文件中测试了查询我的数据库,我没有遇到任何问题。任何建议都将不胜感激 JSP文件: <form method="post" action="HelloServlet"/> Enter your name:<input name = "exName"/><br> <input type = "s

我不确定我是否试图“打印”正确的结果。我试图做的是使用JSP接收变量,然后将其传递给servlet,在servlet中查询数据库,然后显示结果。我在另一个java文件中测试了查询我的数据库,我没有遇到任何问题。任何建议都将不胜感激

JSP文件:

<form method="post" action="HelloServlet"/>
Enter your name:<input name = "exName"/><br>

<input type = "submit" />
</form>

代码中几乎没有什么需要更改的地方

如@BalusC所述,不要抑制异常。使用
out.println(ex)将异常写入浏览器
抛出新的ServletException(ex)
。这将帮助您找到问题的原因

添加
Class.forName(“com.mysql.jdbc.Driver”)
DriverManager.getConnection()之前

由于您已经在使用
PreparedStatement
use

pst = con.prepareStatement("SELECT * FROM exercise WHERE exercise_name =?");
pst.setString(1, exName);
rs = pst.executeQuery();

您完全禁止抛出
SQLException
。为什么?将
抛出新的ServletException(ex)
添加到catch中,这样您就可以得到一个带有堆栈跟踪和所有元素的好的错误页面。异常包含问题的全部答案。(我还是一个初学者)我想我不知道我正在抑制SQLException。你介意指出我在哪里做吗?我不太明白。谢谢。您正在捕获
SQLException
,但没有对其执行任何操作,而是继续代码流,就好像没有发生什么特别的事情一样。您至少应该记录/打印它,或者在这种情况下,最好将其重新命名为
ServletException
,符合Servlet API规范建议。发布的表单值是属性,请使用getAttribute而不是GetParameter谢谢您提供的信息!感谢Hardik,我确实做了这些更改,编译并收到了:“java.lang.ClassNotFoundException:com.mysql.jdbc.Driver”我查找了这意味着什么,我发现mysql jdbc驱动程序jar文件在类路径中丢失了。当我搜索如何解决这个问题时,我阅读了下载JDBC驱动程序的建议。我已经这样做了,并将它放在我的“库”中,其中有“mysql-connector-java-5.1.24-bin.jar”。如有任何建议,将不胜感激@用户2221016:你会来的。你可以接受完整的答案。这会鼓励用户使用SO.:)哦,对不起,我不清楚。。。即使有了JDBC驱动程序,我也收到了这个错误。你认为我遗漏了什么吗?编译后,我收到了错误:“java.lang.ClassNotFoundException:com.mysql.jdbc.Driver”,我想我不明白为什么我会收到这个消息,因为我的库中有jdbc驱动程序。@user2221016:Put
.jar
文件在/WEB-INF/lib目录下。重新启动tomcat。
pst = con.prepareStatement("SELECT * FROM exercise WHERE exercise_name =?");
pst.setString(1, exName);
rs = pst.executeQuery();