בפיתוח אפליקציות אינטרנט דינאמיות, אינטראקציות בין לקוח ושרת חיוניות לשליחת מידע וקבלה דרך האינטרנט. במדריך זה נעמיק בשיטות ב-JSP Response Implicit Object, כלומר השיטות של ה-Implicit Response Object.
כאשר הדפדפן דורש דף אינטרנט , מידע רב נשלח לשרת האינטרנט ול- שרת האינטרנט מגיב לאחר עיבוד בקשת ה-HTTP. שם תגובת JSP מנהל את התגובה על ידי ניהול המידע הבא:
- שורת סטטוס,
- כמה כותרות תגובות,
- שורה ריקה ה
- המסמך.
בדרך כלל תשובה נראית כך:
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
- שורת המצב מורכבת מגרסת ה-HTTP (בדוגמה HTTP / 1.1),
- קוד סטטוס (בדוגמה 200) ה
- הודעה קצרה מאוד המתאימה לקוד המצב (בדוגמה אישור).
בתחתית העמוד תמצאו תקציר של כותרות התגובה של HTTP 1.1 הנפוצות ביותר, שהוחזרו לדפדפן משרת האינטרנט.
בפוסט זה נבחן את השיטות השונות שמספק JSP לטיפול בתגובת JSP
תגובת JSP
תגובת JSP יכולה להיות defiנייט כמו א אובייקט מרומז הוא דוגמה של " HttpServletResponse "ונוצר עבור כל בקשת JSP נוצר על ידי מיכל JSP.
JSP Response Object Implicit
- אובייקט תגובה הוא אובייקט מרומז המיושם כדי לשנות או לנהל את התגובה שנשלחה ללקוח (למשל דפדפן) לאחר עיבוד הבקשה, למשל על ידי הפניית התגובה למשאב אחר או שגיאה שנשלחה ללקוח.
- האובייקט המרומז של התגובה הוא מופע של ממשק javax.servlet.http.HttpServletResponse .
- המיכל יוצר אותו עבור כל בקשה.
הנה דוגמה לאובייקטים מרומזים של בקשה ותגובה של JSP שבהם משתמש אחד שולח פרטי התחברות ודף JSP אחר מקבל אותם לעיבוד:
<!DOCTYPE html>
<html>
<head>
<title>User login form</title>
</head>
<body>
<form action="login.jsp">
Username: <input type="text" name="user_name" /> <br />
<input type="submit" value="Submit" />
</form>
</body>
</html>
להלן קובץ login.jsp
<%@ page import = " java.util.* " %>
<%
String username = request.getParameter("user_name");
if(username.equals("admin")){
response.sendRedirect("home.jsp");
}else{
out.print("Invalid Username");
}
%>
Response Implicit Object Method
ל-JSP יש שיטות שונות לטיפול באובייקטי תגובה, שהיא מסוג HttpServeltResponse. לכל אחת מהשיטות הללו יש פונקציונליות משלה.
- מחרוזת encodeURL (כתובת אתר מחרוזת): משמש לקידוד כתובת אתר מסוימת על ידי הכללת מזהה ההפעלה יחד איתה. אחרת, כאשר אין צורך בקידוד, הוא יחזיר את כתובת האתר ללא שינוי.
- מחרוזת encodeRedirectURL (כתובת אתר מחרוזת): משמש לקידוד כתובת URL מסוימת לשימוש בשיטת sendRedirect. אחרת, כאשר אין צורך בקידוד, הוא יחזיר את כתובת האתר ללא שינוי.
- בוליאני containsHeader (שם מחרוזת): משמש להחזרת ערך בוליאני המציין אם כותרת תגובת השם כבר מוגדרת או לא.
- לבטל את addDateHeader (שם מחרוזת, תאריך ארוך)- משמש להוספת כותרת תגובה עם השם שצוין יחד עם ערך תאריך.
- לבטל את addHeader (שם מחרוזת, ערך מחרוזת)- משמש להוספת כותרת תגובה עם השם והערך שצוינו.
- בוליאני מחויב (): משמש להחזרת ערך בוליאני המציין אם התגובה אושרה או לא.
- לבטל את addIntHeader (שם מחרוזת, ערך int)- משמש להוספת כותרת תגובה עם השם שצוין יחד עם ערך מספר שלם.
- לבטל את flushBuffer (): משמש לאלץ כל תוכן במאגר להיכתב ללקוח.
- לבטל את addCookie (עוגיית עוגיות): משמש להוספת קובץ Cookie מסוים עם התגובה.
- לבטל את אִתחוּל(): הוא משמש לניקוי כל הנתונים הנמצאים במאגר, בכותרת או בקוד המצב.
- לבטל את sendError (int sc): הוא משמש לשליחת תגובת שגיאה (דרך קוד סטטוס מסוים) ללקוח שלך.
- לבטל את sendError (int sc, String msg): משמש לשליחת תגובת שגיאה (דרך מחרוזת סטטוס מסוימת) ללקוח שלך.
- לבטל את resetBuffer (): משמש לניקוי התוכן של המאגר הבסיסי מבלי לנקות את קוד המצב או הכותרת.
- לבטל את sendRedirect (מיקום מחרוזת)- משמש לשליחת תגובת הפניה קצרת טווח ללקוח.
- לבטל את setBufferSize (גודל int)- משמש להגדרת גודל חיץ אידיאלי עבור גוף התגובה.
- לבטל את setCharacterEncoding (ערכת תווים מחרוזת): הוא משמש להגדרת קידוד התווים (בדרך כלל ערכת תווים MIME - UTF 8) שיישלח ללקוח.
- לבטל את setContentType (סוג מחרוזת): משמש להגדרת סוג התוכן שנשלח ללקוח כאשר התגובה טרם אושרה.
- לבטל את setDateHeader (שם מחרוזת, תאריך ארוך): משמש להגדרת כותרת תגובה עם השם וערך התאריך שצוינו.
- לבטל את setContentLength (int len)- משמש להגדרת אורך הגוף של התוכן בתגובה.
- לבטל את setHeader (שם מחרוזת, ערך מחרוזת): משמש להגדרת כותרת תגובה עם השם והערך שצוינו.
- לבטל את setIntHeader (שם מחרוזת, ערך int): משמש להגדרת כותרת תגובה עם השם שצוין וערך מספר שלם.
- לבטל את setLocale (Locale loc): משמש להגדרת מיקום התגובה במקרה שהתגובה טרם נשמרה.
- לבטל את setStatus (int sc): משמש להגדרת קוד המצב עבור התגובה.
דוגמה לאובייקט מרומז של תגובה
אנו רואים להלן דוגמה נוספת לאובייקט מרומז ב-Response המיישם רענון בדפדפן, תוך שימוש בשיטת setIntHeader (), כתיבת שעות, דקות, שניות המדמה שעון דיגיטלי. שעון לדוגמה.jsp
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>Auto Refresh Header Example</title>
</head>
<body>
<center>
<h2>Auto Refresh Header Example</h2>
<%
// Set refresh, autoload time as 5 seconds
response.setIntHeader("Refresh", 5);
// Get current time
Calendar calendar = new GregorianCalendar();
String am_pm;
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
if(calendar.get(Calendar.AM_PM) == 0)
am_pm = "AM";
else
am_pm = "PM";
String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
out.println("Current Time is: " + CT + "\n");
%>
</center>
</body>
</html>
כעת הזנת הקוד לתוך clock.jsp, מנסה להפעיל אותו, זה יציג את זמן המערכת הנוכחי לאחר כל 5 שניות.
סיכום של כותרות התגובה של HTTP 1.1 הנפוצות ביותר, שהוחזרו לדפדפן משרת האינטרנט
- להתיר: כותרת זו מציינת את שיטות הבקשה (GET, POST וכו') הנתמכות על ידי השרת.
- בקרת מטמון- כותרת זו מציינת את הנסיבות שבהן ניתן לאחסן את מסמך התגובה בצורה מאובטחת. זה יכול להיות ערכי ציבורי, פרטי או ללא מטמון וכו'. ציבורי פירושו שהמסמך ניתן לקובץ שמור, פרטי פירושו שהמסמך מיועד למשתמש יחיד וניתן לאחסן אותו רק במטמון פרטי (לא משותף), ו-no-cache פירושו שלעולם אין לאחסן את המסמך במטמון.
- הקשר: כותרת זו אומרת לדפדפן אם להשתמש בחיבורי HTTP קבועים או לא. ערך קרוב אומר לדפדפן לא להשתמש בחיבורי HTTP מתמשכים, ו- Keep-alive פירושו להשתמש בחיבורים מתמשכים.
- דיספוזיציה של תוכן- כותרת זו מאפשרת לבקש מהדפדפן לבקש מהמשתמש לשמור את התגובה בדיסק בקובץ עם השם שצוין.
- קידוד תוכן: כותרת זו מציינת כיצד הדף קודד במהלך השידור.
- תוכן-שפה: כותרת זו מציינת את השפה בה נכתב המסמך. לדוגמה, en, en-us, ru וכו'.
- אורך תוכן: כותרת זו מציינת את מספר הבתים בתגובה. מידע זה נחוץ רק אם הדפדפן משתמש בחיבור HTTP מתמשך (לשמור בחיים).
- Content-Type: כותרת זו מספקת את הסוג Multipurpose Internet Mail Extension (MIME) של מסמך התגובה.
- פג תוקף- כותרת זו מציינת את הזמן שבו יש להתייחס לתוכן מיושן ולכן לא יישמר עוד במטמון.
- שונה לאחרונה: כותרת זו מציינת מתי המסמך שונה לאחרונה. לאחר מכן הלקוח יכול לשמור את המסמך במטמון ולספק תאריך באמצעות כותרת הבקשה If-Modified-Since בבקשות עוקבות.
- מקום: כותרת זו חייבת להיכלל בכל התגובות שיש להן קוד סטטוס של 300 שניות. זה מודיע לדפדפן על כתובת המסמך. הדפדפן מתחבר אוטומטית למיקום זה ומחזיר את המסמך החדש.
- לרענן: כותרת זו מציינת תוך כמה זמן על הדפדפן לבקש דף מעודכן. ניתן לציין את הזמן במספר שניות שאחריו דף ירענן.
- נסה-לאחר- ניתן להשתמש בכותרת זו בשילוב עם תגובת 503 (השירות אינו זמין) כדי לומר ללקוח כמה זמן הוא יכול לחזור על הבקשה.
- קבע עוגיה: כותרת זו מציינת קובץ Cookie המשויך לדף.
Ercole Palmeri
10 בפברואר 2022 9:17 בבוקר