Webページの見た目を構成しているHTMLの特徴の一つは、ページ間をリンクで結べる所である。このリンクの機能を利用してサーブレットを呼び出す方法について説明する。
リンクによるGETリクエストの仕方
リンクとは、Webページで他のWebページを呼び出すための仕組みである。文字や絵にリンクを付けると、その文字や絵をクリックすると別のWebページが表示される。このリンクを使ってサーブレットを呼び出してみよう。
画面の中の「リンク」という文字が青くなって、アンダーラインが引かれている。これがリンクだ。
書き方の基本は簡単だ。
<a href="URLパス">
実際のHTML画面でリンクを付けるコードはこうなる。
<p>サーブレットを呼び出す<a href="/Servlet/ServletLink">リンク</a></p>
リンクによるGETリクエストのサンプルプログラム
このサンプルプログラムは、サーブレットにリンクされた文字をクリックすると、リンクされたサーブレットが起動される。
サーブレットの配置とプログラムのコードは次のようになっている。
最初にHTMLで書かれたフォームデータ入力画面のコードを示す。
1 2 3 4 5 6 7 8 9 10 11 12 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <title>リンクによるGETリクエストトサンプル</title> </head> <body> <p>下の「リンク」の文字をクリックしてください。</p> <p>サーブレットを呼び出す<a href="/Servlet/ServletLink">リンク</a></p> </body> </html> |
次に、HTML画面からリクエストを受け取るサーブレットのコードを示す。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/ServletLink")//[1] public class ServletLink extends HttpServlet {//[2] protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//[3] response.setContentType("text/html; charset=UTF-8");//[4] PrintWriter out = response.getWriter();//[5] out.println("<html><head></head><body>");//[6] out.println("<p>リンクによってサーブレットが呼び出されました。</p>");//[7] out.println("</body></html>");//[8] } } |
実行結果
ブラウザにURL:http://localhost:8080/Servlet/link.htmlを入力し、Enterを押す。
表示されるブラウザ画面:
アンダーラインの引かれた「リンク」の文字をクリックする。
表示されるブラウザ画面:
サンプルプログラムの説明
それでは簡単にプログラムの解説をしてゆこう。
- [1] アノテーションの宣言をする。
- [2] HttpServletを継承して、ServletLinkクラスを定義する。
- [3] doGet()メソッドをオーバーライドして定義する。
- [4] Content Typeを設定する。
- [5] HTMLを出力するためのPrintWriterオブジェクトを取得する。
- [6]-[8] PrintWriterオブジェクトに「リンクによってサーブレットが呼び出されました。」と表示するHTMLコードを出力する。
まとめ
リンクからサーブレットを呼び出すことが出来るということは、文字や図をそのまま記述した「静的なページ」に加え、プログラムによる処理で内容が変わる「動的なページ」を作成出来るということである。サンプルプログラムを改造して表示内容を変えるなどしてみよう。