2014-02-05 148 views
0

在我的Struts應用程序中,Jsp中有一個Register表單。輸入的值將通過操作類存儲到MySQL Db中。空指針異常拋出

用於插入值,以MySQL數據庫的動作類(Register.java)爲:

package com.login; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

import com.opensymphony.xwork2.ActionSupport; 

public class Register extends ActionSupport { 



String regname; 
String regpass; 
String regmail; 

public String getRegname() { 
    return regname; 
} 

public void setRegname(String regname) { 
    this.regname = regname; 
} 

public String getRegpass() { 
    return regpass; 
} 

public void setRegpass(String regpass) { 
    this.regpass = regpass; 
} 

public String getRegmail() { 
    return regmail; 
} 

public void setRegmail(String regmail) { 
    this.regmail = regmail; 
} 


Connection con; 
Statement st; 
ResultSet rs; 

public void connect(){ 

    try { 

     Class.forName("com.mysql.jdbc.Driver"); 
     con=DriverManager.getConnection("jdbc:mysql://localhost:3306/vijay","root", "pwd"); 

     //*.getConnection("jdbc:mysql://localhost:3307/shoppingmall","root", "vijay");  
     st=con.createStatement();* 

    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (SQLException e) {   
     e.printStackTrace(); 
    } 
} 

public void queree(){ 
    try { 
     //*st.executeUpdate("insert into prodet (name,password,email) values('"+this.getRegname()+"','"+this.getRegpass()+"','"+this.getRegmail()+"');");* 

     st.executeUpdate("insert into prodet (name,caty) values('"+this.getRegname()+"','"+this.getRegpass()+"');"); 
    } catch (SQLException e) { 

     e.printStackTrace(); 
    } 
} 


@Override 
public String execute() throws Exception { 
    this.connect(); 
    this.queree(); 

    return SUCCESS; 
} 
} 

JSP的:

<s:form action="/loginns/register" cssStyle="float:right; background-color:lightgreen" method="POST"> 
<h5 align="center">Register here</h5> <br> 
<s:textfield name="regname" label="UserName"></s:textfield> 
<s:textfield name="regpass" label="Password"></s:textfield> 
<s:textfield name="regmail" label="email"></s:textfield> 
<s:submit align="center" value="Register"></s:submit> 
</s:form> 

struts.xml中:

<package name="Login" namespace="/loginns" extends="struts-default"> 
<action name="register" class="com.login.Register"> 
     <result name="error">/index.jsp</result> 
     <result name="success">/Registered.jsp</result> 
    </action> 

</package> 

一切工作正常。點擊註冊按鈕後,它會成功顯示結果頁面。沒有例外被拋出。 但在Db上,值不會更新。嘗試了2個DBS但結果相同。 (斜體代碼用於Mysql工作臺6.0中的Db)我錯過了什麼?

+0

在改變方法st.executeUpdate(),它引發空指針異常在 'queree' 方法。 – VijayaRagavan

+0

斜體不適用於代碼塊。發現哪個字段爲空以及爲什麼。在調用方法之前放置printlog並打印變量值。也使用變量名稱,而不是'this.getter' ...? –

+0

這些字符串值返回null。 – VijayaRagavan

回答