2013-12-21 21 views
0

我已經爲註冊成員製作了一個jsp頁面,當註冊人員忘記填寫表單中的任何字段時,錯誤消息將顯示在另一個頁面中。在請求範圍內存儲和檢索值

爲了實現這一點,我使用了3個servlet,第一個servlet從jsp頁面獲取值並傳入第二個servlet,它檢查是否有任何字段爲空,如果是,則返回消息給第一個servlet,然後將消息傳遞給第三個servlet以向用戶顯示錯誤消息。

我的問題是消息沒有從第一個servlet傳遞到第三個servlet。它只是返回null。

這裏是我做了什麼:

第一個servlet代碼:

 String firstName=request.getParameter("firstName"); 
     String lastName=request.getParameter("lastName"); 

     String userName=request.getParameter("userName"); 
     String password=request.getParameter("password"); 

    Message message=Authenticator.registerUser(firstName, lastName, userName,"Student", password); 
    HttpSession mySession=request.getSession(); 
    RequestDispatcher failMessageDispatcher=     request.getRequestDispatcher("/ErrorController"); 

    String message1=message.getMessage(); //gets the message to a variable 
    request.setAttribute("message", message1); // puts the variable in to the request scope 

    out.println(message1); 
    if(message.getStatus().equals("0")) 
    { 

     failMessageDispatcher.forward(request, response); //forwards to the third servlet for displaying 

    } 

三servlet代碼:

 String message= request.getParameter("message"); //get the message from the request scope 
     out.println(message); //display the message 

我知道它在要求範圍內的問題,因爲如果把它在一個會話範圍,它的工作原理,但事情是我想使用請求範圍爲這項工作。我怎樣才能做這項工作?

謝謝你的時間。

+0

爲什麼你_want使用要求scope_?這不是它的意思。 –

+1

這只是我不想創建一個會話來顯示錯誤消息。 –

+0

好吧,我犯了一個錯誤。我現在注意到,我已經在第三個servlet中使用request.getParameter而不是request.getAttribute(),這就是爲什麼它返回null。 –

回答

0

您正在獲取空值,因爲在這種情況下默認值已經出現請求範圍。

在請求範圍的情況下,當響應發回時它不存在。

每當你那麼新的請求和響應對象被創建

任何鏈接上單擊一次響應發送回則請求和響應不再有效或者它甚至可以與點擊摧毀

同一鏈接。

請求範圍具有最短的持續時間。

時相同的請求轉發,包括然後請求範圍,使其感受到否則被破壞