在请求范围中存储和检索值

时间:2013-12-21 17:17:39

标签: java jsp servlets request

我已经创建了一个用于注册成员的jsp页面,当注册该人忘记填写表单中的任何字段时,会在另一页显示错误消息。

为了实现这一点,我使用了3个servlet,第一个servlet从jsp页面获取值并传入第二个servlet,检查是否有任何字段为空,如果是,则返回第一个消息servlet,然后将消息传递给第三个servlet以向用户显示错误消息。

我的问题是消息没有从第一个servlet传递到第三个servlet。它只返回null。

这就是我所做的:

First Servlet Code:

        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

我知道它在请求范围中存在问题,因为如果将它放入会话范围,它可以工作,但问题是我想使用此作业的请求范围。我怎样才能做到这一点?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

您将获得空值,因为在这种情况下,默认值来自请求范围。

在请求范围的情况下,当响应已发回时,它不存在。

每当您点击任何链接时,都会创建新的请求和响应对象

一旦响应发回,则请求和响应不再有效或者是销毁

即使它点击相同的链接。

请求范围的持续时间最短。

当相同的请求转发并包含时,请求范围使其有意义,否则它将被销毁

相关问题