2010-11-13 32 views

回答

5

Servlet代碼通過servicedoGet,doPost,do...方法之一執行。這些方法採取HttpServletRequestHttpServletResponse參數,因此在某種意義上請求響應是隱式對象。您可以通過HttpServletRequest(即getSession())或通過servlet上下文(servlet中的getServletContext()方法)訪問JSP頁面上可用的其他隱式對象 - 這對應於JSP頁面中的application。一個缺少隱式對象是page,它在純servlet中不可用。 JSP頁面自己提供了這個頁面。

0

我們沒有得到servlet中的所有隱式變量,因爲有一些隱式變量,比如頁面和頁面上下文,它們只屬於jsp。默認情況下,我們可以獲得一些隱含的變量,如請求,響應,會話,輸出,配置,應用程序和異常。

爲了獲得servlet中的所有這些隱式變量,我們使用了請求和響應隱式變量。例如,如果你想獲得會議,我們正在使用方法request.getSession(true)request.getSession(false)

0

JSP隱式對象是JSP容器在每個頁面中提供的Java對象,我們可以在不明確聲明的情況下直接調用它們。 JSP隱式對象也稱爲預定義變量。 JSP中

實施例 1)請求類似於HttpServletRequest的 2)響應類似於HttpServletResponse的 3)應用類似於ServletContext的 4)配置類似於ServletResponse的 5)出類似於的JspWriter對象 等

但在小服務程序就可以訪問請求,通過doGet(HttpServlet請求,HttpServletResponse響應)方法或doPost方法響應,因爲這些方法可作爲容器的參數使用。

servlet中的配置可以通過servlet中的init(ServletConfig config)方法獲得。 應用程序或servlet中的ServletContext對象可以從請求中檢索,比如request.getServletContext();

實際上所有的jsps在內部都被轉換爲servlet。生成的servlet代碼會產生隱式對象。 檢查了生成的JSP servlet源代碼後,您知道該代碼在其_jspService方法中包含多個對象聲明。

public void _jspService(HttpServletRequest request, 
HttpServletResponse response) 
throws java.io.IOException, ServletException { 

JspFactory _jspxFactory = null; 
PageContext pageContext = null; 
HttpSession session = null; 
ServletContext application = null; 
ServletConfig config = null; 
JspWriter out = null; 
Object page = this; 
String _value = null; 
try { 
. 
. 
. 
_jspxFactory = JspFactory.getDefaultFactory(); 
response.setContentType("text/html;charset=ISO-8859-1"); 
pageContext = jspxFactory.getPageContext(this, 
request, response, "", true, 8192, true); 
application =pageContext.getServletContext(); 
config = pageContext.getServletConfig(); pageContext.getServletConte 
session = pageContext.getSession(); 
out = pageContext.getOut(); 
. 
. 
. 
} 

您會看到有對象引用,如pageContext,session,application,config,out等等。無論是從頁面內部使用這些對象引用,都會被創建。它們自動供JSP頁面作者使用!這些對象被稱爲隱式對象