いつか、技術ブログを

新人SE(研修中)が技術ブログを書きたがっているブログです

サーブレットの定型文メモ

サーブレットって、「コレをするにはコレを書かないといけない」っていう決まったコードが多いので、よく使うものをまとめました。
自分のコピペ用メモなので詳細な説明はしていません。時間があったら別記事で書きたいと思います…!

文字データをクライアントに送る

クライアントのブラウザに Hello, world! と表示させるためには、次のように書きます。

response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("Hello, world!");

リクエストパラメータの取得

HTMLのformタグの中で入力された値をサーブレットで使用するためのコードです。

request.setCharacterEncoding("送信元HTMLの文字コード");
String 変数名 = request.getParameter("リクエストパラメータのname");

セッションスコープの取得・基本操作

セッションスコープ(利用者がブラウザを閉じるかプログラムで削除するまで使える)にオブジェクトを保存したり、保存したものを取り出したりする時の書き方です。

// セッションスコープの取得
HttpSession session = request.getSession();
// セッションスコープに保存
session.setAttribute("属性名", インスタンス);
-----------------------------------------
// セッションスコープからインスタンスを取得
型名 変数名 = (型名)session.getAttribute("属性名");

// セッションスコープからインスタンスを削除
session.removeAttribute("属性名");
// セッションを無効化するまでの最大の秒数を指定
session.setMaxInacticeInterval(秒数);

フォワード

フォワードとは、処理をJSPなどに移すことです。ちなみにオブジェクトをサーブレットJSP間で共有するには、リクエストスコープに保存します。

RequestDispatcher dispatcher = request.getRequestDispatcher("フォワード先");
dispatcher.forward(request, response);

// リクエストスコープに保存
request.setAttribute("属性名", インスタンス);
-----------------------------------------
// リクエストスコープからインスタンスを取得
型名 変数名 = (型名)request.getAttribute("属性名");

データベースへの接続・参照

PreparedStatementは、SQL文をデータベースまで運んでくれるもの、というイメージです。
例外処理やクローズ処理は省略してます。

// データベースへの接続
Connection con = DriverManager.getConnection("URLを入力", "ユーザ名", "パスワード");
// PreparedStatementの取得
PreparedStatement pst = con.prepareStatement("SQL文");
// SQL文を実行し、結果をResultSetに取得
ResultSet rs = pst.executeQuery();
// 結果の表示
while(rs.next()){
  String 変数名 = rs.getString("データベースの列名");
}

データベースへの接続・更新

接続の部分は上記の「参照」と同じです。

// データベースへの接続
Connection con = DriverManager.getConnection("URLを入力", "ユーザ名", "パスワード");
// PreparedStatementの取得
PreparedStatement pst = con.prepareStatement("SQLの例:INSERT INTO ~ VALUES (?, ?)");
// ?の部分に代入
pst.setString(1, "文字列"); //1つ目の?
pst.setInt(2, 数値); //2つ目の?
// SQLを実行し、更新した行数を取得
int num = pst.executeUpdate();

DataSourceの使用

DataSourceの設定は、META-INFフォルダ内のcontext.htmlファイルにしておく必要があります。

InitialContext c = new InitialContext();
DataSource source = (DataSource) c.lookup("java:comp/env/ context.xml内のname ");
Connection con = source.getConnection();