【发布时间】:2015-09-24 23:26:10
【问题描述】:
所以我有一个名为 javaschema 的 MySQL 模式和一个名为 filmtickets 的表。
我的 servlet 上有这段代码:
package thanos;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.naming.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.InitialContext;
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 javax.sql.DataSource;
/**
* Servlet implementation class MovieList
*/
@WebServlet("/MovieList")
public class MovieList extends HttpServlet {
private static final long serialVersionUID = 1L;
private DataSource datasource = null;
public void init() throws ServletException{
try {
Context init = new InitialContext();
Context env = (Context) init.lookup("java:/comp/env/");
datasource = (DataSource) env.lookup("jdbc/LiveDataSource");
} catch(Exception e) {
throw new ServletException(e.toString());
}
}
/**
* @see HttpServlet#HttpServlet()
*/
public MovieList() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>Film List</title></head>");
out.println("<body>");
try {
Connection con = datasource.getConnection();
Statement stmt = con.createStatement();
out.println("<table border=\"1\">");
out.println("<tr>");
out.println("<th>Movie Number</th>");
out.println("<th>Hours</th>");
out.println("<th>Title</th>");
out.println("</tr>");
ResultSet rs = stmt.executeQuery("SELECT * FROM filmtickets");
while(rs.next()) {
int id = rs.getInt("IdFilm");
String time = rs.getString("FilmTime");
String title = rs.getString("FilmTitle");
String htmlRow = createHTMLRow(id, time, title);
out.println(htmlRow);
}
rs.close();
con.close();
} catch(Exception e) {
out.println("Database connection problem");
}
out.println("</body>");
out.println("</html>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter pw = response.getWriter();
ConnectToDB connect = new ConnectToDB();
connect.getData();
}
private String createHTMLRow(int id, String time, String title) {
String row = "<tr>";
row += "<td>" + id + "</td>";
row += "<td>" + time + "</td>";
row += "<td>" + title + "</td>";
row += "</tr>";
return row;
}
}
Context.xml 里面有这个:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Resource name="jdbc/LiveDataSource" auth="Container"
driverClassName="com.mysql.jdbc.Driver"
type="javax.sql.DataSource"
username="root"
password="password"
url="jdbc:mysql://localhost:3306/javaschema"
maxActive="8" >
</Resource>
</Context>
和我的 web.xml 这个:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>test</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
<description>Connection Pool</description>
<res-ref-name>>jdbc/LiveDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
当我运行我的 servlet 时,我得到的只是数据库连接错误,仅此而已。我不知道是什么原因造成的。有什么想法吗?
【问题讨论】:
-
嗯,您在连接到数据库时遇到了问题,这听起来很明显。堆栈跟踪的错误消息是什么?
-
我没有收到来自编辑器的错误消息。当我运行 servlet 时,Html 运行良好,但我遇到了与 HTML 一起出现的数据库连接问题,它不会加载数据库
-
在
out.println("Database connection problem");行旁边至少添加e.printStackTrace();行并观察服务器日志。您可能会在那里看到问题的原因。您甚至可以将您的out.println("Database connection problem");行更改为out.println("Database connection problem, cause: " + e.getMessage());以直接在 JSP 输出中查看异常消息。 -
好的,我发现问题出在我的列上,由于某种原因它找不到它。反正!非常感谢您的帮助!!! :D