วัตถุ HttpServletRequest แสดงถึงคำขอของไคลเอ็นต์ เมื่อไคลเอนต์เข้าถึงเซิร์ฟเวอร์ผ่านโปรโตคอล HTTP ข้อมูลทั้งหมดในส่วนหัวของคำขอ HTTP จะถูกห่อหุ้มในวัตถุนี้ นักพัฒนาสามารถรับข้อมูลของไคลเอ็นต์ผ่านวิธีการของวัตถุนี้
วิธีการร้องขอทั่วไป :
1. วิธีการทั่วไปในการรับข้อมูลสภาพแวดล้อมไคลเอนต์ :
1. เมธอด getRequestURL ส่งคืน URL ที่สมบูรณ์เมื่อไคลเอ็นต์ทำการร้องขอ
2. เมธอด getRequestURI ส่งคืนส่วนชื่อทรัพยากรในบรรทัดคำขอ
3. วิธีการ getQueryString ส่งคืนส่วนพารามิเตอร์ของบรรทัดคำขอ
4. เมธอด getRemoteAddr ส่งคืนที่อยู่ IP ของไคลเอนต์ที่ทำการร้องขอ
5. เมธอด getRemoteHost ส่งคืนชื่อโฮสต์ที่สมบูรณ์ของไคลเอนต์ที่ทำการร้องขอ
6. วิธีการ getRemotePort ส่งคืนหมายเลขพอร์ตเครือข่ายที่ไคลเอ็นต์ใช้
7. วิธีการ getLocalAddr ส่งคืนที่อยู่ IP ของเซิร์ฟเวอร์เว็บ
8. วิธีการ getLocalName ส่งกลับชื่อโฮสต์ของเว็บเซิร์ฟเวอร์
9.getMethod รับวิธีการร้องขอของลูกค้า
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ com.yyz.request;
นำเข้า java.io.IOException;
นำเข้า java.io.OutputStream;
นำเข้า javax.servlet.ServletException;
นำเข้า javax.servlet.http.HttpServlet;
นำเข้า javax.servlet.http.HttpServletRequest;
นำเข้า javax.servlet.http.HttpServletResponse;
RequestDemo คลาสสาธารณะขยาย HttpServlet {
โมฆะสาธารณะ doGet (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse)
พ่น ServletException, IOException {
-
*URL เป็นส่วนย่อยของ URI
* URI ใช้เพื่อระบุทรัพยากร
*URL ใช้เพื่อระบุทรัพยากรบนอินเทอร์เน็ต
-
System.out.println(request.getRequestURL());//รับที่อยู่ URL คำขอ
System.out.println(request.getRequestURI());//รับทรัพยากรที่ร้องขอ
System.out.println(request.getQueryString());
System.out.println(request.getRemoteAddr());//รับ IP ของผู้เยี่ยมชม
System.out.println(request.getRemoteHost());
//เนื่องจากไม่ได้ลงทะเบียนบน DNS ผลการพิมพ์จึงยังคงเป็น 127.0.0.1 หาก Baidu เข้าถึงโปรแกรมนี้ ให้พิมพ์ www.baidu.com
System.out.println(request.getRemotePort());//รับทรัพยากรที่ร้องขอ
System.out.println(request.getMethod());//รับทรัพยากรที่ร้องขอ
-
โมฆะสาธารณะ doPost (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse)
พ่น ServletException, IOException {
doGet(ร้องขอ, ตอบกลับ);
-
-
ป้อน: http://localhost:8080/test/servlet/RequestDemo ในแถบที่อยู่ของเบราว์เซอร์และเอาต์พุตพื้นหลังจะเป็นดังนี้:
2. รับส่วนหัวคำขอของลูกค้า :
1.getHeader(ชื่อสตริง) วิธีการ
2.getHeaders(ชื่อสตริง) วิธีการ
3.getHeaderNames() วิธีการ
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ com.yyz.request;
นำเข้า java.io.IOException;
นำเข้า java.util.Enumeration;
นำเข้า javax.servlet.ServletException;
นำเข้า javax.servlet.http.HttpServlet;
นำเข้า javax.servlet.http.HttpServletRequest;
นำเข้า javax.servlet.http.HttpServletResponse;
//รับส่วนหัวของคำขอ
RequestDemo คลาสสาธารณะขยาย HttpServlet {
โมฆะสาธารณะ doGet (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse)
พ่น ServletException, IOException {
String head = request.getHeader("ยอมรับการเข้ารหัส");
//เบราว์เซอร์บางตัวไม่รองรับข้อมูลที่ถูกบีบอัด
ถ้า(head.contains("gzip")){
//ส่งออกข้อมูลที่บีบอัด
}อื่น{
//ส่งออกข้อมูลที่ไม่มีการบีบอัด
-
// รับค่าทั้งหมดของส่วนหัวด้วยชื่อที่ระบุ
การแจงนับ e = request.getHeaders("ยอมรับการเข้ารหัส");
ในขณะที่(e.hasMoreElements()){
ค่าสตริง = (สตริง) e.nextElement();
System.out.println (ค่า);
-
System.out.println("------------------------");
//รับส่วนหัวและค่าทั้งหมด
e = request.getHeaderNames();
ในขณะที่(e.hasMoreElements()){
ชื่อสตริง = (สตริง)e.nextElement();
ค่าสตริง = request.getHeader(ชื่อ);
System.out.println(name+"="+value);
-
-
โมฆะสาธารณะ doPost (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse)
พ่น ServletException, IOException {
doGet(ร้องขอ, ตอบกลับ);
-
-
เข้าถึงโปรแกรมในเบราว์เซอร์และเอาต์พุตพื้นหลังจะเป็นดังนี้:
3. รับพารามิเตอร์คำขอของลูกค้า (ข้อมูลที่ลูกค้าส่ง):
1.getParameter(ชื่อ) วิธีการ
2.getParameterValues(ชื่อสตริง) วิธีการ
วิธีการ 3.getParameterNames
วิธีการ 4.getParameterMap ใช้กันอย่างแพร่หลายในการสร้างเฟรมเวิร์ก
แพ็คเกจ com.yyz.request; นำเข้า java.io.IOException; นำเข้า java.util.Map; นำเข้า java.util.Map.Entry; นำเข้า javax.servlet.Servlet.http .HttpServlet; นำเข้า javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; // รับข้อมูลคำขอคลาสสาธารณะ RequestDemo ขยาย HttpServlet { โมฆะสาธารณะ doGet (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse) พ่น ServletException, IOException { //http://localhost:8080/test/servlet/RequestDemo? ชื่อ = yyz ค่าสตริง = request.getParameter ("ชื่อ"); System.out .println(value); //http://localhost:8080/test/servlet/RequestDemo?like=sing&like=dance String likes[] = request.getParameterValues("like"); if(likes!=null ){ สำหรับ(สตริง like : ชอบ){ System.out.println(like); //ต่อไปนี้เป็นวิธีการเขียนการสำรวจเส้นทางแบบมืออาชีพ ซึ่งเป็นวิธีรับข้อมูลอาร์เรย์ (เพื่อหลีกเลี่ยงข้อยกเว้นตัวชี้ null) for(int i=0;likes!=null&&i<likes.length;i++){ System.out .println(likes[ i]); } //รับชื่อทั้งหมดและรับค่าตามชื่อ Enumeration e = request.getParameterNames(); while(e.hasMoreElements()){ String name = (String) e.nextElement(); value = request.getParameter(ชื่อ); System.out.println(ชื่อ+"="+value); } System.out.println("------------- ---------"); // รับคอลเลคชัน Map ที่ใช้ในการห่อหุ้มข้อมูลในวัตถุคำขอ Map<String,String[]> map = request.getParameterMap(); for(Entry<String, String[ ] > me : map.entrySet()){ ชื่อสตริง = me.getKey(); String [] v = me.getValue(); System.out.println(name+"="+v[0] } } สาธารณะเป็นโมฆะ doPost (คำขอ HttpServletRequest, การตอบสนอง HttpServletResponse) พ่น ServletException, IOException { doGet(ร้องขอ, ตอบกลับ);