I have created two web pages using servlets and jsp. In the first page the user enters his first name , last name and mobile number and submits. Then i have redirected to the next page showing the details the user has entered. I have to provide a "edit" button such that it allows user to edit the values in the same page.(second page). how do i do that?
1 回答
你可以通过两种方式做到这一点。两个备选方案的第一部分是相同的:
第一页允许您使用表单输入用户数据;
对应于表单操作的 servlet 执行如下操作:
公共无效doPost(HttpServletRequest请求,HttpServletResponse响应){
// 获取参数
字符串名称 = request.getParameters("name"); 字符串姓氏 = request.getParameters("姓氏"); ...
// 对接收到的参数进行一些验证 ...
// 创建用户对象 User user = new User(name, username);
// 将其存储在 HttpSession 中
request.getSession(true).setAttribute("user", user);
// 转发查看 RequestDispatcher dispatcher = request.getRequestDispatcher("目标资源依赖于场景。见下文");
dispatcher.forward(请求,响应);
}
完成完整流程的两种方法之间的区别在于第二个 jsp。基本上
1) 没有第二个 jsp,servlet 再次转发到包含表单的 jsp:在这种情况下,不同之处在于您将在先前提交的文本字段值中看到一个空白表单,而不是一个空白表单。请注意,如果在会话中找到“用户”对象,您必须稍微更改第一个 jsp 以显示这些值。此外,如您所见,在这种情况下,您并不需要“编辑”按钮,因为用户可以直接更改文本字段。无论如何,如果您愿意,如果“用户”实例处于会话状态(即用户已经插入数据),您可以显示这些文本字段已禁用,并且编辑按钮可以启用它们允许修改(使用简单的 javascript)。
2) 第二个 jsp 不包含表单,仅包含标签,因此是用户插入内容的“只读”视图。在这种情况下,servlet 转发到第二个 jsp。“编辑”按钮可以简单地重定向到第一个 jsp。同样在这种情况下,您应该使用前面描述的相同更改来更改此页面(第一个 jsp)。所以基本上
- 第一次访问 insertUserData.jsp 时,会话中没有用户实例:jsp 显示空文本字段
- 用户输入数据并提交
- servlet 创建用户对象并将其存储在会话中。接下来,重定向到第二个jsp
- 显示输入数据的只读视图。用户单击编辑按钮。
- 显示了 insertUserData.jsp,但由于用户对象处于会话中,因此文本字段中填充了先前输入的数据
最后一点,对这两种方法都有效,使用 session 可以让您在验证错误的情况下重新显示输入数据的第一个 jsp,避免用户重新输入所有信息(这非常乏味)