0

これは解決されました

問題はパラメータ名にありました。

従業員のログインの詳細を確認する基本的なログイン サーブレットを作成しようとしています。

しかし、私のサーブレットはデータベースと対話しているようには見えず、常に「tryagain.jsp」に戻ります。私は何を間違っていますか?グラスフィッシュとネットビーンズを使用しています。ライブラリファイルにもj/connectorドライバーがあります。

これは解決されました

問題はパラメータ名にありました。

これがコードです。

package loginServlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;

/**
 *
 * @author asus
 */
public class Login1 extends HttpServlet {


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        Connection conn;
        PreparedStatement ps;
        ResultSet rs;
        String DRIVER = "com.mysql.jdbc.Driver";
        String DATABASE_URL = "jdbc:mysql://localhost:3306/northwind";
       String uname=request.getParameter("username");
String passwd=request.getParameter("userPass");
        try {
            // load the driver class
            Class.forName(DRIVER);

            // establish connection to database                              
            conn =
                    DriverManager.getConnection(DATABASE_URL, "jonh86", "ADMIN");
            System.out.println("Connected....");
            ps = conn.prepareStatement("select * from userdata where user_name = ? and password = ?");
            ps.setString(1, uname);
            ps.setString(2, passwd);
            rs = ps.executeQuery();
            if (rs.next()) {

            RequestDispatcher rd = request.getRequestDispatcher("WelcomeServlet");
            rd.forward(request, response);

//out.println(rs.getString(2));
            } else {
                RequestDispatcher rd = request.getRequestDispatcher("tryagain.jsp");
            rd.include(request, response);
            }
        } 


        catch (Exception e) {
            System.out.println(e);
        }

    }

}
4

1 に答える 1

0

適切なエラーチェックを行うことで、自分で理由を見つけることができます。失敗する理由は山ほどあります。

// establish connection to database                              
            conn = DriverManager.getConnection(DATABASE_URL, "jonh86", "ADMIN");
            if(conn == null) System.out.println("Could not Connect");
            System.out.println("Connected...."); //--this code is misleading
            ps = conn.prepareStatement("select * from userdata where user_name = ? and password = ?");
            ps.setString(1, uname);
            ps.setString(2, passwd);
            rs = ps.executeQuery();

また、SQLExceptions をキャッチして出力する必要があります。

catch (SQLException e) {
    System.out.println("Exception = " + e);
}
于 2013-10-04T03:26:21.773 に答える