Servlet/JSP基礎編02
開発環境
・テキストエディタ
文字のエンコーディングがUTF-8を指定できるものを選択する。有名なものでは「ATOM」があるが、僕は日常的によく利用する「Visual Studio Code」を使う。
・アプリケーションサーバ
前の記事でも紹介した通り、「Tomcat」を使う。アプリケーションサーバはサーブレットやJSPを使ったWEBアプリケーションを実行するために必要となる。
・データベース
データベース管理システムには「H2」を用いる。理由として、Javaとの相性がとても良いという点がある。
サーブレットプログラムの作成
最初のプログラムでは、シンプルにブラウザに「helloservlet」と表示し、横に日時などを表示するものを書く。
プログラムの解説をすると、
まず、9行目では、WebServletアノテーションを記述している。URLパターンを指定している。指定するルールとしては、コンテキストルートから記述することである。コンテキストルートとはWebアプリケーションの最上位のパスのことである。
次に、helloクラスの定義をしている。また、このクラスは、「javax.servlet.http.HttpServletクラス」のサブクラスとして定義する。
12行目では、HttpServletクラスを継承しているため「doGetメソッド」を使用できる。
このメソッドの引数には、コンテナからくるリクエストと逆に返すレスポンスが入っている。
メソッドの中身では、リクエストを解釈し、レスポンスを生成する処理が一般に書かれるが、今回は特にリクエストがないため、レスポンスだけを返す形となる。
レスポンスを出力するためには、Print Writerオブジェクトが必要となるため、宣言をし、変数に代入する。そして、その変数を利用して、ブラウザに表示したい文章などをprintlnメソッドで書いていく。
結果は下の写真のようになった。
しっかりと「helloservlet」と日時が表示されているのが分かる。
・疑問
僕はこのプログラムを書いたとき、1つだけ疑問が浮かんだ。サーブレットとはJavaプログラムの中にHTMLを埋め込む形のものだと思っていたが、今回のプログラムでは全く、HTMLを使用していないからである。
これの解答としては、文字エンコーディングの指定がある。これは、レスポンスのMIMEタイプの指定と、文字エンコーディングの指定ができる。
プログラム上では「response.setContentType("text/html; charset=UTF-8");」のように記述をする。このように書くと、HTML形式のレスポンスで文字エンコーディングは「UTF-8」と指定される。
今回のプログラムでは特に指定しなかったため自動的にMIMEタイプがテキストになっていた。だから、あのような結果で表示されたと考えられる。
さいごに
この記事では、最も初歩的なサーブレットのプログラムを紹介した。