[英]Null pointer exception while using jsp:usebean
使用<jsp:usebean>
創建的對象時,出現Null指針異常。 該對象已正確實例化( <jsp:getproperty>
運行良好)。但是當我在Register
類的靜態方法中傳遞此創建的對象時,它引發Null指針異常。
NewFile.htm
<!DOCTYPE html>
<html>
<form action="NewFile.jsp">
Name<input type="text" name="textbox1"/>
<br>
ID<input type="text" name="textbox2"/>
<br><select name="select1">
<option>India</option>
<option>France</option>
<option>Japan</option>
</select>
<br>
<input type="submit"/>
</form>
</body>
</html>
NewFile.jsp
<%@ page import="com.psl.Register" %>
<jsp:useBean id="emp" class="com.psl.Employee"/>
<jsp:setProperty property="name" name="emp" param="textbox1"/>
<jsp:setProperty property="country" name="emp" param="select1"/>
<jsp:setProperty property="id" name="emp" param="textbox2"/>
<jsp:getProperty property="country" name="emp"/>
<%Register.register(emp);%>
Register.java
package com.psl;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Register {
public static void register (Employee obj)
{
try {
PreparedStatement stm = DBConnection.establishConnection().prepareStatement("insert into Person values (?,?,?)");
stm.setString(1,obj.getName() );
stm.setInt(2, obj.getId());
stm.setString(3, obj.getCountry());
stm.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Employee.java
package com.psl;
import java.util.Arrays;
public class Employee {
@Override
public String toString() {
return "Employee [name=" + name + ", id=" + id + ", country=" + country
+ "]";
}
private String name;
private int id;
private String country;
public Employee() {
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
DBConnection.java
public class DBConnection {
private static Connection con ;
public static Connection establishConnection()
{try {
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/database","root","root");
} catch (Exception e) {
// TODO: handle exception
}
return con;
}
}
這是你的問題。
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/database","root","root");
} catch (Exception e) {
// TODO: handle exception
}
一個Exception
可能是被拋出,你是吞咽,即。 不處理 。 con
保留為null
,但您將其返回。
DBConnection.establishConnection()
因此返回null
。
您嘗試打電話
prepareStatement("insert into Person values (?,?,?)");
在null
。
代碼看起來不錯,但是thr可能是以下兩個導致null pointer exception
原因。 當您從方法DBConnection.establishConnection()
獲取connection
,請檢查此連接是否提供正確且有效的連接。
另一件事可以是Employee obj
, obj
可以為null
,因為您是從.jsp
調用的,因此請檢查它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.