いつか、技術ブログを

新人SE(研修中)が技術ブログを書きたがっているブログです

JavaサーブレットでHello Worldする最低限のコード

今、本を読みながらサーブレットの勉強をしているのですが、一番最初のサンプルコードからして、とても長いので、何が何だかわからなくなってきました。
なので、「Hello,world」と表示するのに最低限必要なコードを調べて書いてみました。

参考にした本

一番やさしいJSP & サーブレット入門塾 第2版 (DB Magazine SELECTION)

一番やさしいJSP & サーブレット入門塾 第2版 (DB Magazine SELECTION)

イメージ

サーブレットのコードのイメージは↓のような感じです。
f:id:ramenchahan:20180422130717p:plain
ポイントとしては、

  • サーブレットは、必ず「HttpServlet」というクラスを継承して作成します。

  • doGet()メソッドは、サーバーに対してページの取得を要求された時に呼び出されるメソッドです。
    urlを入力してページを表示した時に呼び出される、普通のJavaのクラスでいうmain()メソッドみたいなイメージです。

  • 「リクエスト」とは正確には「HttpServletRequestオブジェクト」のことで、ユーザーがブラウザで指定した情報が格納されている受信用オブジェクトです。

  • 「レスポンス」とは正確には「HttpServletResponseオブジェクト」のことで、サーブレットが処理した内容をブラウザに返すための送信用オブジェクトです。

実際のコード

package com.example;

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(name = "HelloWorld", urlPatterns = {"/HelloWorld"})
public class HelloWorld extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>hello world</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>hello,world!!!</h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }

}

おわり

NetBeansサーブレットのクラスを作ると最初からたくさんのコードが書いてあって混乱してたんですが、最低限必要な部分がわかったので、ユーザーの入力を受け取ったり、データベースを使ったり、というところをこれから勉強していきます!