JSPフォーム処理
Web を閲覧するとき、多くの場合、情報をサーバーに送信し、バックグラウンド プログラムに処理させる必要があります。ブラウザは GET メソッドと POST メソッドを使用してデータをサーバーに送信します。
GETメソッド
GETメソッドは、URLの後に要求されたエンコード情報を追加し、URLとエンコード情報を「?」で区切ります。以下に示すように:
http://www.php.cn/hello?key1=value1&key2=value2
GET メソッドは、ブラウザがパラメータを渡すためのデフォルトのメソッドです。パスワードなどの一部の機密情報には GET メソッドを使用しないことをお勧めします。
get を使用する場合、送信されるデータのサイズは制限されており (パラメーターの数に制限がないことに注意してください)、最大は 1024 バイトです。
POST メソッド
パスワードなどの一部の機密情報は、POST 送信データを暗黙的に通過できます。
POST 送信されたデータは表示されず、GET は URL で渡されます (ブラウザーのアドレス バーで確認できます)。
JSP は getParameter() を使用して渡されたパラメータを取得し、getInputStream() メソッドを使用してクライアントのバイナリ データ ストリーム リクエストを処理します。
JSPはフォームデータを読み取ります
getParameter(): request.getParameter()メソッドを使用してフォームパラメータの値を取得します。
getParameterValues(): チェックボックスクラスなどのデータを取得します(同じ名前ですが複数の値)。 チェックボックス type などの配列変数を受け取ります
getParameterNames():このメソッドはすべての変数の名前を取得でき、このメソッドはエミュレーションを返します。
getInputStream():このメソッドを呼び出して、クライアントからバイナリ データ ストリームを読み取ります。
URL の GET メソッドの使用例
以下は単純な URL で、GET メソッドを使用して URL 内のパラメーターを渡します。
http://localhost:8080/testjsp/main.jsp?name=php中文网&url=http://ww.php.cn
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>php中文网(php.cn)</title> </head> <body> <h1>使用 GET 方法读取数据</h1> <ul> <li><p><b>站点名:</b> <%= request.getParameter("name")%> </p></li> <li><p><b>网址:</b> <%= request.getParameter("url")%> </p></li> </ul> </body> </html>
次にブラウザ経由でアクセスします http:/ /localhost :8080/testjsp/main.jsp?name=php中文网&url=http://ww.php.cn出力結果は以下の通りです:
フォームのGETメソッドの使用例
以下は例です。GET メソッドを通じてクライアント データを送信する単純な HTML フォーム main.jsp ファイルへ:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <form action="main.jsp" method="GET"> 站点名: <input type="text" name="name"> <br /> 网址: <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 ファイルに送信します。デモの Gif 画像は次のとおりです:
[サイト名]と「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>php中文网(php.cn)</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>网址:</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>php中文网(php.cn)</title> </head> <body> <form action="main.jsp" method="POST"> 站点名: <input type="text" name="name"> <br /> 网址: <input type="text" name="url" /> <input type="submit" value="提交" /> </form> </body> </html>
http://localhost:8080/testjsp/test.html にアクセスしてフォームデータを main.jsp ファイルに送信すると、デモ Gif が表示されます。次のように:
チェックボックスのデータを JSP プログラムに渡す
チェックボックスは 1 つまたは複数のデータを渡すことができます。
以下は単純な HTML コードであり、そのコードを test.htm ファイルに保存します:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <form action="main.jsp" method="POST" target="_blank"> <input type="checkbox" name="google" checked="checked" /> Google <input type="checkbox" name="php" /> php中文网 <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>php中文网(php.cn)</title> </head> <body> <h1>从复选框中读取数据</h1> <ul> <li><p><b>Google 是否选中:</b> <%= request.getParameter("google")%> </p></li> <li><p><b>php中文网是否选中:</b> <%= request.getParameter("php")%> </p></li> <li><p><b>淘宝是否选中:</b> <%= request.getParameter("taobao")%> </p></li> </ul> </body> </html>
http://localhost:8080/testjsp/test.html にアクセスして、フォーム データを main.jsp ファイルに送信します。デモの Gif は次のとおりです:
。すべてのフォームパラメータを読み取る
以下では、HttpServletRequest の getParameterNames() を使用して、すべてのフォームパラメータの名前を取得できます。このメソッドは列挙を返します。
列挙体を取得したら、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>php中文网(php.cn)</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>php中文网(php.cn)</title> </head> <body> <form action="main.jsp" method="POST" target="_blank"> <input type="checkbox" name="google" checked="checked" /> Google <input type="checkbox" name="php" /> php中文网 <input type="checkbox" name="taobao" checked="checked" /> 淘宝 <input type="submit" value="选择网站" /> </form> </body> </html>
次に、ブラウザから test.htm ファイルにアクセスしてデータを送信します。出力結果は次のとおりです:
http にアクセスすることで: //localhost:8080/testjsp/test.html フォーム データを main.jsp ファイルに送信します。デモの Gif は次のとおりです:
上記の JSP コードを使用して他のオブジェクトを読み取ることができます。テキスト ボックス、ラジオ ボタン、ドロップダウン ボックスなどのデータ形式。