[Servlet]Echo機能の実装+リクエストパラメータについて

2022/06/07に公開


◆はじめに

Echo機能の実装です。
本記事で紹介するプログラムを作成した後に、
以下のURLへアクセスします。

http://localhost:8080/InputFunction/echo.jsp

テキストボックスに文字列を入力し、
「送信」ボタンを押します。
すると、送信した文字列がServletで画面上に返却されます。


リクエストパラメータに関しては、
本記事の最後の方に、書いています。
それでは、どうぞ。


◆実行環境について

※本記事では、eclipseは以下のバージョンを使用しています。日本語化はしていません。


◆事前準備

①ローカルサーバー(Tomcat)

プロジェクトを動かすためのローカルサーバーを用意します。
本記事では、Tomcat8.5を使用しています。(任意)
ローカルサーバーの立て方は以下の記事を参考にしてください。

https://zenn.dev/nakohama/articles/c8c29f04d96881

②動的Webプロジェクトの作成

動的Webプロジェクトを用意します。
プロジェクト名は、「InputFunction」で作成。(任意)..EchoFunctionが良かったかも
以下のようなディレクトリ構造になります。

また、プロジェクトファセットと
サーバーランタイムは以下のように設定されています。


また、今回は、タグライブラリ(JSTL)を使用します。
libraryの追加が必要ですので、
以下の記事を参考にして下さい。

https://zenn.dev/nakohama/scraps/78621663245e7e

また、Eclipse2022-03以降の場合、
動的Webプロジェクトをそのまま作成すると、フォルダ構造が違います。
揃えたい方は、以下の記事を参考にするといいでしょう。

https://zenn.dev/nakohama/articles/e61d35878129a8

③今回使用するファイルの作成

●「src」内に、「パッケージ(パッケージ名:input)(任意)」を作成
●「パッケージ(input)」内に、「EchoServlet.java」を作成
●「WebContent」のフォルダ内に、「echo.jsp」を作成

以上のような、フォルダ構成になります。
作成したファイルにソースコードを追加していきます。
それでは、手順をご覧ください。


◆手順

①ソースコード

・「echo.jsp」に記述するコード

ブラウザに表示される入力ボックスと送信ボタンなど記述します。
JSTLを使用しているため、@taglibの箇所などエラーが出ると思いますが、
②でライブラリの追加などして解消します。
echo.jsp
<%@page language="java" contentType = "text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page isELIgnored= "false" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<title>入力機能</title>

<head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

<body>
 <h3>入力機能</h3>
 <form action="echo">
  <br />入力してください : <input type="text" name="m" /><br />
  <input type="submit" /> <br />
 </form>
<br />

<c:if test="${not empty message}">
 入力された文字は、「${ message }」です。
</c:if>

</body>

・「EchoServlet.java」に記述するコード

EchoServletの内容を記述します。
@WebServlet("/echo")は、アクセスする際のURIです。
EchoServlet.java
package input;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

    @WebServlet("/echo")
public class EchoServlet extends HttpServlet{
	private static final long serialVersionUID = 1L;
	
	@Override
	protected void doGet(HttpServletRequest request,HttpServletResponse response)
	throws ServletException,IOException {
		
		String message = request.getParameter("m");
		System.out.println(message);
		
		request.setAttribute("message",message);
		
		RequestDispatcher dispatcher = request.getRequestDispatcher("echo.jsp");
		dispatcher.forward(request, response);
		
	}	
}


②タグライブラリ

以下の記事を参考にして入れてください

https://zenn.dev/nakohama/articles/22bbb20398a5ad


③Webブラウザからアクセスし、Echo

以下のURLから、アクセスします。

http://localhost:8080/InputFunction/echo.jsp

以下のような画面が出たら、
Echoさせる文字を入力します。
そして、「送信」ボタンを押しましょう。

送信した文字列が表示されたら成功です。
また、Eclipseのコンソールにも、
以下のように、出力されているでしょう。

URLにも/echoの後に、「?m="入力文字列"」が表れていると思います。
これを、リクエストパラメータといいます。

このリクエストパラメータは、
以下のコードが関係しています。
echo.jsp
<input type="text" name="m" />
EchoServlet.java
String message = request.getParameter("m");
request.setAttribute("message",message);
RequestDispatcherについては、
調べてみてください。

https://eng-entrance.com/java-servlet-dispatch


◆さいごに

いかがだったでしょうか?
ServletでEcho機能の実装についてでした。
リクエストパラメータについても書きました。


URLに付与されるのはdoGetが関係しています。
でも、見えないほうがスッキリしてますし良くないですか?
非表示でする方法はあります。


続きで、記事を書いたので、
よければどうぞ。
doGetではなくて、doPostを使っています。

https://zenn.dev/nakohama/articles/9f08b12905196e

それでは!


◆参考

本記事は、以下の書籍を大いに参考にしています。
より詳しく知りたい方は、どうぞ。

https://www.amazon.co.jp/dp/4797362596

Discussion