単純なサーブレット コードでは、プリペアド ステートメントにクエリを渡すとき
にNULLPointerExceptionがスローされます。
私が理解していることでは、null で定義されたオブジェクトに新しい値が与えられると、null ポインター例外がスローされます。
しかし、次のコードを正しく実行するように変更する方法がわかりません。
import java.sql.*;
public class DataLogic {
static Connection con;
static PreparedStatement ps;
static ResultSet rs;
DataLogic() {
try{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/student","root","");
} catch(Exception e){
e.printStackTrace();
}
}
public static boolean login(String user, String pass) {
boolean b=false;
try{
/*Exception thrown in next line*/
ps=con.prepareStatement("select * from login where uname=? and pass like ?");
ps.setString(1, user);
ps.setString(2, pass);
rs=ps.executeQuery();
//System.out.print(b=rs.next());
} catch(Exception e){
e.printStackTrace();
}
return b;
}
}
PS: これはサーブレットから呼び出されます。
アップデート:
serv.login.doPost(login.java:35) の data.DataLogic.login(DataLogic.java:22) での java.lang.NullPointerException .HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org. org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve. java:123) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) で org.apache.catalina.core.StandardHostValve.org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) の invoke(StandardHostValve.java:171) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) の org.apache .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) で org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java) :1023) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) で org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) で java.util. java.util.concurrent.ThreadPoolExecutor$Worker.run(不明なソース) の java.lang.Thread で、concurrent.ThreadPoolExecutor.runWorker(不明なソース)。run(不明なソース) Blockquote
助けてください。よろしくお願いします。