2.1 คลาส HttpServletRequest
งานส่วนใหญ่ที่เซิร์ฟเล็ตของคุณต้องทำตามข้อมูลที่ได้รับจากคำขอ วัตถุรับผิดชอบมันHttpServletRequest
ซึ่งคอนเทนเนอร์จะส่งไปยังเซิร์ฟเล็ตของคุณ (ไปยังเมธอดservice
หรือเมธอดdoGet()
ฯลฯdoPost()
)
อ็อบเจกต์นี้มีเมธอดค่อนข้างน้อย เนื่องจากมันเพียงแค่เก็บข้อมูลคำขอ และคุณสามารถโต้ตอบกับคอนเทนเนอร์ผ่านมันได้
วิธีการแบ่งได้เป็น 2 กลุ่มใหญ่ๆ คือ
- วิธีการที่เกี่ยวข้องกับการให้สิทธิ์ผู้ใช้
- วิธีการทำงานกับข้อมูลคำขอ
ฉันจะให้วิธีการอนุญาตผู้ใช้ในรูปแบบของตาราง แต่เราจะไม่วิเคราะห์พวกเขา ความจริงก็คือพวกเขาไม่ค่อยใช้เพื่ออนุญาตผู้ใช้ เฟรมเวิร์กยอดนิยมทั้งหมดใช้แนวทางการอนุญาตขั้นสูงของตนเอง
ฉันควรจะแสดงรายการพวกเขา แต่อีกครั้ง ฉันไม่เห็นใครใช้พวกเขา
วิธี | คำอธิบาย | |
---|---|---|
1 | authenticate(HttpServletResponse) |
ดำเนินการตรวจสอบการตอบสนอง |
2 | changeSessionId() |
บังคับให้เปลี่ยนรหัสเซสชัน |
3 | getAuthType() |
ส่งกลับประเภทการรับรองความถูกต้องที่ใช้: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH |
4 | getRemoteUser() |
ส่งคืนการเข้าสู่ระบบของผู้ใช้ |
5 | getRequestedSessionId() |
ส่งกลับ SessionID ของไคลเอนต์ |
6 | getSession() |
ส่งกลับวัตถุ HttpSession |
7 | getUserPrincipal() |
ส่งคืนวัตถุ java.security.Principal |
8 | login(username, password) |
ดำเนินการเข้าสู่ระบบของผู้ใช้ |
9 | logout() |
ออกจากระบบเซสชันผู้ใช้ |
2.2 ขอข้อมูล
วิธีการกลุ่มที่สองนั้นน่าสนใจกว่ามาก เรามีข้อมูลประเภทใดบ้างในคำขอ
- วิธีการ http
- ยูอาร์ไอ
- ตัวเลือก
- ชื่อเรื่อง
มาดูกันว่ามีวิธีใดบ้างสำหรับการทำงานกับพวกเขา:
วิธี | คำอธิบาย | |
---|---|---|
1 | getMethod() |
ส่งคืนเมธอด HTTP: GET, POST, DELETE, ... |
2 | getRequestURI() |
ส่งคืนคำขอ URI: http://codegym.cc/my/data |
3 | getRequestURL() |
ส่งคืน URL คำขอ: http://codegym.cc/my/data |
4 | getQueryString() |
ส่งคืน Query เช่น ทุกอย่างหลังจาก ? |
5 | getParameterMap() |
ส่งคืนรายการพารามิเตอร์การค้นหา |
6 | getParameter(String name) |
ส่งกลับค่าของพารามิเตอร์ตามชื่อ |
7 | getContentType() |
ส่งคืนเนื้อหาคำขอ MimeType |
8 | getReader() |
Reader เพื่ออ่านเนื้อหาคำขอเป็นข้อความ |
9 | getInputStream() |
InputStream เพื่ออ่านเนื้อหาคำขอเป็นไบต์ [] |
10 | getSession() |
ส่งกลับวัตถุ HttpSession |
สิบเอ็ด | getCookies() |
ส่งกลับอาร์เรย์ของวัตถุ Cookie[] |
12 | getHeaderNames() |
ส่งกลับรายชื่อชื่อเรื่องเท่านั้น |
13 | getHeader(String name) |
ส่งกลับค่าส่วนหัวตามชื่อ |
14 | getServletPath() |
ส่งคืนส่วนของ URL ที่อ้างถึงเซิร์ฟเล็ต |
15 | getContextPath() |
ส่งกลับส่วนของ URI ที่ระบุเนื้อหาของคำขอ |
และนั่นไม่ใช่วิธีการทั้งหมดด้วยซ้ำ...
แม้ว่าหลังจากที่เราได้ศึกษาโปรโตคอล HTTP และเรียนรู้วิธีทำงานกับ HttpClient แล้ว ทุกอย่างก็คุ้นเคยไม่มากก็น้อยใช่ไหม
ลองเขียนเซิร์ฟเล็ตที่สามารถส่งข้อความและสีได้ และมันจะส่งคืนหน้า HTML ที่มีข้อความนั้นเขียนด้วยสีที่ระบุ คุณชอบแนวคิดนี้อย่างไร
เริ่มต้นด้วยการเขียนเซิร์ฟเล็ตของเรา:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
//write your code here
}
}
ตอนนี้เราต้องรับข้อความและสีที่ส่งจาก URI โดยผู้ใช้:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Getting the parameter “text” и “color” from request
String text= request.getParameter("text");
String color = request.getParameter("color");
}
}
และสุดท้าย คุณต้องแสดงผลข้อความเป็น HTML เราจะพูดถึงเรื่องนี้ในการบรรยายครั้งต่อไป แต่ในที่นี้ ผมจะให้คำแนะนำเล็กน้อย:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Get the "text" and "color" parameters from the request
String text = request.getParameter("text");
String color = request.getParameter("color");
// Print the HTML as a response to the browser
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head> <title> ColorTextServlet </title> </head>");
out.println("<body>");
out.println("<h1 style="color:"+color+">"+text+"</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
GO TO FULL VERSION