更新時間:2021-06-08 來源:黑馬程序員 瀏覽量:
(1)問題分析:
考官主要想考核一下你前端知識的基本功,與之同類的問題可能還會問一下四大作用域以及OSI七層物理模型以及常用標簽、作用等基礎知識。
(2)核心答案講解:
1)request對象
request 對象是 javax.servlet.httpServletRequest類型的對象。 該對象代表了客戶端的請求信息,主要用于接受通過HTTP協議傳送到服務器的數據。(包括頭信息、系統信息、請求方式以及請求參數等)。request對象的作用域為一次請求。
2)response對象
response 代表的是對客戶端的響應,主要是將JSP容器處理過的對象傳回到客戶端。response對象也具有作用域,它只在JSP頁面內有效。
3)session對象
session 對象是由服務器自動創建的與用戶請求相關的對象。服務器為每個用戶都生成一個session對象,用于保存該用戶的信息,跟蹤用戶的操作狀態。session對象內部使用Map類來保存數據,因此保存數據的格式為 “Key/value”。 session對象的value可以使復雜的對象類型,而不僅僅局限于字符串類型。
4)application對象
application 對象可將信息保存在服務器中,直到服務器關閉,否則application對象中保存的信息會在整個應用中都有效。與session對象相比,app ut 對象
out 對象用于在Web瀏覽器內輸出信息,并且管理應用服務器上的輸出緩沖區。在使用 out 對象輸出數據時,可以對數據緩沖區進行操作,及時清除緩沖區中的殘余數據,為其他的輸出讓出緩沖空間。待數據輸出完畢后,要及時關閉輸出流。
6)pageContext 對象
pageContext 對象的作用是取得任何范圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。
7)config 對象
config 對象的主要作用是取得服務器的配置信息。通過 pageConext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。 開發者可以在web.xml 文件中為應用程序環境中的Servlet程序和JSP頁面提供初始化參數。
8)page 對象
page 對象代表JSP本身,只有在JSP頁面內才是合法的。 page隱含對象本質上包含當前 Servlet接口引用的變量,類似于Java編程中的 this 指針。
9)exception 對象
exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。excepation對象和Java的所有對象一樣,都具有系統提供的繼承結構。exception 對象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 對象,并把 exception 對象傳送到在page指令中設定的錯誤頁面中,然后在錯誤頁面中處理相應的 exception 對象。
(3)問題擴展
Jsp四大作用域及其作用:
四個作用域從大到小:appliaction>session>request>page
● application:全局作用范圍,整個應用程序共享.生命周期為:應用程序 啟動到停止;
● session:會話作用域,當用戶首次訪問時,產生一個新的會話,以后服 務器就可以記住這個會話狀態;
● request:請求作用域,就是客戶端的一次請求;
● page:一個JSP頁面。
以上作用范圍使越來越小, request和page的生命周期都是短暫的,他 們之間的區別就是:一個request可以包含多個page頁(include, forward)。
(4)結合項目中使用
舉例:request對象
1)獲取數據
getParameter;;接收請求參數的,
2)對全部數據進行再編碼
public byte[] getBytes(“encoding”)
例如以下實例將byte數組編碼轉換
<%@ page contentType="text/html";charset=gbk"%>
<%
//接收內容
String name=request.getParameter("uname");
byte[] b=name.getBytes("ISO8859-1");
name=new String(b);
String name= new String(request.getParameter("uname").getBytes("ISO8859-1"));
%>
輸入內容為:<%=name%>3)設置統一的請求編碼
public void setCharacterEncoding(String env) throws UnsunpportedEncodingException
例如以下設置
<%@ page contentType="text/html";charset=gbk"%>
<%
//接收內容
request.setCharacterEncoding("GBK");
String name= request.getParameter("uname");
%>
輸入內容為:<%=name%>
其他舉例Demo:https://download.csdn.net/download/a_blackmoon/10940085