fc2ブログ

[Web] JSP/サーブレットで更新

  • Posted by: servletmania
  • 2011-01-13 Thu 16:55:58
  • JDBC




Webアプリケーションを勉強するからには、JSPの入力フォームからデータベースの更新ができるようにしましょう。

[siroto]フォルダの下に[dbweb]フォルダを作成し、その中に「DBWebUpdate3.jsp」ファイルを作成します。ここに入力フォームのソースを記述します。

次に、[WEB-INF/src]の下に「DBWebUpdate3.java」ファイルを作成します。このファイルがJSPファイルから受け取った値によるデータベースの更新を行います。

dbwebupdate3_1


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です。

やっていることは過去の応用ですが、かなり汎用的なプログラムが出来上がりましたね。
スポンサーサイト



タグ :

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://servletmania.blog137.fc2.com/tb.php/43-3b7afc3c
月別アーカイブ
カテゴリ
リンク
RSSリンクの表示
QRコード
QR