1. Top » 
  2. スポンサー広告 » 
  3. 【Java】サーブレットの基本的な話をする
  4. プログラミング全般 » 
  5. Java » 
  6. 【Java】サーブレットの基本的な話をする

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Genre:

【Java】サーブレットの基本的な話をする

前回作ったサーブレット、書いたのはいいが、何も話していないので簡単に解説をしよう。
とりあえず前回のソースで処理をしている部分を引っ張ってくる。

    protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html; charset=Windows-31J");
PrintWriter out = response.getWriter();

out.println("<HTML>");
out.println("<BODY>");
out.println("<H2>Title</H2>");
out.println("<p>");
out.println("Text output<br>");
out.println("日本語の例<br>");
out.println("</p>");
out.println("</BODY>");
out.println("</HTML>");

}

もともとサーブレットはサーバ上であれこれ処理をして結果を返してくれるものでした。
今回はサーバというよりも、Tomcatというプログラムの上で処理を行っているのでした。
つまり通常のコンテンツは、サーバがWeb上にあるファイルをそのまま取ってきてくれるのですが
サーブレットの場合、そこにTomcatが絡んできているということです。

j2ee_04_01.jpg

このとき、ブラウザからサーバへ送られる赤矢印の流れを「リクエスト」と呼び
逆にサーバ側からブラウザへ送られる青矢印の流れを「レスポンス」と呼びます。
さて、今回の処理を行っているdoGetというメソッドの引数を見てみましょう。

    protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException

これを見ても分かるとおり、このリクエストとレスポンスという名前は
テンプレートにも使われるぐらい代表的な呼称ということになります。

JavaではリクエストをHttpServletRequestというクラスのインスタンスとして扱い
レスポンスをHttpServletResponseというクラスのインスタンスとして扱うということです。
つまりまわりくどく言っていますが

ブラウザへ送る側の処理は、response、に対して行う
ブラウザから来る情報への処理は、request、に対して行う


ということです。
ところで、結局この適当なサーブレットは次の二つのことしかしていません。

1.responseに対してコンテンツの種類を設定する
2.responseに対して出力を行う


これについて見てみましょう。
今回のプログラムはただブラウザ上に文字列を出しているだけなので
来る側のrequestには特に何もする必要がないのですね。


1.コンテンツの種類の設定について
コンテンツの種類というのは、つまりブラウザから返ってくる情報が

1.どのような種類の情報なのか(HTMLか、txtか、PDFか、jpegか、docファイルか・・・)
2.どのような文字コードで渡されてくるのか


といったことです。これを設定するためにsetContentTypeというメソッドを使います。
詳しくはまた別の場所で出てくるかもしれませんが、日本語を扱う場合は基本的に今回の書き方です。
(OSの環境によってはcharsetの方をWindows-31Jから変える必要があるかもしれません。)
(ただのテキストファイルとして出力するにはtext/htmlをtext/plainとします。などなど)


2.出力
サーバ側からブラウザ側へつながっている流れはresponseでした。
よってこのresponseからPrintwriterのインスタンスを取り出してきて出力すればいい。

たとえばJavaでファイルを読むとき、FilreReaderやBufferedReaderなどを使います。
これは実際にどのようにファイルへアクセスするかというのをとりあえず無視して
そういったことをうまく覆い隠したストリームという概念を用いることでファイルにアクセスしています。

j2ee_04_02.jpg

またPrintWriterというのは身近なところではSystem.out.printlnにも現れます。
System.outというのは標準出力=黒い画面を指しますが、これの型はPrintWriterです。
このときも、実際にSystem.outがどこにつながっているのか意識することなく
そのストリームに文字列をぽいぽい載せてやれば、あとは実行側が処理をしてくれるという特徴があります。
ストリームというのはデータの流れのことですね。


というわけで、今回も次のように考えられます。
responseというのはサーバからブラウザへつながっていると考えていいです。
ここからgetWriterというメソッドを用いると、この流れのPrintWriterが得られます。
System.outで画面につながったストリームが得られるのと同じです。

ですので、こうして得られたoutにおなじみのprintln関数を使って
文字列をぽいぽい投げてやればブラウザに返ってくる。
そういうことになるのです。

j2ee_04_03.jpg

それでは次回、サーブレットとは違ったもう一つの形態であるJSPというものを経由した後
おそらくJSPとサーブレットの連携をした後にDBの話へ行こうと思います。



category of Haskell:
【Java】サーブレット/JSPを書く勉強をするための環境について知っていること(一回目)
【Java】サーブレット/JSPを書く勉強をするための環境について知っていること(二回目)
【Java】開発環境を活用してサーブレットを書く。
関連記事
スポンサーサイト

Comment

コメントフォーム
このエントリへコメントを書く
(任意)
(任意)
(任意)
(必須) HTMLタグは使用できません
(任意) ID生成と編集に使用します
(任意) 非公開コメントにする

Page Top

Trackback

Trackback URI
http://parabola0.blog86.fc2.com/tb.php/526-d744d5cb この記事にトラックバックする(FC2ブログユーザーのみ)

Page Top

訪問者

お引っこし。 http://parabola.sblog.jp/

プロフィール

parabola0

Author:parabola0
Twitter用ですが…。
プロフィール

最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
検索フォーム
リンク

このブログをリンクに追加する

QRコード
QRコード
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。