2011-09-15 77 views
2

如果我在我的A.jsp中聲明瞭一個變量,並且我試圖將A.jsp包括到B.jsp中,那麼我的問題在於這裏是否在A.jsp中聲明的變量是可訪問的B.jsp? 請解釋我的動態包括和靜態包括兩種情況。變量引用兩個不同的jsp頁面

回答

4

當您使用<%@ page include =「」>包含jsp模板時,源代碼將實際插入並編譯到包含文件中。這就是你能夠使用在父文件中聲明的變量的原因。

當做一個「動態」包括它將使用RequestDispatcher.include這將調用調用頁面作爲一個新的Servlet。這使你無法使用聲明的變量。我建議你使用request.setAttribute(「name」,obj)在請求範圍上傳遞變量。在執行此操作時

0

使用<%@ include %>指令無法通過服務器端參數。這個指令做了一個靜態包含。包含文件的內容靜態插入到包含頁面中。也就是說,在從jsp到servlet的翻譯期間。

改爲使用<jsp:include>標記,它在運行時處理,並且使用它可以使用<jsp:param>傳遞參數。

舉例來說,如果你有

<jsp:include page="b.jsp" /> 
    <jsp:param name="param1" value="value1" /> 
    <jsp:param name="param2" value="value2" /> 
</jsp:include> 

有a.jsp你可以得到這些參數作爲請求參數b.jsp

<% String v = request.getParameter("param1"); %> 

考慮到你仍然可以得到請求參數可用在b.jsp的a.jsp上。