サーブレットの定型文メモ
サーブレットって、「コレをするにはコレを書かないといけない」っていう決まったコードが多いので、よく使うものをまとめました。
自分のコピペ用メモなので詳細な説明はしていません。時間があったら別記事で書きたいと思います…!
文字データをクライアントに送る
クライアントのブラウザに 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();