我已经创建了一个用于注册成员的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
我知道它在请求范围中存在问题,因为如果将它放入会话范围,它可以工作,但问题是我想使用此作业的请求范围。我怎样才能做到这一点?
感谢您的时间。
答案 0 :(得分:0)
您将获得空值,因为在这种情况下,默认值来自请求范围。
在请求范围的情况下,当响应已发回时,它不存在。
每当您点击任何链接时,都会创建新的请求和响应对象
一旦响应发回,则请求和响应不再有效或者是销毁
即使它点击相同的链接。
请求范围的持续时间最短。
当相同的请求转发并包含时,请求范围使其有意义,否则它将被销毁