【问题标题】:Submitting two or more forms to the same servlet iin JSP在 JSP 中向同一个 servlet 提交两个或多个表单
【发布时间】:2013-02-24 17:00:47
【问题描述】:

我在学习 JSP 时创建了 login.jspregister.jsp。提交注册页面中的表单后,我将提交 RegisterUser.java (SERVLET) 中的所有值,然后通过 dopost 获取,然后写入 DB。现在我需要将login.jsp 中的另一个表单提交给同一个servlet RegisterUser.java (SERVLET)。如何在 servlet 中创建多个 dopost。如果创建了 servlet 将如何识别。请给我详细的解释。提前致谢。

【问题讨论】:

  • 我认为你对POST 方法有点困惑。您可以在同一个servlet 上拥有任意数量的表单POSTing,而无需进行任何更改。
  • 那么 servlet 将如何识别我从哪个表单提交。在两种形式中,我可以为 txtbox rit 使用相同的名称?

标签: java jsp servlets


【解决方案1】:

看起来一个servlet只能有一个doPost方法。现在由您决定提交哪个表单。您可以在不同的形式中拥有一个名称相同但值不同的隐藏字段,并且在doPost 方法中您可以使用该值来计算。

String hiddenParam=request.getParameter("Parameter-Name")
if(hiddenParam.equals("value1"){
 //form 1 was posted
}else if(hiddenParam.equals("value2"){
  //form 2 was posted
}

事实上,如果您使用Java 7,您可以使用switchString 来缩短代码

switch(hiddenParam){
  case "value1":
    //form 1 was posted
    break;
  case "value2":
    //form 2 was posted
    break;
}

【讨论】:

    【解决方案2】:
    create a field
    in login form
    <input type="hidden" name="pageName" values="login"/>
    in register form
    <input type="hidden" name="pageName" values="register"/>
    
    now in your servlet dopost method
    check
    if(request.getParameter("pageName").equals("login"))
    {
    // do login code here
    }
    if(request.getParameter("pageName").equals("register"))
    {
    // do register code here
    }
    

    【讨论】:

    • +1 感谢您的努力。虽然效果很好,但我喜欢 SuKu 先生发布答案的方式。
    • :) :) :) ,实际上它与表单名称传递参数的方法相同,如果有帮助我很高兴
    猜你喜欢
    • 2015-06-13
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 2016-12-01
    相关资源
    最近更新 更多