如何使用servlet重新填充同一页面中的字段

时间:2013-07-17 04:45:51

标签: jsp servlets

我使用servlets和jsp创建了两个网页。在第一页中,用户输入他的名字,姓氏和手机号码并提交。然后我重定向到显示用户输入的详细信息的下一页。我必须提供一个“编辑”按钮,以便用户可以编辑同一页面中的值。(第二页)。我怎么做?

1 个答案:

答案 0 :(得分:1)

你可以用两种方式做到这一点。两种选择的第一部分是相同的:

  • 第一页允许您使用表单输入用户数据;

  • 与表单操作相对应的servlet执行如下操作:

    public void doPost(HttpServletRequest request,HttpServletResponse response){

    //获取参数

    String name = request.getParameters(“name”); String surname = request.getParameters(“surname”); ...

    //对收到的参数进行一些验证 ...

    //创建用户对象 用户user =新用户(名称,用户名);

    //将其存储在HttpSession

    request.getSession(true).setAttribute(“user”,user);

    //转发查看 RequestDispatcher dispatcher = request.getRequestDispatcher(“目标资源依赖于scenaro。见下文”);

    dispatcher.forward(请求,响应);

    }

完成流程的两种方法之间的区别在于第二个jsp。基本上

1)没有第二个jsp,servlet再次转发到包含表单的jsp:在这种情况下,不同之处在于,您将在之前提交的textfields值中看到而不是空白表单。请注意,您必须更改第一个jsp,以便在会话中找到“user”对象时显示这些值。 另外,正如您所看到的,在这种情况下,您不需要“编辑”按钮,因为用户可以直接更改文本字段。无论如何,如果你想要,如果“user”实例在会话中(即用户已插入数据)你可以显示那些禁用的文本域,编辑按钮可以允许它们允许修改(使用简单的javascript)。

2)第二个jsp不包含表单,只包含标签,因此用户插入的“只读”视图。在这种情况下,servlet转发到第二个jsp。 “编辑”按钮可以简单地重定向到第一个jsp。同样在这种情况下,您应该使用之前描述的相同更改来更改此页面(第一个jsp)。所以基本上

  • 第一次访问insertUserData.jsp时,会话中没有用户实例:jsp显示空文本域
  • 用户输入数据并提交
  • servlet创建用户对象并将其存储在会话中。接下来,重定向到第二个jsp
  • 显示输入数据的只读视图。用户单击编辑按钮。
  • 显示insertUserData.jsp,但由于用户对象在会话中,因此文本字段将填充先前输入的数据

如上所述,对于这两种方法都有效,使用会话允许您重新显示第一个jsp,其中包含在验证错误的情况下输入的数据,避免用户重新键入所有信息(这非常繁琐)