Servlet/JSP基礎編02

開発環境

テキストエディタ

文字のエンコーディングUTF-8を指定できるものを選択する。有名なものでは「ATOM」があるが、僕は日常的によく利用する「Visual Studio Code」を使う。

アプリケーションサーバ

前の記事でも紹介した通り、「Tomcat」を使う。アプリケーションサーバサーブレットJSPを使ったWEBアプリケーションを実行するために必要となる。

・データベース

データベース管理システムには「H2」を用いる。理由として、Javaとの相性がとても良いという点がある。

サーブレットプログラムの作成

最初のプログラムでは、シンプルにブラウザに「helloservlet」と表示し、横に日時などを表示するものを書く。

f:id:kouki-matsuura:20200823042833p:plain

プログラムの解説をすると、

まず、9行目では、WebServletアノテーションを記述している。URLパターンを指定している。指定するルールとしては、コンテキストルートから記述することである。コンテキストルートとはWebアプリケーションの最上位のパスのことである。

次に、helloクラスの定義をしている。また、このクラスは、「javax.servlet.http.HttpServletクラス」のサブクラスとして定義する。

12行目では、HttpServletクラスを継承しているため「doGetメソッド」を使用できる。

このメソッドの引数には、コンテナからくるリクエストと逆に返すレスポンスが入っている。

メソッドの中身では、リクエストを解釈し、レスポンスを生成する処理が一般に書かれるが、今回は特にリクエストがないため、レスポンスだけを返す形となる。

レスポンスを出力するためには、Print Writerオブジェクトが必要となるため、宣言をし、変数に代入する。そして、その変数を利用して、ブラウザに表示したい文章などをprintlnメソッドで書いていく。

結果は下の写真のようになった。

f:id:kouki-matsuura:20200823045306p:plain

しっかりと「helloservlet」と日時が表示されているのが分かる。

 

・疑問

僕はこのプログラムを書いたとき、1つだけ疑問が浮かんだ。サーブレットとはJavaプログラムの中にHTMLを埋め込む形のものだと思っていたが、今回のプログラムでは全く、HTMLを使用していないからである。

これの解答としては、文字エンコーディングの指定がある。これは、レスポンスのMIMEタイプの指定と、文字エンコーディングの指定ができる。

プログラム上では「response.setContentType("text/html; charset=UTF-8");」のように記述をする。このように書くと、HTML形式のレスポンスで文字エンコーディングは「UTF-8」と指定される。

今回のプログラムでは特に指定しなかったため自動的にMIMEタイプがテキストになっていた。だから、あのような結果で表示されたと考えられる。

さいごに

この記事では、最も初歩的なサーブレットのプログラムを紹介した。

次回は、サーブレットでweb.xml、HTMLを出力する処理を記述していこうと思う。