0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

プログラムによる制御

Last updated at Posted at 2023-05-15

概要

API3ではシンプルなカウンターを作成する。

動作確認

# ソースコード

java
API3.java

package app28;

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("/api3")
public class API3 extends HttpServlet {

    private int count;  // カウンター

    // GET 処理(GET メソッドで HTTP リクエストが送られてくるたびに実行される)
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // レスポンスの設定(毎回この設定)
        response.setHeader("Cache-Control", "no-cache");    // キャッシュを利用しない
        response.setHeader("Pragma", "no-cache");           // キャッシュを利用しない(下位互換性用)
        response.setDateHeader("Expires", 0);               // キャッシュ有効期限0
        response.setCharacterEncoding("UTF-8");             // レスポンス文字コード UTF-8 設定
        response.setContentType("application/json");        // レスポンスタイプ application/json 設定

        count++;    // カウントを1増やす

        // レスポンスを {"count": <count>} で返却 <count> はカウント変数の中身を表す
        // レスポンスボディ作成処理
        PrintWriter out = response.getWriter();             // レスポンス書き込み用 PrintWriter 取得
        out.println("{\"count\": " + count + "}");          // レスポンス書き込み {"count": <count>}
        out.flush();                                        // フラッシュ処理(強制送信のようなもの)
        out.close();                                        // PrintWriterのクローズ(これ以降書き込めない)
    }

}

説明

実行アドレスのパスの設定

@WebServlet("/api3")
実行アドレス
http://localhost:8080/App28/api3

int 変数 counter を用意し、API3が呼ばれる度にカウンターを1増やし、データを送信するという処理になっている。

Servletのポイントとして、 インスタンス変数(クラス直下の変数) はアクセスの度に 初期化されない という特性がある。

1人目がアクセスした場合結果は 1 が返却され、次に別の人間がアクセスした場合結果は 2 が返却される。

サーバが止まるまで、最後のデータが保存されるため、何度も使いまわしたいデータなどはインスタンス変数としてクラス直下に作るようにする。

インスタンス変数とは、オブジェクト指向プログラミング言語で、個々のインスタンスごとに固有の変数。クラス定義で単にメンバ変数、フィールド、データメンバなどという場合はこれを指す。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?