English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSPフォーム処理

ウェブページを閲覧する際には、サーバーに情報を提出し、バックエンドプログラムが処理する必要があります。ブラウザでは GET と POST メソッドを使用してサーバーにデータを提出します。

GET メソッド

GET メソッドはリクエストのエンコード情報を URL の後に追加し、URL とエンコード情報を "?" で区切ります。以下のようになります:

http://ja.oldtoolbag.com/hello?key1=value1&key2=value2

GET メソッドはブラウザのデフォルトのパラメータ渡し方法で、パスワードなどの機密情報などは GET メソッドを使用することはお勧めしません。

GETを使用するとき、データの転送サイズには制限があります(パラメータの数に制限はありませんが)、最大値は1024バイト。

POST メソッド

パスワードなどの機密情報は、POST メソッドを使用して渡すことができます。POST 提交データは非表示です。

POST 提交データは不可視で、GET は URL 内で渡されます(ブラウザのアドレスバーを見てください)。

JSP は getParameter() を使用して渡されたパラメータを取得し、getInputStream() メソッドを使用してクライアントのバイナリデータストリームのリクエストを処理します。

JSP がフォームデータを読み取ります

  • getParameter(): request.getParameter() メソッドを使用してフォームパラメータの値を取得します。

  • getParameterValues(): checkbox クラス(名前が同じでも値が複数ある)のようなデータを取得します。 接続する配列変数、checkbox タイプを受け取ります。

  • getParameterNames():このメソッドはすべての変数の名前を取得し、Enumeration を返します。

  • getInputStream():このメソッドを呼び出して、クライアントから読み取れるバイナリデータストリームを読み取ります。

URL の GET メソッドの例

以下はシンプルな URL で、GET メソッドを使用して URL 内のパラメータを渡します:

http://localhost:8080/testjsp/main.jsp?name=基础教程网&url=http://ww.oldtoolbag.com

testjsp がプロジェクトのアドレスです。

以下は main.jsp ファイルの JSP プログラムで、クライアントが提出したフォームデータを処理するためのもので、getParameter() メソッドを使用して提出されたデータを取得します:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基本チュートリアルウェブ(oldtoolbag.com)</title>
</head>
<body>
<h1GET メソッドを使用してデータを読み取ります。/h1>
<ul>
<li><p><b>サイト名:</b>
   <%= request.getParameter("name") %>
</p></li>
<li><p><b>URL:</b>
   <%= request.getParameter("url")%>
</p></li>
</ul>
</body>
</html>

次に、ブラウザで http: をアクセスします。//localhost:8080/testjsp/main.jsp?name=JSP教程&url=http://ww.oldtoolbag.comからの出力結果は以下のようになります:

フォームのGETメソッドを使用する例

