0
0

JavaServlet

Last updated at Posted at 2024-08-27

勉強中のため自分用のアプリケーションです。
Eclipseを使用してます:desktop:

Java Servlet

Javaのプログラムの一種で、主にWebアプリケーションでサーバーサイド処理を行う為の技術。

主な役割

・リクエスト処理
クライアントから送信されたデータを受け取る 

・ビジネスロック実行
サーバーサイドの処理(データベース操作)を行う。

・レスポンス作成
処理結果を基にクライアントにデータを返すHTML, JSON, XMLなど)。

メリット

・プラットフォームに依存しない
javaで実装されているため、javaが動作するプラットフォームであればどこでも動かすことができる。Windows、Linux、macOSなど様々な環境で動作できる

・ライフリサイクル管理が容易
ライフリサイクル(生成→初期化→リクエスト処理→破棄)は、サーバが自動的に管理。リソース管理やエラーハンドリングがシンプルになる。

・セキュリティ
Javaのセキュリティ機能を活用することで、安全なWebアプリケーションを構築できる

スケーラビリティ
Servletはマルチスレッド対応で、多くのリクエストを効率的に処理する設計。複数のクライアントリクエストを並行して処理できる。

コード作成

こんにちは と表示されるように作成
Eclipesを使用しているので、web.xmlは自動作成を利用してます。

HelloServlet.java
//必要なインポート文を記述

import java.io.IOException;// IO操作に関する例外処理をサポートするクラスをインポート
import java.io.PrintWriter;//出力用にPrintWriterインポート

import jakarta.servlet.ServletException;// サーブレットで発生する例外をサポートするクラスをインポート
import jakarta.servlet.annotation.WebServlet;// サーブレットをURLにマッピングするためのアノテーションをインポート
import jakarta.servlet.http.HttpServlet;// サーブレットの基本クラスをインポート
import jakarta.servlet.http.HttpServletRequest;// クライアントからのHTTPリクエスト情報を扱うクラスをインポート
import jakarta.servlet.http.HttpServletResponse;// サーバーからのHTTPレスポンス情報を扱うクラスをインポート

//アノテーションを使ってURLパターンを指定
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    //レスポンのコンテンツタイプをHTMLに設定し、文字エンコーディングをUTF-8に指定
		response.setContentType("text/html; charset=UTF-8");
    	//レスポンスに書き込むためのPrintWriterオブジェクトを取得
		PrintWriter pw = response.getWriter();
		//こんにちはト表示させるためのHTMLの記述
        pw.println("<html><head><title>HelloServlet></title></head>");
		pw.println("<body>");
		pw.println("<h1>こんにちは</h1>");
		pw.println("</body></html>");
		pw.close();
	}
}

サーブレットにおけるリクエストとレスポンス

リクエストオブジェクト (HttpServletRequest):
・クライアントから送信されたリクエスト情報(メソッド、パラメーター、ヘッダー、ボディなど)を保持
・サーブレットはこのオブジェクトを使って、クライアントの要求を取得

レスポンスオブジェクト (HttpServletResponse):
・サーバがクライアントに返すレスポンス情報を保持
・サーブレットはこのオブジェクトを使って、レスポンスのステータスコードを設定したり、出力データ(HTML,JSON) をクライアントに送信

フォームのデータ送信と処理

profile.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>自己紹介フォーム</title>
</head>
<body>
  <h2>自己紹介を入力してください</h2>
  <form method="post" action="/Sample/InputServlet">
	 名前: <input type="text" name="name"><br><br>
	 年齢:<input type="text" name="age"><br><br>
	 出身:<input type="text" name="from"><br><br>
	 <input type="submit" value="送信">
  </form>
</body>
</html>
InputServlet.java
import java.io.IOException;
import java.io.PrintWriter;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/InputServlet")
public class InputServlet extends HttpServlet {
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		
		// フォームから送信されたデータを取得
		String name = request.getParameter("name");
		String age = request.getParameter("age");
		String from = request.getParameter("from");
		
		PrintWriter pw = response.getWriter();
		
		// フォームデータが入力されているかを確認し、レスポンスを生成
		if(name != null && !name.isEmpty()) {
			pw.println("<html><head><title>自己紹介</title></head>");
			pw.println("<h1>自己紹介</h1>");
			pw.println("私の名前は" + name +"で、年齢は" + age + "歳です。出身地は " + from + "です。");
            pw.println("</body></html>");
		} else {
			pw.println("<html><head><title>エラー</title></head><body>");
            pw.println("<h1>名前を入力してください</h1>");
            pw.println("</body></html>");
		}
		pw.close();
	}
}

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