pemprosesan borang JSP


Apabila kami menyemak imbas web, kami selalunya perlu menyerahkan maklumat kepada pelayan dan membiarkan program latar belakang memprosesnya. Pelayar menggunakan kaedah GET dan POST untuk menyerahkan data ke pelayan.


Kaedah GET

Kaedah GET menambah maklumat pengekodan yang diminta selepas URL dan URL serta maklumat pengekodan dipisahkan dengan "?". Seperti yang ditunjukkan di bawah:

http://www.php.cn/hello?key1=value1&key2=value2

Kaedah GET ialah kaedah lalai untuk penyemak imbas untuk menghantar parameter Adalah disyorkan untuk tidak menggunakan kaedah GET untuk beberapa maklumat sensitif, seperti kata laluan.

Apabila menggunakan get, saiz data yang dihantar adalah terhad (perhatikan bahawa bukan bilangan parameter yang dihadkan), maksimum ialah 1024 bait.


Kaedah POST

Kami boleh menyampaikan beberapa maklumat sensitif, seperti kata laluan, dsb. melalui kaedah POST data penyerahan secara tersirat.

POST yang diserahkan data tidak kelihatan, GET dihantar dalam URL (anda boleh melihat bar alamat penyemak imbas anda).

JSP menggunakan getParameter() untuk mendapatkan parameter yang diluluskan, dan kaedah getInputStream() digunakan untuk mengendalikan permintaan strim data binari pelanggan.


JSP membaca data borang

  • getParameter(): Gunakan kaedah request.getParameter() untuk mendapatkan nilai borang parameter.

  • getParameterValues(): Dapatkan data seperti kelas kotak pilihan (nama yang sama, tetapi berbilang nilai). Terima pembolehubah tatasusunan, seperti jenis kotak semak

  • getParameterNames():Kaedah ini boleh mendapatkan nama semua pembolehubah dan kaedah ini mengembalikan Emumerasi.

  • getInputStream():Panggil kaedah ini untuk membaca aliran data binari daripada klien.


Contoh menggunakan kaedah GET URL

Berikut ialah URL ringkas dan menggunakan kaedah GET untuk menghantar parameter dalam URL:

http://localhost:8080/testjsp/main.jsp?name=php中文网&url=http://ww.php.cn

testjsp ialah alamat projek.

Berikut ialah program JSP bagi fail utama.jsp untuk memproses data borang yang diserahkan oleh pelanggan Kami menggunakan kaedah getParameter() untuk mendapatkan data yang diserahkan:

<%@ 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>

Seterusnya kami gunakan. pelayar Lawati http://localhost:8080/testjsp/main.jsp?name=php Laman web Cina&url=http://ww.php.cnHasil output adalah seperti berikut :


Menggunakan kaedah GET contoh borang

Berikut ialah borang HTML ringkas yang menyerahkan data pelanggan melalui kaedah GET Ke fail 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>

Simpan kod HTML di atas ke fail test.htm. Letakkan fail ini dalam direktori WebContent projek jsp semasa (direktori yang sama seperti main.jsp).

Serahkan data borang ke fail utama.jsp dengan melawati http://localhost:8080/testjsp/test.html Gif demo adalah seperti berikut :

Isi maklumat dalam borang "Nama Tapak" dan "Laman Web" dan klik butang "Serah", ia akan mengeluarkan keputusan.


Contoh penggunaan kaedah POST borang

Seterusnya, mari kita gunakan kaedah POST untuk menghantar data borang dan mengubah suai kod fail main.jsp dan Hello.htm seperti berikut:

kod fail 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>

Dalam kod yang kami gunakan String baharu((request.getParameter("nama")).getBytes("ISO-8859-1") ,"UTF-8 ") untuk menukar pengekodan untuk mengelakkan berlakunya aksara Cina yang kacau.

Berikut ialah kod test.htm yang diubah suai:

<!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>

Dengan mengakses http://localhost:8080/testjsp/test.html Hantar data borang ke fail main.jsp Gif demo adalah seperti berikut:


Pindahkan data Kotak Semak ke program JSP

Kotak semak Kotak semak Satu atau malah berbilang data boleh dihantar.

Berikut ialah kod HTML ringkas dan simpan kod tersebut dalam fail 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>

Kod di atas akan kelihatan seperti ini apabila diakses oleh penyemak imbas:

Berikut ialah kod fail main.jsp, digunakan untuk memproses data kotak semak:

<%@ 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>

Serahkan borang dengan mengakses http://localhost:8080/testjsp/test.html Data ke fail main.jsp, demo Gif adalah seperti berikut:


Baca semua parameter borang

Di bawah kami akan gunakan HttpServletRequest's getParameterNames() digunakan untuk membaca semua parameter borang Kaedah ini boleh mendapatkan nama semua pembolehubah.

Setelah kami mempunyai Penghitungan, kami boleh memanggil kaedah hasMoreElements() untuk menentukan sama ada terdapat sebarang elemen lagi, dan kaedah nextElement() untuk mendapatkan nama setiap parameter.

<%@ 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>

Berikut ialah kandungan fail 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>

Kini kami mengakses fail test.htm melalui penyemak imbas untuk menyerahkan data, dan hasil output adalah seperti berikut:

Dengan mengakseshttp://localhost:8080/testjsp/test.html Serahkan data borang ke fail utama.jsp Gif demo adalah seperti berikut :

Anda boleh cuba menggunakan kod JSP di atas untuk membaca objek lain, seperti kotak teks, butang radio atau kotak lungsur dan bentuk data lain.