带有 MySQL 的 Java Servlet

标签 java mysql servlets

所以我有一个名为 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 时,我得到的只是数据库连接错误,没有别的。我不知道是什么原因造成的。有什么想法吗?

最佳答案

<res-ref-name>>jdbc/LiveDataSource</res-ref-name>

我认为不是数据库连接错误。这是因为上面一行的 web.xml 文件中存在问题,将其替换为以下行,您在此处添加了额外的 >

<res-ref-name>jdbc/LiveDataSource</res-ref-name>

如果它不能解决您的问题,请发布堆栈跟踪。

关于带有 MySQL 的 Java Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31269169/

相关文章:

java - 访问存储在我的 servlet 中的服务器上的文件

servlets - 嵌入式 Jetty 服务器,无法在根上下文下看到网页

php - 显示来自 blob mysql 的图像

java - batik 将两个 svg 转换为单个 pdf

java - 错误: incompatible types Simple game selection with scanner?

java - 碧 Jade 报告 : multi line text field

mysql从2个不同的表中选择并返回最高价格

javascript - 带有动态创建行的表的表单

jsp - 重定向到 jsp。为什么 url 没有结尾/response.jsp?

java - 尝试使用获取缩放实例将图像添加到 JButton