В моем приложении Struts есть форма Register в Jsp. Значения enterd в нем затем сохраняются в mysql Db с помощью класса действий.Исключение Null Pointer Исключение выбрано
Класс действия (Register.java) для вставки значений в БД MySQL является:
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;
}
}
СПЯ:
<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, но тот же результат. (Этот код выделен курсивом для Db в рабочем месте Mysql 6.0) Что я пропущу?
Об изменении метода к st.executeUpdate(), он выбрасывает NullPointer исключение в методе 'queree'. – VijayaRagavan
Курсив не работает над кодовыми блоками. Узнайте, какое поле является нулевым и почему. Поместите printlog перед вызовом методов и напечатайте значения переменных. Также используйте имена переменных, а не 'this.getter' ...? –
Те значения String возвращаются null. – VijayaRagavan