あまり美しい解ではありませんが。
まず、form のボタンの type を submit に変えました。(そもそも POST しようとしていなかった。)
jsp
1 <input type="submit" name="add" value="追加">
2 <input type="submit" name="delate" value="削除">
3 <input type="submit" name="change" value="変更">
そして、POST で呼ばれたときの処理を追加しました。
jsp
1 <div>
2 <%
3 if (request.getMethod().equalsIgnoreCase("POST")) {
4 request.setCharacterEncoding("UTF-8");
5 Enumeration<String> names = (Enumeration<String>) request.getParameterNames();
6 while (names.hasMoreElements()) {
7 String key = (String) names.nextElement();
8 out.println("[" + request.getParameter(key) + "]が押されました。");
9 }
10 }
11 %>
12 </div>
この際、Enumeration
を認識できなかったのでページディレクティブに import="java.util.Enumeration"
を追加しました。
結果、以下のようなコードにしてみました。
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8"
2 import="java.util.Enumeration" pageEncoding="UTF-8"%>
3<!DOCTYPE html>
4<html>
5<head>
6<meta charset="UTF-8">
7<title>Insert title here</title>
8</head>
9<body>
10 <p>★ボタンを押してください</p>
11 <form action="cmdbtn.jsp" method="post">
12 <input type="submit" name="add" value="追加">
13 <input type="submit" name="delate" value="削除">
14 <input type="submit" name="change" value="変更">
15 </form>
16 <div>
17 <%
18 // POST で呼ばれたときは、押されたボタンを説明する
19 if (request.getMethod().equalsIgnoreCase("POST")) {
20 request.setCharacterEncoding("UTF-8");
21 Enumeration<String> names = (Enumeration<String>) request.getParameterNames();
22 while (names.hasMoreElements()) {
23 String key = (String) names.nextElement();
24 out.println("[" + request.getParameter(key) + "]が押されました。");
25 }
26 }
27 %>
28 </div>
29</body>
30</html>
【解説】
java
1if (request.getMethod() == "POST") {
でリクエストの HTTP メソッドが「POST」かどうかを確認しています。
java
1request.setCharacterEncoding("UTF-8");
でリクエストの CharacterEncoding を指定することにより、文字化けを防いでいます。
java
1Enumeration<String> names = (Enumeration<String>) request.getParameterNames();
でパラメーター名の Enumeration を取得しています。
java
1while (names.hasMoreElements()) {
でまだ、パラメーターが残っていれば、繰り返すブロックを構成しています。