2014-02-05 103 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

回答