Hatena::ブログ(Diary)

KnowledgeFort

2016-03-16

【Java/Web再入門】その2.サーブレットを作ってみよう

さて、その2。

サーブレットコーディング

以下の通り。

package knowledgefort.labo.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet002 extends HttpServlet {

	@Override
	public void doGet(HttpServletRequest aRequest, HttpServletResponse aResponse) {
		try {
			aResponse.setCharacterEncoding("UTF-8");
			aResponse.setContentType("text/html");
			PrintWriter _writer = aResponse.getWriter();
			_writer.println("<html>");
			_writer.println("<head>");
			_writer.println("<meta http-equiv = \"Content-Type\" content = \"text/html; charset=UTF-8\">");
			_writer.println("<title>あいさつプログラム</title>");
			_writer.println("</head>");
			_writer.println("<body>");
			_writer.println("Welcome to ServletLabo.<br/>");
			_writer.println("【Java/Web再入門】その2");
			_writer.println("</body>");
			_writer.println("</html>");

		} catch (IOException e) {
			e.printStackTrace();
		}
		return;
	}
}
    1. import 宣言で javax.servlet.http 配下のクラスを読み込んでいるが、その1でパスを通したサーブレットAPIのクラスである。
    2. クエストとレスポンスの間に介在し、パラメータを受け取ってそれに応じたレスポンスを返却するのがサーブレットの役割。
    3. HTML上で文字エンコーディングを"UTF-8"に設定しているので、HTML自体の出力もUTF-8に合せてやる必要がある(HttpServletResponse #setCharacterEncoding()の箇所)。これがないと文字化けしてしまう。

web-xmlの設定

サーブレットがあることを、サーブレットコンテナ(今回はTomcat)に教えてあげる必要がある。

以下の定義を、その1で作成した web-xml に追記する。

    <!-- サーブレットの登録 -->
    <servlet>
        <servlet-name>Servlet002</servlet-name>
        <description>【Java/Web再入門】その2.サーブレットを作ってみよう</description>
        <servlet-class>knowledgefort.labo.servlet.Servlet002</servlet-class>
    </servlet>
    
    <!-- サーブレットと URI のマッピング -->
    <servlet-mapping>
        <servlet-name>Servlet002</servlet-name>
        <url-pattern>/Servlet002</url-pattern>
    </servlet-mapping>

web.xml の全容は↓のようになっているはず。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
	
    <!-- Web アプリケーションの説明 -->
    <description>KnowledgeFort ServletLabo</description>
	
    <!-- サーブレットの登録 -->
    <servlet>
        <servlet-name>Servlet002</servlet-name>
        <description>【Java/Web再入門】その2.サーブレットを作ってみよう</description>
        <servlet-class>knowledgefort.labo.servlet.Servlet002</servlet-class>
    </servlet>
    
    <!-- サーブレットと URI のマッピング -->
    <servlet-mapping>
        <servlet-name>Servlet002</servlet-name>
        <url-pattern>/Servlet002</url-pattern>
    </servlet-mapping>
    
</web-app>

疎通確認

Tomcat を起動し、↓の URL にアクセス。

http://localhost:8080//ServletLabo/Servlet002

↓のように表示されればおk。

Welcome to ServletLabo.
【Java/Web再入門】その2

コードを見ればわかるとおり、HTMLを出力オブジェクトに流し込んでクライアントに返却しているのだ。

ビューもロジックもあったものではないが、Webアプリケーション黎明期Javaプログラマーは一生懸命↑のようなコードを書いていたのだ。

さすがに効率が悪すぎる、ということで誕生したのがJSP

次回はJSPの開発方法について。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/knowledgefort/20160316/1458099477
リンク元