0

我有一个执行标题匹配的 Java 网络应用程序。

Servlet控制器,在其中一种方法中Servlet,我正在比较两个标题列表。第一个列表在 aHashMap中,第二个来自 query 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 中有效地做到这一点?

我搜索了整个 SO 并没有找到类似的东西。提前致谢。

4

1 回答 1

0

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

  1. while 循环测试它不正确。假设您使用的是迭代器,那么测试应该是 list.hasNext();
  2. if 测试是嵌套的并且不正确。您不能使用标识符Map,因为它是类的名称,您应该使用地图对象的名称。
  3. 如果循环工作 view.forward(request, response); 在第二个周期会导致 java.lang.IllegalStateException 异常,因为它无法重新发送响应。

我建议不要尝试一次发送每个标题对,而是在一个 JSP 上显示它们全部(或者如果有太多,则显示它们),每对旁边有一个是按钮,当用户单击是按钮时对另一个更新数据库的 servlet 进行 AJAX 调用(或稍后用于更新数据库的数组)。

SOF 和 YouTube 中有一些关于使用 AJAX 和 JSP 的好教程。

于 2013-07-02T20:59:20.107 回答