เมื่อเราท่องเว็บ เรามักจะต้องส่งข้อมูลไปยังเซิร์ฟเวอร์และปล่อยให้โปรแกรมพื้นหลังประมวลผลข้อมูลนั้น เบราว์เซอร์ใช้วิธีการ GET และ POST เพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์
เมธอด GET จะเพิ่มข้อมูลการเข้ารหัสที่ร้องขอหลัง URL และ URL และข้อมูลการเข้ารหัสจะถูกคั่นด้วยสัญลักษณ์ "?" ดังที่แสดงด้านล่าง:
//www.w3cschool.cn/hello?key1=value1&key2=value2
วิธี GET เป็นวิธีเริ่มต้นสำหรับเบราว์เซอร์ในการส่งพารามิเตอร์ ไม่แนะนำให้ใช้วิธี GET กับข้อมูลที่ละเอียดอ่อนบางอย่าง เช่น รหัสผ่าน
เมื่อใช้ get ขนาดของข้อมูลที่ส่งจะถูกจำกัด (โปรดทราบว่าไม่จำกัดจำนวนพารามิเตอร์) และสูงสุดคือ 1,024 ไบต์
เราสามารถส่งข้อมูลละเอียดอ่อนบางอย่าง เช่น รหัสผ่าน ฯลฯ ผ่านวิธี POST และข้อมูลการส่งโพสต์ถือเป็นข้อมูลโดยนัย
ข้อมูลที่ส่งโดย POST จะไม่สามารถมองเห็นได้ และ GET จะถูกส่งผ่านใน URL (คุณสามารถดูที่แถบที่อยู่ของเบราว์เซอร์ของคุณ)
JSP ใช้ getParameter() เพื่อรับพารามิเตอร์ที่ส่งผ่าน และใช้เมธอด getInputStream() เพื่อจัดการคำขอสตรีมข้อมูลไบนารีของไคลเอ็นต์
getParameter(): ใช้เมธอด request.getParameter() เพื่อรับค่าของพารามิเตอร์แบบฟอร์ม
getParameterValues(): รับข้อมูล เช่น คลาสช่องทำเครื่องหมาย (ชื่อเดียวกัน แต่มีหลายค่า) รับตัวแปรอาร์เรย์ เช่น ประเภทช่องทำเครื่องหมาย
getParameterNames(): วิธีการนี้สามารถรับชื่อของตัวแปรทั้งหมดได้
getInputStream(): เรียกใช้วิธีนี้เพื่ออ่านสตรีมข้อมูลไบนารีจากไคลเอนต์
ต่อไปนี้เป็น URL แบบธรรมดาและใช้วิธี GET เพื่อส่งผ่านพารามิเตอร์ใน URL:
http://localhost:8080/main.jsp?first_name=ZARA&last_name=ALI
ต่อไปนี้เป็นโปรแกรม JSP ของไฟล์ main.jsp สำหรับการประมวลผลข้อมูลแบบฟอร์มที่ส่งโดยไคลเอนต์ เราใช้เมธอด getParameter() เพื่อรับข้อมูลที่ส่ง:
<html><head><title>การใช้วิธี GET เพื่ออ่านข้อมูลแบบฟอร์ม</title></head><body><center><h1>การใช้วิธี GET เพื่ออ่านข้อมูลแบบฟอร์ม</h1><ul><li> <p><b>ชื่อ:</b> <%= request.getParameter("first_name")%></p></li><li><p><b>นามสกุล:</b> <%= request.getParameter("last_name")%></p></li></ul></body></html>
ต่อไป เราเข้าถึง http://localhost:8080/main.jsp?first_name=ZARA&last_name=ALI ผ่านเบราว์เซอร์ ผลลัพธ์ที่ได้จะเป็นดังนี้:
การใช้วิธี GET เพื่ออ่านข้อมูลแบบฟอร์มชื่อ: ZARAนามสกุล: ALI
ต่อไปนี้เป็นรูปแบบ HTML ง่ายๆ ที่ส่งข้อมูลลูกค้าไปยังไฟล์ main.jsp ผ่านวิธีการ GET:
<html><body><form action="main.jsp" method="GET">ชื่อ: <input type="text" name="first_name"><br />นามสกุล: <input type="text " name="last_name" /><input type="submit" value="Submit" /></form></body></html>
บันทึกโค้ด HTML ข้างต้นลงในไฟล์ Hello.htm วางไฟล์นี้ไว้ในไดเร็กทอรี /webapps/ROOT โดยการเข้าถึง http://localhost:8080/Hello.htm อินเทอร์เฟซเอาต์พุตจะเป็นดังนี้:
กรอกข้อมูลในแบบฟอร์ม "ชื่อ" และ "นามสกุล" แล้วคลิกปุ่ม "ส่ง" ระบบจะแสดงผลลัพธ์
ต่อไป ให้เราใช้วิธี POST เพื่อถ่ายโอนข้อมูลในแบบฟอร์มและแก้ไขโค้ดไฟล์ main.jsp และ Hello.htm ดังนี้
รหัสไฟล์ main.jsp:
<html><head><title>การใช้วิธี GET และ POST เพื่ออ่านข้อมูลแบบฟอร์ม</title></head><body><center><h1>การใช้วิธี GET เพื่ออ่านข้อมูลแบบฟอร์ม</h1><ul>< li><p><b>ชื่อ:</b> <%= request.getParameter("first_name")%></p></li><li><p><b>นามสกุล:</ ข> <%= request.getParameter("last_name")%></p></li></ul></body></html>
ต่อไปนี้เป็นรหัสที่แก้ไขของ Hello.htm:
<html><body><form action="main.jsp" method="POST">ชื่อ: <input type="text" name="first_name"><br />นามสกุล: <input type="text " name="last_name" /><input type="submit" value="Submit" /></form></body></html>
เข้าถึง http://localhost:8080/Hello.htm ผ่านเบราว์เซอร์ ผลลัพธ์จะเป็นดังนี้:
กรอกข้อมูลในแบบฟอร์ม "ชื่อ" และ "นามสกุล" แล้วคลิกปุ่ม "ส่ง" ระบบจะแสดงผลลัพธ์
ช่องทำเครื่องหมายช่องทำเครื่องหมายสามารถส่งผ่านข้อมูลหนึ่งหรือหลายข้อมูลได้
ต่อไปนี้เป็นโค้ด HTML แบบธรรมดาและบันทึกโค้ดในไฟล์ CheckBox.htm:
<html><body><form action="main.jsp" method="POST" target="_blank"><input type="checkbox" name="maths"checked="checked" /> คณิตศาสตร์<input type= "checkbox" name="physics" /> ฟิสิกส์<input type="checkbox" name="chemistry"checked="checked" /> เคมี<input type="submit" value="Select Subject" /></form> </body></html>
ต่อไปนี้เป็นโค้ดไฟล์ main.jsp ที่ใช้ในการประมวลผลข้อมูลกล่องกาเครื่องหมาย:
<html><head><title>การอ่านข้อมูลช่องทำเครื่องหมาย</title></head><body><center><h1>การอ่านข้อมูลช่องทำเครื่องหมาย</h1><ul><li><p><b>ธงคณิตศาสตร์ :</b> <%= request.getParameter("maths")%></p></li><li><p><b>ค่าสถานะฟิสิกส์:</b> <%= request.getParameter("physics")%></p></li><li><p><b>ธงเคมี:</b> <%= request.getParameter("เคมี")%></p ></li></ul></body></html>
ผลลัพธ์ที่ได้ของตัวอย่างข้างต้นคือ:
ด้านล่างนี้เราจะใช้ getParameterNames() ของ HttpServletRequest เพื่ออ่านพารามิเตอร์แบบฟอร์มที่มีอยู่ทั้งหมด วิธีนี้จะรับชื่อของตัวแปรทั้งหมด
เมื่อเรามี Enumeration แล้ว เราก็สามารถเรียกใช้เมธอด hasMoreElements() เพื่อกำหนดเวลาที่จะหยุดใช้ และเรียกใช้เมธอด nextElement() เพื่อรับชื่อของแต่ละพารามิเตอร์
<%@ page import="java.io.*,java.util.*" %><html><head><title>ตัวอย่างคำขอส่วนหัว HTTP</title></head><body><center><h2 >ตัวอย่างคำขอส่วนหัว HTTP</h2><table align="center"><tr bgcolor="#949494"><th>ชื่อพารามิเตอร์</th><th>ค่าพารามิเตอร์</th></tr ><% ชื่อพารามิเตอร์การแจงนับ = request.getParameterNames(); while(paramNames.hasMoreElements()) { String paramName = (String)paramNames.nextElement(); out.print("<tr><td>" + paramName + "</td>n "); สตริง paramValue = request.getParameter(paramName); out.println("<td> " + paramValue + "</td></tr>n"); }%></table></center></body></html>
ต่อไปนี้เป็นเนื้อหาของไฟล์ Hello.htm:
<html><body><form action="main.jsp" method="POST" target="_blank"><input type="checkbox" name="maths"checked="checked" /> คณิตศาสตร์<input type= "checkbox" name="physics" /> ฟิสิกส์<input type="checkbox" name="chemistry"checked="checked" /> Chem<input type="submit" value="Select Subject" /></form> </body></html>
ตอนนี้เราเข้าถึงไฟล์ Hello.htm ผ่านเบราว์เซอร์และส่งข้อมูลดังนี้:
คุณสามารถลองใช้โค้ด JSP ด้านบนเพื่ออ่านออบเจ็กต์อื่นๆ เช่น กล่องข้อความ ปุ่มตัวเลือก หรือกล่องดรอปดาวน์ และข้อมูลรูปแบบอื่นๆ