【发布时间】:2013-12-21 17:17:38
【问题描述】:
我做了一个jsp页面,用于注册会员,注册时如果忘记填写表格中的任何字段,会在另一个页面显示错误消息。
为了实现这一点,我使用了 3 个 servlet,第一个 servlet 从 jsp 页面获取值并传递给第二个 servlet,该 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
我知道它在请求范围内有问题,因为如果将其放入会话范围,它可以工作,但问题是我想将请求范围用于这项工作。我怎样才能做到这一点?
感谢您的宝贵时间。
【问题讨论】:
-
为什么要使用请求范围?这不是它的本意。
-
只是我不想创建会话只是为了显示错误消息。
-
好吧,我犯了一个错误。现在我确实注意到了,我在第三个 servlet 中使用了 request.getParameter 而不是 request.getAttribute(),这就是它返回 null 的原因。