サーブレットを使用して動的テキスト入力値を mysql に挿入する
javascript を使用して追加のテキスト フィールドを追加するフォームがあります。これらの値をデータベースに保存するにはどうすればよいですか? 私のサーブレットで、 request.getParameterValues() を実行しようとすると、 java.lang.NullPointerException が発生します
これが私のフォームです
<form method="POST" action="ServletDB" name="submissionForm" id="submissionForm" onsubmit="return validate()">
<div id="authors">
<b>Author 1</b><br/>
<b>Name: </b><input type='text' name='name[]'><br/>
<b>Surname:</b><input type='text' name='surName[]'><br/>
<b>Email:</b><input type='text' name='eMail[]'><br/>
<b>Affiliations:</b><textarea rows='4' cols='50' name='affiliations[]'></textarea> <br/>
</div>
<input type="button" value="Add Author" onClick="addAuth('authors');">
これは私のJavaScriptです
var authCount = 1;
関数 addAuth(authDiv){
var newAuth = document.createElement('div');
newAuth.innerHTML = "Author " + (authCount + 1) + "<br/> <b>Name: </b><input type='text' name='name[]'><br/><b>Surname:</b><input type='text' name='surName[]'><br/><b>Email:</b><input type='text' name='eMail[]'><br/><b>Affiliations:</b><textarea rows='4' cols='50' name='affiliations[]'></textarea><br/>";
document.getElementById(authDiv).appendChild(newAuth);
authCount++;
}
サーブレットの DoPost での実装:
String[] name = req.getParameterValues("name");
String[] surName = req.getParameterValues("surName");
String[] eMail = req.getParameterValues("eMail");
String[] affiliations = req.getParameterValues("affiliations");
int authCount = name.length;
boolean rs1 = true;
try {
// Load the database driver
Class.forName("org.gjt.mm.mysql.Driver");
// Get a Connection to the database
connection = DriverManager.getConnection
(connectionURL, "root","");
//Add the data into the database
for(int i=0;i<authCount;i++){
String sql ="INSERT INTO mytable.author(articleld,Surname,FirstName,Email,) VALUES (?,?,?,?)";
PreparedStatement pst =
connection.prepareStatement(sql);
pst.setString(1,surName[i]);
pst.setString(3,name[i]);
pst.setString(4,eMail[i]);
out.println(pst);
rs1=pst.execute();
pst.close();
}