【Java & Tomcat】文字出力用のストリームの取得(getWriter)※サンプルプログラム付き

  • このエントリーをはてなブックマークに追加
  • Pocket

サーブレットの処理結果としてなんらかの文字を出力するにはgetWriterという名称のメソッドを使用する必要がある。ここではその仕組みについて説明する。

文字出力用のストリームの取得の仕方

文字出力用のストリームの取得とは、HttpServletResponseオブジェクトから文字を出力する入れ物を取り出すことである。ストリームというのは文字が順番に連続して並んでいる入れ物のことである。取り出したストリームへ文字を書き出すと、それがクライアントに送られ、画面に表示される。

書き方の基本は簡単だ。

PrintWriterストリームの参照変数 = HttpServletResponseオブジェクト. getWriter();

実際のコードはこうなる。

PrintWriter out = response.getWriter();

ストリームを取り出したら、次に行うことはストリームに文字列を書き込むことである。取り出したストリームに書き込むためにPrintWriterクラスのメソッドが準備されている。

代表的なのがprintlnメソッドである。boolean型、char型、char[]型、int型、long型、float型、double型、String型の値を文字列としてストリームに出力する。その後、文字を出力した行を終了する。

書き方はこうである。

ストリームの参照変数.println(値);

実際のコードはこうなる。

out.println("ABCD");

もし、一行をいくつかに分けて出力する必要があるときは、最後の出力以外のメソッドをprintにすればよい。こうすれば行は終了しない。

ストリームの参照変数.print(値);

もし、上のABCDを連続して書いたprintlnのコードをふたつに分けて書いたとするとコードはこうなる。

out.print("AB");

out.println("CD");

他にも必要に応じて使えるメソッドがある。主要なメソッドとその特徴を挙げておく。詳細はPrintWriterクラスの仕様を参照してください。

文字列出用メソッド

説明

append(値);

Char型の文字かCharSequence型の文字列の値を、現在の文字列の後に追加する。

append(値、開始位置、終了位置);

CharSequence型の文字列の値の開始位置から終了位置までを、現在の文字列の後に追加する。

printf(フォーマット、引数);

値をフォーマットに従って文字列として出力する。

getWriterのAPI仕様

getWriter()

戻り値の型

java.io.PrintWriter

内容

文字テキストをクライアントに送ることができるPrintWriterオブジェクトを戻す。PrintWriterは、getCharacterEncoding()メソッドによって戻される文字コードを使用する。もしレスポンスの文字コードが、getCharacterEncodingメソッドの仕様に従って指定されていないならば(すなわち、メソッドはデフォルト値ISO-8859-1だけを戻す)、getWriterメソッドはそれをISO-8859-1へと変更する。

PrintWriterのflush()メソッドと呼ばれるメソッドはレスポンスをコミットする。

このgetWriter()メソッドかgetOutputStream()メソッドのどちらかが、ボディを書くために呼び出されるかもしれないが、両方は呼び出されることはない。

戻り値:文字データをクライアントに戻すことができるPrintWriterオブジェクト

例外:

java.io.UnsupportedEncodingException -もしgetCharacterEncoding()メソッドによって戻される文字コードが使用できないならば。

java.lang.IllegalStateException -もしgetOutputStreamメソッドが、このレスポンスオブジェクトのためにすでに呼び出されているならば。

java.io.IOException -もしインプットもしくはアウトプットの例外が起こるならば。

参照:

getOutputStream(), setCharacterEncoding(java.lang.String)

サンプルプログラム

このサンプルプログラムは、getWriterを使って文字出力用のストリームを取得し、そのストリームに様々なメソッドを使って値を出力する。

実行結果

ブラウザにURL:http://localhost:8080/Servlet/GetWriterを入力し、Enterを押す。

表示されるブラウザ画面:

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] アノテーションの宣言をする。
  • [2] HttpServletを継承して、HelloWorldクラスを定義する。
  • [3] doGet()メソッドをオーバーライドして定義する。
  • [4]-[12] 表示するために様々な型の変数を宣言する。
  • [13] Content Typeを設定する。
  • [14] 文字列出力用のストリームを出力するためにPrintWriterオブジェクトを取得する。
  • [15] HTMLの画面の開始を宣言する。
  • [16]-[22] appendメソッドを使って値を出力する。
  • [23]-[26] printfメソッドを使って値を出力する。
  • [27]-[48] printメソッドを使って値を出力する。
  • [49] HTML画面終了を宣言する。

まとめ

この記事では実際にgetWiter()を使用して様々な文字出力が出来ることを確認した。サンプルプログラムを実際に動作させて確かめてみよう。また、サンプルプログラムを自由に書き換えてそれが出力結果にどう影響するかを確認してみよう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する