初めてのサーブレット 本章のプログラムを御覧の際には、Tomcatが必要です。
こちらからダウンロード出来ます。
ファイルはzipフォルダに納められています。
解凍ソフト(Aladdin
Expander等)を使って解凍して下さい。
サーブレットの構成 サーブレットは、HttpServletクラスを継承して作ります。
サーブレットの基本構成を下記に示します。
アプレットに似てますね。 サーブレットの基本構造 package パッケージ名
import
public class クラス名 extends HttpServlet{
クラス変数の宣言
public void init(){
初期化処理
}
public void doPost(・・・){
}
public void doGet(・・・){
}
} |
HTTPの要求に対する応答メソッド doGetメソッドは、HTTPのGETリクエストに対し、呼び出されます。
又、doPostメソッドは、POSTリクエストに対して呼び出されます。
詳細は後述しますが、クライアントがURLを指定してサーブレットを要求するとdoGetメソッドが呼び出され、HTMLのフォームからPOST指定で要求するとdoPostメソッドが呼び出されます。
何れも、2つの引数を取ります。 HttpServletRequest:クライアントからのリクエスト情報
HttpServletResponse:サーバ側からの応答情報 |
コンテントタイプの設定 クライアントに応答する形式を設定します。
HTMLを生成して出力する時は、 res.setContentType("text/html"); |
と書きます。
此の文は、次のHTMLの送信より先に書かなければなりません。
ブラウザに表示したい内容が日本語の場合には、此の侭では文字化けして終います。
此は、サーブレットのデフォルトの文字コードが「ISO8859-1」と言う規格に有るのに対し、Windowsの文字コードが「シフトJIS」であり両者が異なる為です。
文字化けを防ぐ為に「setContentType」では、漢字コードの指定をします。 res.setContentType("text/html charset = shift_jis"); |
HTMLの生成 初めに、「今晩は/エーステレビニュースをお伝えします」と言う文字をブラウザに表示させるHTMLファイルを作って実験しておきましょう。
HelloServlet2.htmlを前節にして作成した、 フォルダの直下に置いて下さい。
Tomcat、ブラウザの順に起動してアドレスに、 http://localhost:8080/yoyaku/HelloServlet2.html |
と指定します。
正しく表示できたのでしょうか?
サーブレットは、此の様なHTMLを生成して、其れをクライアントに送信するプログラムなのです。
サーバからクライアントに文字列を送るには、第8章で学んだストリームを使います。
HttpServletResponseクラスのgetWriterメソッドを使うと、PrintWriterクラスの出力ストリームを確立出来ます。 PrintWriter out = res.getWriter(); |
HTMLはテキストですから、1行作成する度にprintlnメソッドで送信します。
MS-DOSの画面に表示した時と全く同様に、文字列をクライアントに送信出来ます。
上記で説明したHTMLファイルをJavaプログラム中に書いた場合は、次の様になります。 out.println("<html><head>"); //HTMLの送信
out.println("<title>Hello Servlet<title>");
out.println("</head><body>");
out.println("今晩は<BR>");
out.println("エーステレビニュースをお伝えします");
out.println("</body></html>"); |
HTTPヘッダに画像が有る事を指定 サーブレットで画像データをクライアントに送信する時は、「setContentType」を「image」とします。 res.setContentType("image/gif"); |
バイナリファイルの送信 画像データをクライアントに送信するには、第8章で学んだバイトストリームを使います。
HttpServletResponseクラスのgetOutputStreamメソッドを使うと、OutputStreamクラスの出力ストリームを確立出来ます。 OutputStream out = res.getOutputStream(); |
ファイルから読み込む方は、FileInputStreamクラスを使う事にしましょう。
読み込むファイル名の指定は絶対パスで行います。
「\」は、エスケープシーケンスの記号なので、「\\」とします。 戻る |