以下は簡単なHTMLフォームで、GETメソッドを使用してクライアントデータを送信 まで main.jsp ファイル中:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基本チュートリアルウェブ(oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="GET">
サイト名: <input type="text" name="name">
<br />
URL: <input type="text" name="url" />
<input type="submit" value="提出" />
</form>
</body>
</html>

上記のHTMLコードをtest.htmファイルに保存してください。 このファイルを現在のjspプロジェクトのWebContentディレクトリに配置してください(main.jspと同じディレクトリ)。

アクセスを通じて http://localhost:8080/testjsp/test.html フォームデータをmain.jspファイルに提出する、以下の図はその例です:

「サイト名」および「URL」のフォームに情報を入力し、「提出」ボタンをクリックすると、結果が出力されます。

フォームのPOSTメソッドを使用する例

次に、POSTメソッドを使用してフォームデータを伝達する方法を見てみましょう。main.jspとHello.htmファイルのコードを以下のように修正します:

main.jspファイルのコード:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基本チュートリアルウェブ(oldtoolbag.com)</title>
</head>
<body>
<h1>POSTメソッドを使用してデータを読み取る</h1>
<ul>
<li><p><b>サイト名:</b>
<%
// 文字化けの問題を解決する
String name = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8");
>
   <%=name%>
</p></li>
<li><p><b>URL:</b>
   <%= request.getParameter("url")%>
</p></li>
</ul>
</body>
</html>

コードでは以下を使用しています new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8")エンコードを変換し、文字化けを防ぐために使用します。

以下はtest.htmが修正されたコードです:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基本チュートリアルウェブ(oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="POST">
サイト名: <input type="text" name="name">
<br />
URL: <input type="text" name="url" />
<input type="submit" value="提出" />
</form>
</body>
</html>

アクセスを通じて http://localhost:8080/testjsp/test.html 以下のように main.jsp ファイルにフォームデータを送信します:

CheckboxデータをJSPプログラムに伝達する

チェックボックスcheckboxは、1つまたは複数のデータを伝達できます。

以下は簡単なHTMLコードで、コードはtest.htmファイルに保存されます:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基本チュートリアルウェブ(oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="google" checked="checked" /> Google
<input type="checkbox" name="w3codebox  /> 基本チュートリアルウェブ
<input type="checkbox" name="taobao" checked="checked" /> 淘宝
<input type="submit" value="サイトを選択" />
</form>
</body>
</html>

上記のコードは、ブラウザでアクセスすると以下のようになります:

以下为main.jspファイルのコード、チェックボックスデータを処理するためのものです:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基本チュートリアルウェブ(oldtoolbag.com)</title>
</head>
<body>
<h1>チェックボックスからデータを読み取る</h1>
<ul>
<li><p><b>Google 是否选中:</b>
   <%= request.getParameter("google")%>
</p></li>
<li><p><b>基础教程网是否选中:</b>
   <%= request.getParameter("w3codebox")%>
</p></li>
<li><p><b>淘宝是否选中:</b>
   <%= request.getParameter("taobao")%>
</p></li>
</ul>
</body>
</html>

アクセスを通じて http://localhost:8080/testjsp/test.html 以下のように main.jsp ファイルにフォームデータを送信します:

「選択サイト」をクリック後:


すべてのフォームパラメータを読み込む

以下、以下を使用します HttpServletRequestgetParameterNames() すべてのフォームパラメータを読み込むためのメソッドを使用すると、すべての変数の名前を取得することができます。このメソッドは列挙を返します。

一旦我们が一つの Enumeration(列挙)を持っていると、hasMoreElements() メソッドを使用して要素がまだあるかどうかを確認し、nextElement() メソッドを使用して各パラメータの名前を取得することができます。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基本チュートリアルウェブ(oldtoolbag.com)</title>
</head>
<body>
<h1>すべてのフォームパラメータを読み込む</h1>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>パラメータ名</th><th>パラメータ値</th>
</tr>
<%
   Enumeration paramNames = request.getParameterNames();
   while(paramNames.hasMoreElements()) {
      String paramName = (String)paramNames.nextElement();
      out.print("<tr><td>" + paramName + "</td>\n");
      String paramValue = request.getParameter(paramName);
      out.println("<td> " + paramValue + "</td></tr>\n");
   }
>
</table>
</body>
</html>

以下はtest.htmファイルの内容です:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基本チュートリアルウェブ(oldtoolbag.com)</title>
</head>
<body>
<form action="main.jsp" method="POST" target="_blank">
<input type="checkbox" name="google" checked="checked" /> Google
<input type="checkbox" name="w3codebox  /> 基本チュートリアルウェブ
<input type="checkbox" name="taobao" checked="checked" /> 
                                                淘宝
<input type="submit" value="サイトを選択" />
</form>
</body>
</html>

現在、ブラウザで test.htm ファイルにアクセスしてデータを送信し、以下の結果が表示されます:

アクセスを通じて http://localhost:8080/testjsp/test.html 以下のように main.jsp ファイルにフォームデータを送信します:


「サイトを選択」をクリック後:


上記のJSPコードを使用して、テキストボックス、ラジオボタン、ドロップダウンリストなど、他の形式のデータを読み取ることを試してみてください。