Help us understand the problem. What is going on with this article?

【Java】初心者のServlet理解-①

目次

  • はじめに
  • Servlet(サーブレット)って何?
  • クラス宣言
  • 主なメソッド
    • doGet(), doPost()
    • getWriter()
    • setContentType()
  • 例外
  • おわりに

はじめに

本記事は
  ・「いまからJavaをやるよ~」
  ・「Javaやってるけどもっかい復習したいよ~」
人向けの雑な内容です。
筆者も鋭意学習中の身なので、内容の正確性は保証しませんが。。。
皆さんの学習の一助(自分の学習のメモ帳)になればと思います。

Servlet(サーブレット)って何?

一言でいうと、「サーバサイドで動くJavaのプログラム」のこと。

・通常のクラスファイル
   →ローカルの環境下でのファイルのやり取り
・Servletクラスファイル
    →HTTPリクエストに応じた処理をサーブレットが行い、レスポンスとして出力する
のイメージ。

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {

    // GET送信が行われたHTTPリクエストに対し、返却するHTTPレスポンスを設定するメソッド
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {

        // HTTPレスポンスとして返却するファイルの形式を「html」に、
        // 文字セットを「UTF-8」に指定
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("<body>HelloServlet</body>");

    }
}

クラス宣言

ServletはHttpServletクラスの継承クラスとして作成

public class HelloServlet extends HttpServlet{
}

主なメソッド

●doGet(), doPost();

public void doGet[doPost](HttpServletRequest request, HttpServletResponse){
}

Get/Postのリクエストに対し、HTTPレスポンスを返すメソッド。
第1引数がHTTPリクエスト,第2引数がHTTPレスポンスに対応している。

●setContentType()
response.setContentType("text/html; charset=UTF-8");

HTTPレスポンスとして出力するファイルの「形式」と「文字コード」を指定するメソッド。
設定した値がhtmlヘッダのContent-Typeへ反映される

●getWriter()
PrintWriter out = response.getWriter();

出力用のストリームを取得するメソッド
PrintWriterクラスをoutオブジェクトとして作成することで、println()などのPrintWriterクラスメソッドを使用できるようにする
※ここでprintln()した内容はhtmlファイルとして書き込まれる。

例外

発生する例外は下記の2つ

  • IOException
  • ServletException

サーブレットクラスは単体では運用せず、他メインクラスからの呼び出しによって操作することが多いため(?)例外は呼び出し元のクラスへthrowsする。

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException {
}

おわりに

つたない文章/わかりづらい構成でつらい...
もっと伝わる文章を書けるようになりたいっすね。
徐々に改善していけるように投稿頑張るぞ~~

では。

yuji323
NWエンジニア(10か月)からJavaプログラマへ転職した人。 やる気で技術力をカバーしようとしている。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away