簡體   English   中英

Java Servlet與MySQL

[英]Java Servlet with MySQL

因此,我有一個稱為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>

如果它不能解決您的問題,請發布堆棧跟蹤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM