2014-05-06 173 views
-1

我有兩個servlet。 第一個(的doGet)顯示我的樣式與第二(的doPost)處理表單兩個servlets之間的數據傳輸

這是我的第一個servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     Nodes nodes = nodes_dao.start(request); 
     int id = nodes.getId_node(); 

     request.setAttribute("nodes", nodes); 
     request.setAttribute("id", id); 
     request.getRequestDispatcher(VUE).forward(request, response); 
    } 

,這裏是我的第二個servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     String question = null; 
     String result = null; 

     question = request.getParameter("question"); 
     result = request.getParameter("result"); 
     Node_dao dao = new Node_dao(); 

     try 
     { 
      dao.insert_result(result); 
      int left_id = dao.select_left_id(result); 
      dao.insert_question(question, left_id); 


     } 

例如,我如何在第二個servlet中獲取第一個servlet的id?

感謝

+0

您可以使用會話,請求或servlet上下文共享,請參閱:http://stackoverflow.com/questions/123657/how-can-i-share-a-variable-or-object-between-two-或更多的servlets –

+0

把它放在一個隱藏的輸入字段中?它不像你直接從servlet A到servlet B,在兩者之間有一個提交表單數據的客戶端(瀏覽器)。至少這就是我的想法,它非常模糊你發佈的內容,因爲在那裏也有一個前鋒... – Gimby

+0

爲什麼有人會建議他在添加一個隱藏的輸入時明確將id添加到請求屬性中,然後轉發?上面的代碼中甚至沒有HTML表單。 – developerwjk

回答

0

你已經在第一個servlet中調用request.setAttribute("id", id);,然後轉發到第二個。所以你缺少的是在第二個servlet中調用int id = (int)request.getAttribute("id");

然而,還有第二個問題。您不能通過轉發神奇地更改METHOD類型。如果原始請求是GET,轉發後仍然是GET。所以你的第二個servlet需要在doGet而不是doPost中處理請求。

+0

好的謝謝,我知道這個問題,但在第一個jsp中,這是一系列使用get方法的問題。在第二個jsp中,用戶使用方法帖子插入一個新問題和新結果。所以,我有一個servlet與doGet和第二個與doPost。沒有解決方案?謝謝 – Biohazard401