2017-10-10 66 views
0

我想創建一個表單,其中與輸入值一起還希望發送一個值從JSP到servlet與setAttribute()方法。setAttribute在JSP中並獲取該屬性在servlet

demo1.jsp

<form method="POST" action="DEMO1"> 
<% request.setAttribute("value",1); %> 
<input type="submit" value="Add" /> 
</form> 

demo1的

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 
    PrintWriter pw=response.getWriter(); 
    pw.println(request.getAttribute("value")); 
} 

它打印時,我用我的後頁空值。是否有任何過程可以訪問servlet中jsp的setAttribute()值

回答

1

您需要了解這裏的處理順序。當您執行request.setAttribute("value",1);時,只需在將HTML表單返回給用戶時立即在當前請求對象上設置屬性value,該對象將不再存在。當用戶提交表單時,表單中沒有稱爲「值」的屬性。所以當你的servlet試圖從request對象中檢索它時,它會返回爲null,因爲它不存在。

用戶隱藏的輸入用於存儲表單提交時希望服務器接收的值。

<input type="hidden" name="value" value="1" />

所以您的演示JSP將類似於以下內容:

<form method="POST" action="DEMO1"> 
    <input type="hidden" name="value" value="1" /> 
    <input type="submit" value="Add" /> 
</form> 
+0

有沒有辦法訪問值... –

+0

謝謝。但我仍然在理解爲什麼在我們發佈頁面之後文本內部或隱藏的值以及爲什麼setAttribute()無法做到這一點時存在問題。以及請求範圍如何實際工作。請你解釋我......需要幫助。 –

+0

窗體上未被禁用的任何輸入屬性都與窗體一起提交。這些屬性被自動填充到'request'對象中,其中鍵爲屬性的'名稱',值爲屬性的'值'。 – VHS

相關問題