【发布时间】:2016-03-12 09:54:47
【问题描述】:
当我运行 search.html 文件时,它运行成功,但在输入值后,输出如图output 所示,请尽可能提供帮助。 odbc数据源名是base,表名是tab,我用Microsoft Access进行数据存储Access
数据库.java
import java.sql.*;
import javax.servlet.annotation.WebServlet;
public class database {
public Connection connect;
public Statement stat;
public String query;
public ResultSet result;
public database()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connect = DriverManager.getConnection("jdbc:odbc:base","","");
stat = connect.createStatement();
}catch(Exception e){}
}
}
搜索.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Search</title>
</head>
<body>
<form action="search" method="get">
<input type="number" name="ref" placeholder="reference" />
<input type="submit" value="search" />
</form>
</body>
</html>
搜索.java
import java.io.*;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/search")
public class search extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public search() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
PrintWriter out = response.getWriter();
database DB = new database();
DB.query = "SELECT * FROM tab where ref="
+request.getParameter("ref");
out.println("<html><body><table border=\"2\">"
+"<tr><th>ref</th><th>des</th><th>pri</th><th>cat</th>"
+"</tr>");
try
{
DB.result=DB.stat.executeQuery(DB.query);
while(DB.result.next())
{
out.println("<tr>"
+DB.result.getInt("ref")
+DB.result.getString("des")
+DB.result.getDouble("pri")
+DB.result.getString("cat")
+"</tr>");
}
out.println("</table></body></html>");
}catch(Exception e){
out.println(e.getMessage());
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
【问题讨论】:
-
由于某些或其他原因,我无法查看您的输出图像。
-
异常处理错误。您只是在打印恰好是
"null"的异常消息。将out.println(e.getMessage())替换为throw new ServletException(e)。您将在服务器日志中获得一个错误页面和完整的堆栈跟踪,这通常已经代表了它自己的整个答案。很可能DB.stat返回了null,这会导致NullPointerException。