在Servlet中收集用户输入,并在同一点返回以继续程序:Java

在Servlet中收集用户输入,并在同一点返回以继续程序:Java,java,servlets,web-applications,Java,Servlets,Web Applications,我有一个Java的web应用程序,可以执行标题匹配 Servlet是控制器,在Servlet的方法之一中,我比较了两个标题列表。第一个列表位于HashMap中,第二个列表来自查询ResultSet 我想做的是自动匹配那些具有相同标题的内容,并为用户提供确认具有某些相似性的内容(业务逻辑)的选项。基本上,我需要获得用户输入,然后在同一点返回以继续 我尝试了JOptionPane对话框,但没有成功。 现在,我尝试转发到另一个HTML页面以获取用户输入,然后返回到Servlet 下面是Servlet代

我有一个Java的web应用程序,可以执行标题匹配

Servlet
是控制器,在
Servlet
的方法之一中,我比较了两个标题列表。第一个列表位于
HashMap
中,第二个列表来自查询
ResultSet

我想做的是自动匹配那些具有相同标题的内容,并为用户提供确认具有某些相似性的内容(业务逻辑)的选项。基本上,我需要获得用户输入,然后在同一点返回以继续

我尝试了
JOptionPane
对话框,但没有成功。 现在,我尝试转发到另一个HTML页面以获取用户输入,然后返回到
Servlet

下面是
Servlet
代码:

while (Querylist.next()) {
    String title = Querylist.getString(1).trim().toLowerCase();

    if (MyMap.containsKey(title))
    {
    // confirm match
    } else 
    {
        //some title2 is like title
        request.setAttribute("Title1", title);
        request.setAttribute("Title2", title2);
        RequestDispatcher view =   request.getRequestDispatcher("TitleMatch.jsp");
        view.forward(request, response);  
        ResultMatch= request.getParameter("ResultMatch");
        if (ResultMatch.equals("YES"))
        {
           // confirm match
        }
    }

}
HTML页面:

<B> <%= request.getAttribute("Title1")%></B>
<B> <%= request.getAttribute("Title2")%></B>
<FORM method="get" action="DataMerge">
    <input type = "radio" name="MatchResult" value="YES" /> YES
    <input type = "radio" name="MatchResult" value="NO" checked/>NO
    <button type = "submit"   formaction="DataMerge" > <b>CONFIRM</b>
</FORM>        

对
不
证实
编辑:循环工作,我有一个java.lang.IllegalStateException。 有没有人能帮助我们找出如何在纯Java中高效地实现这一点


我找了这么多地方,没有找到类似的东西。提前感谢。

您可能需要重新考虑您的方法,因为您编写的代码存在许多基本问题。例如:

  • while循环测试不正确。假设您使用的是迭代器,那么测试应该是list.hasNext()
  • if测试嵌套且不正确。不能使用标识符
    Map
    ,因为它是类的名称,所以应该使用Map对象的名称
  • 如果循环在view.forward(请求、响应)中起作用;将在第二个周期导致java.lang.IllegalStateException异常,因为无法重新发送响应
  • 我建议不要试图一次发送一个标题对,而是在一个JSP上显示所有标题对(如果标题对太多,也可以显示一些标题对),在每个标题对旁边都有一个“是”按钮,当用户单击“是”按钮时,会向另一个更新数据库的servlet(或用于更新数据库的数组)发出AJAX调用


    这里和YouTube上都有一些关于使用AJAX和JSP的好教程。

    谢谢您的回复。该列表是查询的结果集,因此工作正常,映射是一个HashMap,其中包含我要比较的标题列表。是的,我有java.lang.IllegalStateException例外,您需要跟踪您在映射中的位置,以便在返回servlet时可以转到下一个元素。这可以通过在会话变量中维护索引并在每次向客户机发送标题对时更新其值来实现,然后在返回servlet时可以检索其值并获取映射中的下一个值。删除while循环这不是解决方案,因为每次进入servlet时,它都会重置为第一个元素。感谢Alex,我使用了一种类似的方法,将所有对显示在JSP页面中,并带有供用户确认的选项。JSP有一个表单,它调用另一个Servlet来更新数据库并显示确认页面。