คำขอไคลเอนต์ JSP
⚡ สรุปอย่างชาญฉลาด
การร้องขอจากไคลเอ็นต์และการตอบสนองจากเซิร์ฟเวอร์ใน JSP ใช้ส่วนประกอบแอ็กชันของ JSP เพื่อควบคุมเอนจินเซิร์ฟเล็ต เบราว์เซอร์ส่งข้อมูลผ่านส่วนหัว HTTP เซิร์ฟเวอร์จะส่งบรรทัดสถานะและส่วนหัวกลับมา และรหัสสถานะ HTTP จะรายงานผลลัพธ์ของการร้องขอแต่ละครั้ง

แอ็กชันของ JSP ใช้โครงสร้างในไวยากรณ์ XML เพื่อควบคุมพฤติกรรมของเอนจินเซิร์ฟเล็ต เราจะเรียนรู้เพิ่มเติมเกี่ยวกับองค์ประกอบต่างๆ ของแอ็กชัน JSP เช่น คำขอจากไคลเอ็นต์ การตอบสนองจากเซิร์ฟเวอร์ และรหัสสถานะ HTTP
คำขอไคลเอนต์ JSP
- เมื่อมีการร้องขอหน้าเว็บ มันจะส่งข้อมูลไปยังเว็บเซิร์ฟเวอร์ในส่วนหัว HTTP
- เราสามารถใช้ข้อมูลนี้โดยใช้วัตถุ HTTPServletRequest
- ข้อมูลที่ส่งโดยเบราว์เซอร์จะถูกเก็บไว้ในส่วนหัวคำขอของคำขอ HTTP
- เรากำลังใช้ส่วนหัวที่แตกต่างกันเพื่อส่งข้อมูลไปยังวัตถุคำขอ
ส่วนหัวใน JSP
ส่วนหัวที่แตกต่างกันใน JSP มีอธิบายไว้ด้านล่าง:
| ส่วนหัว | Descriptไอออน | ตัวอย่าง |
|---|---|---|
| ยอมรับ | โดยจะระบุประเภท MIME ที่เบราว์เซอร์หรือไคลเอ็นต์อื่นๆ สามารถรองรับได้ | รูปภาพ/png หรือ รูปภาพ/jpeg |
| ยอมรับชุดอักขระ | ใช้ชุดอักขระที่เบราว์เซอร์ใช้เพื่อแสดงข้อมูล | ISO-8859 1- |
| ยอมรับ- การเข้ารหัส | ระบุประเภทของการเข้ารหัสที่จัดการโดยเบราว์เซอร์ | Gzip หรือบีบอัด |
| ยอมรับภาษา | มันระบุภาษาที่ลูกค้าระบุ | th,en_us |
| การอนุญาต | ส่วนหัวที่ไคลเอนต์ใช้เมื่อพยายามเข้าถึงหน้าเว็บที่มีการป้องกันด้วยรหัสผ่าน | |
| การเชื่อมต่อ | ระบุว่าไคลเอนต์สามารถจัดการการเชื่อมต่อ HTTP แบบถาวรได้หรือไม่ (เบราว์เซอร์สามารถดึงไฟล์ได้หลายไฟล์) | ให้มีชีวิตอยู่ |
| เนื้อหาความยาว | ใช้ได้กับการโพสต์คำขอ มันให้ขนาดของข้อมูลโพสต์เป็นไบต์ | |
| คุกกี้ | ส่งคืนคุกกี้ไปยังเซิร์ฟเวอร์ (คุกกี้ที่เคยส่งไปยังเบราว์เซอร์ก่อนหน้านี้) | |
| เจ้าของห้องพัก | ระบุโฮสต์และพอร์ตของต้นฉบับ URL | |
| หากมีการเปลี่ยนแปลงตั้งแต่ | ระบุว่าต้องการเพียงเพจเท่านั้นหากมีการเปลี่ยนแปลงหรือแก้ไข | |
| หากไม่มีการแก้ไขตั้งแต่นั้นเป็นต้นมา | ระบุว่าจำเป็นต้องมีเพจเฉพาะในกรณีที่ไม่มีการเปลี่ยนแปลงหรือแก้ไข | |
| อ้างอิง | บ่งชี้ URL ของการอ้างอิง URL หน้า | |
| ตัวแทนผู้ใช้ | ระบุเบราว์เซอร์หรือไคลเอ็นต์ที่ส่งคำขอ |
วิธีการส่วนหัว HTTP ใน JSP
ใช้วิธีการต่อไปนี้เพื่ออ่านส่วนหัว HTTP ในหน้า JSP:
- คุกกี้[]getCookies() – ส่งคืนอาร์เรย์ที่มีออบเจ็กต์คุกกี้ที่ไคลเอ็นต์ส่งไป
- การแจงนับ getAttributeNames() – มีการแจงนับชื่อของคุณลักษณะสำหรับการร้องขอ
- การแจงนับ getHeaderNames() – ประกอบด้วยการระบุรายชื่อของส่วนหัว
- การแจงนับ getParameterNames() – มีการแจงนับการรับชื่อพารามิเตอร์ในคำขอ
- HttpSession getSession() – ส่งคืนเซสชันปัจจุบันที่เกี่ยวข้องกับคำขอ หรือหากไม่มีเซสชันก็จะสร้างเซสชันใหม่
- สถานที่เกิดเหตุ getLocale() – ส่งคืนตำแหน่งที่ต้องการที่ไคลเอนต์จะยอมรับเนื้อหา ถูกกำหนดให้กับการตอบสนอง โดยค่าเริ่มต้น ค่าจะเป็นตำแหน่งเริ่มต้นของเซิร์ฟเวอร์
- วัตถุ getAttribute (ชื่อสตริง) – ส่งกลับค่าของแอตทริบิวต์ที่มีชื่อเป็นวัตถุ
- ServletInputStream getInputStream() – ดึงข้อมูลเนื้อหาของคำขอออกมาในรูปแบบข้อมูลไบนารี
- สตริง getAuthType() – ส่งคืนชื่อของรูปแบบการรับรองความถูกต้องเพื่อปกป้องเซิร์ฟเล็ต
- สตริง getCharacterEncoding() – ส่งคืนชื่อของการเข้ารหัสอักขระที่ใช้ในเนื้อหาของคำขอ
- สตริง getContentType() – ส่งคืนเนื้อหาประเภท MIME ของคำขอ
- สตริง getContextPath() – ส่งคืนส่วนของคำขอ URI ระบุเส้นทางบริบทของ URI
- สตริง getHeader (ชื่อสตริง) – ส่งคืนส่วนหัวคำขอเป็นสตริง
- สตริง getMethod() – ส่งกลับชื่อของวิธี HTTP เช่น GET, POST
- สตริง getParameter (ชื่อสตริง) – ส่งคืนพารามิเตอร์ของคำขอเป็นสตริง
- สตริง getPathInfo() – ส่งคืนข้อมูลเส้นทางที่เกี่ยวข้องกับ URL
- สตริง getQueryString() – ส่งคืนสตริงคำค้นหาที่เชื่อมโยงกับคำขอ URL
- สตริง getServletPath() – ส่งคืนส่วนหนึ่งของ URLs ของคำขอที่เรียกใช้ JSP
- String[] getParameterValues(ชื่อสตริง) – ส่งคืนอาร์เรย์ของวัตถุสตริงที่มีค่าที่พารามิเตอร์คำขอมี
ตัวอย่าง:
ในตัวอย่างด้านล่าง เรากำลังใช้วิธีการที่แตกต่างกันโดยใช้ออบเจ็กต์คำขอ
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.io.* java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Client Request Guru JSP</title> </head> <body> <h2>Client Request Guru JSP</h2> <table border="1"> <tr> <th>guru header</th><th>guru header Value(s)</th> </tr> <% HttpSession gurusession = request.getSession(); out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>"); Locale gurulocale = request.getLocale (); out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>"); String path = request.getPathInfo(); out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>"); String lpath = request.get(); out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>"); String servername = request.getServerName(); out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>"); int portname = request.getServerPort(); out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>"); Enumeration hnames = request.getHeaderNames(); while(hnames.hasMoreElements()) { String paramName = (String)hnames.nextElement(); out.print ("<tr><td>" + paramName + "</td>" ); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>"); } %>
คำอธิบายของรหัส:
Code 17 แนว: การใช้อ็อบเจ็กต์คำขอ เราได้รับอ็อบเจ็กต์เซสชันของเซสชันนั้น และเราได้รับค่าอ็อบเจ็กต์ของเซสชันนั้น
Code 19 แนว: เราใช้ object request เพื่อดึงข้อมูลภาษาของเซสชันนั้นๆ เช่น ภาษา en_US สำหรับ JSP นั้น
Code 21 แนว: เราใช้ object request เพื่อดึงข้อมูล path สำหรับไฟล์ JSP นั้น ในกรณีนี้ path จะเป็นค่าว่าง เนื่องจากไม่มี path สำหรับไฟล์นั้น URL กล่าวถึง
Code 23 แนว: การใช้อ็อบเจ็กต์คำขอ เราได้รับพาธบริบท เช่น เส้นทางรูท
Code 25 แนว: การใช้วัตถุคำขอเราได้รับชื่อเซิร์ฟเวอร์
Code 27 แนว: การใช้อ็อบเจ็กต์คำขอ เราได้รับพอร์ตเซิร์ฟเวอร์
Code บรรทัดที่ 29-35: การใช้อ็อบเจ็กต์คำขอ เราได้รับชื่อส่วนหัวซึ่งออกมาเป็นการแจงนับ และด้วยเหตุนี้เราจึงได้ค่าส่วนหัวทั้งหมดในชื่อส่วนหัว
ในที่นี้ เราได้รับค่าส่วนหัวทั้งหมดเป็น a คุกกี้, โฮสต์, การเชื่อมต่อ, ยอมรับภาษา, ยอมรับการเข้ารหัส
เมื่อคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ต่อไปนี้:
Output:
เราได้รับชุดค่าต่างๆ เช่น ชื่อเซสชัน ชื่อสถานที่ ชื่อเส้นทาง ชื่อเซิร์ฟเวอร์ ชื่อพอร์ต โฮสต์ เส้นทางบริบท และค่าส่วนหัวทั้งหมดของสิ่งนั้น JSP.
การตอบสนองของเซิร์ฟเวอร์ JSP
- เมื่อมีการประมวลผลคำขอแล้วการตอบสนองจะถูกสร้างขึ้นจากเว็บเซิร์ฟเวอร์ ประกอบด้วยบรรทัดสถานะ ส่วนหัวการตอบกลับ บรรทัดว่าง และเอกสาร
- นี่คืออ็อบเจ็กต์ของคลาส HTTPServletResponse ซึ่งเป็นอ็อบเจ็กต์สำหรับแสดงผลการตอบสนอง
- บรรทัดสถานะเป็นเวอร์ชันของ HTML
ส่วนหัวการตอบกลับใน JSP
ส่วนหัวการตอบกลับใน JSP มีการกล่าวถึงด้านล่าง:
| ส่วนหัว | Descriptไอออน |
|---|---|
| อนุญาต | โดยระบุวิธีการร้องขอ เช่น GET, POST ที่เซิร์ฟเวอร์ร้องขอ |
| การควบคุมแคช | สามารถแคชเอกสารตอบกลับได้ อาจเป็นสาธารณะ ส่วนตัว และไม่มีแคช ไม่มีแคชระบุว่าเอกสารไม่ควรถูกแคช |
| การเชื่อมต่อ | โดยจะสั่งว่าเบราว์เซอร์ควรใช้ที่บันทึกไว้ HTTPConnections หรือไม่ ค่าปิดแสดงว่าเบราว์เซอร์ไม่ควรใช้แบบถาวรใน HTTPConnections และ "keep-alive" หมายถึงการใช้การเชื่อมต่อแบบถาวร |
| การจัดการเนื้อหา | เพื่อถามผู้ใช้ว่าจะบันทึกการตอบกลับลงดิสก์หรือไม่ |
| การเข้ารหัสเนื้อหา | หน้าจะต้องถูกเข้ารหัสระหว่างการส่ง |
| เนื้อหาความยาว | จำนวนไบต์ในการตอบกลับ |
| ชนิดของเนื้อหา | โดยจะระบุประเภทการตอบสนองแบบ MIME |
| วันที่หมดอายุ | ระบุจนถึงเวลาที่เนื้อหาควรได้รับการพิจารณาว่าล้าสมัยและไม่ควรแคช |
| ปรับเปลี่ยนครั้งล่าสุด | ระบุว่าเอกสารได้รับการแก้ไขครั้งล่าสุดเมื่อใด |
| สถานที่ | ควรรวมไว้กับการตอบกลับทั้งหมดที่มีรหัสสถานะคือ 300 เป็นรหัสสถานะ |
| รีเฟรช | ระบุวิธีการค้นหาหน้าที่อัปเดต |
| ลองอีกครั้งหลังจาก | สามารถใช้กับการตอบกลับ 503 เพื่อแจ้งให้ลูกค้าทราบว่าจะสามารถส่งคำขอซ้ำได้เร็วเพียงใด |
| ชุดคุกกี้ | ระบุคุกกี้ที่เกี่ยวข้องกับเพจ |
วิธีการส่วนหัวการตอบสนอง HTTP ใน JSP
ต่อไปนี้เป็นวิธีการใน JSP ที่ใช้การตอบสนองวัตถุ:
- สตริง encodeRedirectURL(สตริง) URL) - เข้ารหัส URL ในการเปลี่ยนเส้นทางURL วิธี
- การเข้ารหัสสตริงURL(สตริง) URL) - เข้ารหัส URL โดยระบุรหัสเซสชันด้วย
- บูลีนมีส่วนหัว (ชื่อสตริง) – มันมีส่วนหัวใน JSP หรือไม่
- บูลีน isCommited() – มีการตอบสนองหรือไม่
- Void addCookie(Cookie cookie) – เพิ่มคุกกี้ลงในคำตอบ
- เป็นโมฆะ addDateHeader (ชื่อสตริง ค่าสตริง) – เพิ่มชื่อวันที่และค่าของส่วนหัวการตอบกลับ
- addHeader เป็นโมฆะ (ชื่อสตริง ค่าสตริง) – เพิ่มส่วนหัวการตอบกลับด้วยชื่อและค่า
- addIntHeader เป็นโมฆะ (ชื่อสตริง, ค่า int) – เพิ่มส่วนหัวการตอบกลับด้วยชื่อและค่าจำนวนเต็ม
- ล้างเป็นโมฆะBuffer() - บังคับเนื้อหาในบัฟเฟอร์ให้ส่งออกไปยังไคลเอนต์
- โมฆะรีเซ็ต() – ล้างข้อมูลในบัฟเฟอร์
- การรีเซ็ตเป็นโมฆะBuffer - ล้างบัฟเฟอร์เนื้อหาในการตอบสนองโดยไม่ต้องล้างรหัสสถานะ
- Void sendError(int sc,String msg) – ส่งการตอบสนองข้อผิดพลาดไปยังไคลเอนต์โดยใช้รหัสสถานะ
- โมฆะ sendRedirect (ตำแหน่งสตริง) – ส่งการตอบสนองการเปลี่ยนเส้นทางชั่วคราวไปยังไคลเอนต์
- ชุดโมฆะBufferขนาด(int size) – กำหนดขนาดบัฟเฟอร์ของตัวเครื่อง
- โมฆะ setCharacterEncoding (ชุดอักขระสตริง) – ตั้งค่าการเข้ารหัสอักขระ
- เป็นโมฆะ setContentType (ประเภทสตริง) – กำหนดประเภทเนื้อหาของการตอบกลับ
- ฟังก์ชัน `setContentLength(int len)` – กำหนดความยาวของเนื้อหาของการตอบกลับ
- เป็นโมฆะ setLocale (Locale lcl) – ตั้งค่าประเภทสถานที่ของการตอบกลับ
- ยกเลิก setStatus(int sc) – ตั้งรหัสสถานะของการตอบกลับ
ตัวอย่าง:
ในตัวอย่างนี้ เราจะกล่าวถึงวิธีการต่างๆ เช่น getLocale, flushbuffer, getWriter, getContentType, setIntHeader.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.io.* java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Action Response</title> </head> <body> <center> <h2>Guru Response</h2> <% Locale lcl = response.getLocale(); out.println("Locale is : " + lcl + "\n"); response.flushBuffer(); PrintWriter output = response.getWriter(); output.println("This is from writer object"); String type = response.getContentType(); out.println("The content type : " + type + "\n"); // Set refresh,autoload time as 5 seconds response.setIntHeader("Refresh", 5); //Get current time Date dt = new Date(); out.println("Today's date is : " +dt.toString() + "\n"); %> </center> </body> </html>
คำอธิบายของรหัส:
Code 13 แนว: การใช้อ็อบเจ็กต์การตอบสนอง เราได้รับอ็อบเจ็กต์โลแคลของเซสชัน JSP นี้
Code 15 แนว: การใช้การตอบสนองวัตถุ flushbuffer จะถูกใช้เพื่อบังคับเนื้อหาบัฟเฟอร์ลงในไคลเอนต์
Code 16 แนว: การใช้อ็อบเจ็กต์การตอบสนอง เราได้รับอ็อบเจ็กต์ตัวเขียนซึ่งรับเอาต์พุตในสตรีมเอาต์พุต
Code 18 แนว: การใช้วัตถุตอบสนอง เราได้รับประเภทเนื้อหา เช่น ประเภท MIME ของวัตถุตอบสนอง
Code 21 แนว: เมื่อใช้ออบเจ็กต์ตอบสนอง จะใช้โหลดอัตโนมัติทุกๆ 5 วินาที เนื่องจากตั้งค่า 5 เป็นพารามิเตอร์ตัวที่สอง
เมื่อคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ต่อไปนี้:
Output:
- ตรงนี้เราจะได้ผลลัพธ์มาจากอ็อบเจ็กต์ writer จากฟังก์ชัน getWriterซึ่งจะทำให้เราได้อ็อบเจ็กต์ และเราสามารถส่งออกไปยังสตรีมเอาต์พุตได้
- เราได้รับโลแคลเป็น en_us และประเภทเนื้อหาเป็น text/html
- เราได้รับชุดอักขระเป็น ISO 8859
- วันที่วันนี้เป็นวันที่ปัจจุบัน
สถานะ HTTP ของ JSP Codes
- เมื่อคำขอได้รับการประมวลผล การตอบสนองจะถูกสร้างขึ้น บรรทัดสถานะการตอบกลับประกอบด้วยเวอร์ชัน HTTP รหัสสถานะ และข้อความที่เกี่ยวข้อง
- ข้อความเชื่อมโยงโดยตรงกับรหัสสถานะและเวอร์ชัน HTTP และถูกกำหนดโดยเซิร์ฟเวอร์
- ตามค่าเริ่มต้น 200 จะถูกตั้งค่าเป็นรหัสสถานะใน JSP ดังนั้นเราจึงไม่จำเป็นต้องตั้งค่าอย่างชัดเจน
- เราสามารถตั้งค่าเป็นเมธอด response.setStatus() ได้
รหัสแบ่งออกเป็น 5 ประเภทดังต่อไปนี้:
- 100-199 – ที่นี่ไคลเอนต์ระบุว่าควรตอบสนองด้วยการดำเนินการบางอย่าง
- 200-299 – แสดงว่าคำขอสำเร็จ
- 300-399 – ใช้สำหรับไฟล์ที่ถูกย้ายและมักจะมีส่วนหัวของตำแหน่งที่ระบุที่อยู่ใหม่
- 400-499 – ระบุข้อผิดพลาดโดยไคลเอ็นต์
- 500-599 – ระบุข้อผิดพลาดโดยเซิร์ฟเวอร์
รหัสสถานะทั่วไปบางส่วนอยู่ด้านล่าง:
- 200 – บ่งบอกว่าทุกอย่างเรียบร้อยดี
- 301 – มันถูกย้ายอย่างถาวร
- 304 – ไม่มีการแก้ไขตั้งแต่การเปลี่ยนแปลงครั้งล่าสุด
- 400 – คำขอไม่ถูกต้อง
- 404 – ไม่พบ
- 405 – ไม่พบวิธีการ
- 500 - เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์
- 503 – บริการไม่พร้อมใช้งาน
- 505 – ไม่รองรับเวอร์ชัน HTTP
สถานะ HTTP Code วิธีการใน JSP
วิธีรหัสสถานะบางวิธีใน JSP มีดังต่อไปนี้:
- สาธารณะ void setStatus(int status)Code): มันจะกำหนดรหัสสถานะที่เราต้องการจะตั้งค่าในหน้า JSP นั้น ซึ่งจะให้ข้อความของรหัสสถานะที่ถูกกำหนดไว้แก่เรา
- สาธารณะ void sendRedirect(String) URL): ระบบจะสร้างการตอบสนอง 302 พร้อมกับส่วนหัวตำแหน่งที่ตั้ง URL ของเอกสารฉบับใหม่
- ฟังก์ชันสาธารณะ void sendError(int code,String msg): โดยจะส่งรหัสสถานะพร้อมกับข้อความสั้นและจัดรูปแบบภายในเอกสาร HTML
ตัวอย่าง:
ในตัวอย่างนี้ เรากำลังส่งข้อผิดพลาดไปยังเพจ JSP อย่างชัดเจน
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Status Code</title> </head> <body> <% response.sendError(404,"Guru Page Not Found"); %> </body> </html>
คำอธิบายของรหัส:
Code 10 แนว: การใช้วัตถุตอบสนองเรากำลังส่งข้อผิดพลาดไปยังเพจที่มีพารามิเตอร์สองตัว
- รหัสสถานะ – อาจเป็นรหัสใดก็ได้ข้างต้น ในกรณีนี้ เราได้อธิบายไว้เป็น 404
- ข้อความ – อาจเป็นข้อความเฉพาะใดๆ ที่เราต้องการแสดงข้อผิดพลาด
หากคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้:
Output:
ตรงนี้เราได้รับรหัสข้อผิดพลาด 404 ซึ่งส่งมาจากโค้ดและแสดงข้อความว่า “Guru ข้อความ “ไม่พบหน้าเว็บ” ปรากฏในผลลัพธ์



