今回の記事ではサーブレットでhtmlから送られてくるhiddenの値を受け取る方法を解説していきます。
hiddenというのはinputタグのtype属性に指定できる値のことで、hiddenを設定されているinputタグは画面に表示されません。
画面に表示したくないけど、画面とサーバーで値をやり取りしたいというのはアプリ開発でよくあることです。
今回はhiddenを使って画面に表示せずにサーブレットと値をやり取りする方法について解説してきます。
hiddenの受け取り
hiddenの書き方
hiddenはinputタグのtype属性に設定することができます。
hiddenはユーザーが特別知る必要はないけれど、サーバー側に値を送りたい時などに利用されます。
具体的には次のように記述します。
<input type="hidden">
しかしこれだけではサーバー側に値を送ることはできません。
name属性とvalue属性を設定することで、サーバー側にデータが送られます。
<input type="hidden" name="hidden-name" value="hidden-value">
上のように書くことで、「hidden-name=hiddenvalue」というようなイメージでサーバー側に値を送ることができます。
サーバー側で受け取るためのメソッド
受け取るためにはサーブレットのdoGetメソッドやdoPostメソッドの引数として使われるHttpServletRequestのgetParameterメソッドを利用することで受け取ることができます。
getParameterメソッドの引数には受け取りたいリクエストパラメータのname属性の値を書きます。
request.getParameter("受け取るリクエストパラメータのname属性")
getParameterメソッドについては次の記事でも解説しています。
hiddenを受け取るサンプル
では実際のサンプルコードで確認します。
hidden-test.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>hiddenの値を送信する</title>
</head>
<body>
<form action="hidden-servlet" method="post">
<input type="hidden" name="hidden-name" value="hidden-value">
<input type="submit" value="hiddenで送信する">
</form>
</body>
</html>
HiddenServlet.java
package uhablog;
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;
/**
* Servlet implementation class HiddenServlet
*/
@WebServlet("/hidden-servlet")
public class HiddenServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
// hiddenで受け取った値を次の画面に表示する
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// hiddenで送られてきたリクエストパラメータを受け取る
String hiddenValue = request.getParameter("hidden-name");
// 画面を描画する
response.setContentType("text/html; charset=Shift_JIS");
PrintWriter pw = response.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>hiddenの受け取り</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<p>hiddenで受け取った値は" + hiddenValue + "です。</p>");
pw.println("</body>");
pw.println("</html>");
}
}
動作確認
サーバーを起動して動作確認を行います。
hiddenは画面に表示されません。
ボタンを押します。
しっかりとサーブレットに値が送られ、指定した値を取得することができています。
以上、サーブレットでhiddenの値を取得する方法でした。
挫折せずにプログラミングを学ぶためには?
挫折せずにプログラミングを学ぶために必要なこと
僕はプログラミングで挫折した経験があります。
それは周りに聞ける人がいなく、一人でエラーと戦っていたからです。
Freeksは月額10,780円という破格の値段で、現役エンジニアに質問する環境を手に入れることができるプログラミングスクールです。
次のような悩みを少しでも抱えていたら、まずは無料カウンセリングを受けてみてください。
申込みは1分でできます。学習する環境にお金を使うというのは良い自己投資になります。
>>Freeksの無料カウンセリングはこちら
【関連記事】Freeks評判、口コミ