将MySQL驱动程序库添加到NetBeans项目

时间:2015-06-23 20:51:52

标签: java mysql netbeans nullpointerexception

我是Java EE编程的新手,我应该做一些练习(很快就完成我的学校)。 我的问题可能很简单,但我没有找到答案。 在一个练习中,我应该能够登录到java / jsp / mysql类型的服务。

Login.htm

<html>
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="css/style.css" />
</head>

<body>
<h3>Login</h3>
<form name="login" method="post" action="ServletLogin">
<table>
    <tr> 
      <td>Email:</td>
      <td><input name="email" type="text" id="email"></td>
    </tr>
    <tr> 
      <td>Salasana</td>
      <td><input name="password" type="password" id="password"></td>
    </tr>
    <tr> 
      <td colspan="2">
          <input type="submit" name="Submit" value="Log in;">
        </td>
    </tr>
  </table>
</form>
</body>
</html>

漂亮的标准登录,是的。传递表单时,应该转到ServletLogin.java以启动登录序列。 相反,我从Glassfish得到这个:

HTTP Status 500 - Internal Server Error

type Exception report

messageInternal Server Error

descriptionThe server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1 logs.

GlassFish Server Open Source Edition 4.1

ServletLogin.java中,我们的导师留下了一个说明,即整个项目应该包含一个MySQL驱动程序库以避免NullPointerException

我的问题是,我如何使用Netbeans做到这一点? Netbeans告诉我,我已经安装了,但显然它不是或者它不起作用。

以下是ServletLogin.java代码:

/*
 * Remember to install a MYSQL driver library
 * or the file will alert
 * NullPointerException.
 */

package Servlets; //the package in which the Servlet is part of.


import java.io.*;
import java.sql.*;
import javax.servlet.*;
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.servlet.http.HttpSession;

@WebServlet(name = "ServletLogin", urlPatterns = {"/ServletLogin"})
public class ServletLogin extends HttpServlet {

    Connection conn = null;

    /**
     * Initializes the servlet.
     */
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);

        //Connect to database with database-class
        try {
        conn = Classes.SQL.openConnection();
        }
        catch (Exception e) {
           System.out.println("Cannot connect to database " + e);
        }
    }

    /**
     * Destroys the servlet.
     */
    @Override
    public void destroy() {

    //Closing the database connection
         try {
          conn.close();
        } catch ( SQLException se ) {
           System.out.println("Exception " + se);
        }
    }

    //Everything is done in doPost method.
    //This Servlet does not use doGet() or ProcessRequest()

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {


    PrintWriter out = response.getWriter();

    /*Unless there is a session, one is created.
        It is used to check if the user has logged in.*/

     HttpSession session = request.getSession(true);

        //Reading the parameters from login form.
        String email = request.getParameter("email");
        String password = request.getParameter("password");

        out.print(email);

        //Created login_ok and set it to false by default.
        boolean login_ok = false;


     try {
     //let's create a Statement with which the sql can be run with.
     Statement stmt = conn.createStatement();

     //Run SQL and save it to ResultSet rs.
     ResultSet rs = stmt.executeQuery("SELECT email, password FROM clients");

     //Go trough the results with while loop and next-method, which returns the value true, until we've reached last result.
     while(rs.next())
     {
       //Reading the data
       String email2 = rs.getString("email");
       String salasana2 = rs.getString("password);

       //If user input has been found from database,
       //login_ok becomes true and looping ends.
       if(email.compareTo(email2) == 0 && password.compareTo(password2) == 0)
       {
           login_ok = true;
           break;
       }

     }


     //If login_ok is true, save info about logging to session and guide the user to Clients.jsp
        if( login_ok == true )
        {
            //session is informed about login
            session.setAttribute("login", "ok");
            //Debugging printed to console.
            System.out.println("Login ok");
            //Proceeding to clients
            response.sendRedirect("clients.jsp");
            //Return stops the servlet run.
            return;
        }
      //Login false -> redirected to login page.
        else {
            response.sendRedirect("login.htm");
        }

    }

     catch(SQLException se){

     out.println("Error: " + se);

     }

        out.close();
    }


}

我是否遗漏了某些东西,比如进口或? 我安装了mysql-connector-java-5.1.23-bin.jar并将其设置为多个不同的位置,结果相同。我现在需要的是能够看到代码是否有效,但NullPointerException阻止我这样做。 添加mysql-connector-java-5.1.23-bin.jar项目属性 - &gt; Netbeans 8.0.2上的库似乎也没有解决它。 注册MySQL到GlassFish,仍然适用于NullPointerException

1 个答案:

答案 0 :(得分:0)

  1. 转到服务标签
  2. 选择数据库
  3. 右键单击并选择Register MYSQL driver
  4. 在项目中右键单击库,然后从添加库
  5. 中选择MYSQL