[Web] JSP/サーブレットで更新
- 2011-01-13 Thu 16:55:58
- JDBC
Webアプリケーションを勉強するからには、JSPの入力フォームからデータベースの更新ができるようにしましょう。
[siroto]フォルダの下に[dbweb]フォルダを作成し、その中に「DBWebUpdate3.jsp」ファイルを作成します。ここに入力フォームのソースを記述します。
次に、[WEB-INF/src]の下に「DBWebUpdate3.java」ファイルを作成します。このファイルがJSPファイルから受け取った値によるデータベースの更新を行います。

web.xmlを記述する
<servlet>
<servlet-name>DBWebUpdate3</servlet-name>
<servlet-class>dbweb.DBWebUpdate3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DBWebUpdate3</servlet-name>
<url-pattern>/DBWebUpdate3</url-pattern>
</servlet-mapping>
JSPファイルを記述する
JSPファイルは、ほぼHTMLなので簡単です。
<%@page contentType="text/html; charset=Windows-31J" %>
<html><body>
<form action="../DBWebUpdate3" method="post">
<table>
<tr>
<th>氏名<th>
<td><select name="name">
<option value="太郎">太郎</option>
<option value="次郎">次郎</option>
<option value="三郎">三郎</option></select>
</td>
<th> 金額<th>
<td><input type="text" name="money"></td>
<td> <input type="submit" value="更新"></td>
</tr><br>
</table>
</form>
</body></html>
サーブレットを記述する
サーブレットでは、PreparedStatementを利用します。意欲のある方は、Statementを利用したソースを自作してみてください。
package dbweb;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dbjava.DBManager;
public class DBWebUpdate3 extends HttpServlet{
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
request.setCharacterEncoding("Windows-31J");
response.setContentType("text/plain; charset=Windows-31J");
PrintWriter out=response.getWriter();
String name=request.getParameter("name"); //(1)
String moneyStr=request.getParameter("money");
int money=Integer.parseInt(moneyStr);
Connection con=null;
PreparedStatement ps=null;
try{
String sql="update account set money=? where name=?";
con=DBManager.testConnection();
ps=con.prepareStatement(sql);
ps.setInt(1, money);
ps.setString(2, name);
ps.executeUpdate();
out.println("名前が「"+name+"」の残高を"+money+"に更新しました。");
ps.close();
con.close();
}catch(SQLException e){
out.println("更新作業ができませんでした。");
}finally{
if(ps !=null){
try{
ps.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(con !=null){
try{
con.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
}
このソースで目新しいものは、(1)の部分でgetParameter()メソッドを利用して値を受け取るところです(といっても復習になりますが)。
データベースへのアクセスは過去のソースを使い回せばよく、PrintWriterで出力をブラウザ上で行えばOKです。
やっていることは過去の応用ですが、かなり汎用的なプログラムが出来上がりましたね。
スポンサーサイト
タグ :
Comments: