【问题标题】:ERROR : HTTP Status 500 - org.apache.jasper.JasperException, root cause : java.util.NoSuchElementException错误:HTTP 状态 500 - org.apache.jasper.JasperException,根本原因:java.util.NoSuchElementException
【发布时间】:2014-09-29 04:29:35
【问题描述】:
org.apache.jasper.JasperException: An exception occurred processing JSP page     /ShopLoginCheck2.jsp at line 60

57:         <br> You have entered the wrong credentials!
58:         <br> Press any key to go back to the Login page
59:         <%
60:         String takeIn = sc.next();
61:         session.invalidate();
62:         response.sendRedirect("WelcomeShop.jsp");
63:     }

在上面的代码中,由于显示的错误,我无法继续。

有什么摆脱它的建议吗?

按要求添加更多代码:

    Scanner sc = new Scanner(System.in);
String s_id_string=(String)request.getParameter("s_id");
int s_id=0;
if(s_id_string !=null)
{
s_id = Integer.parseInt(s_id_string);
}
String s_name=(String)request.getParameter("s_name");
String s_password=(String)request.getParameter("s_password");
Statement stmt1 = con.createStatement();
ResultSet rs1 = stmt1.executeQuery("SELECT * FROM ShopSystem.Shop where s_id='"+s_id+"'     AND s_name='"+s_name+"' AND s_password='"+s_password+"'");
    if(rs1.next())
    {   
        if((s_id == rs1.getInt("s_id")) && (s_name.equals(rs1.getString("s_name"))) &&     (s_password.equals(rs1.getString("s_password"))))
        {                           
            session = request.getSession();
            session.setAttribute("s_id", s_id);
            session.setAttribute("s_name", s_name);
            session.setAttribute("s_password", s_password);
            response.sendRedirect("ShopMenu3.jsp");
        }
    }
    else
    {
        %>
        <br> You have entered the wrong credentials!
        <br> Press any key to go back to the Login page
        <%
        String takeIn = sc.next();
        session.invalidate();
        response.sendRedirect("WelcomeShop.jsp");
    }
sc.close();

不,我不打算以任何方式使用 takeIn。 sc 是一个 Scanner 对象

【问题讨论】:

  • 发布您的代码。单独的堆栈跟踪不会有帮助
  • sc.next(); 你在哪里定义了sc ?
  • 您打算在任何地方使用takeIn 变量吗?
  • 不,我不打算以任何方式使用 takeIn

标签: java eclipse jsp tomcat web-applications


【解决方案1】:

删除String takeIn = sc.next(); 行,因为您不打算使用此方法调用的返回值。该错误是由于Scanner 对象sc 中没有可用数据引起的。见http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next()
此外,在调用Scanner.next() 之前,您应该始终使用Scanner.hasNext() 方法检查是否有任何可用数据。即 sc.hasNext() 在您的情况下。

【讨论】:

  • 实际上我试图实现的是,当只有用户按下回车键或某个键时,他将被定向到下一页。这也给了用户一些时间来查看当前页面。该怎么做?
  • 你不能在 jsp 中这样做。执行 jsp 中的所有 java 代码以创建 jsp。一旦jsp被渲染,java代码将不会运行。在移动到欢迎页面之前,您可能必须通过使用 ajax 调用(检查凭据)和 javascript 'alert' 来获得用户确认来做你想做的事情。
猜你喜欢
  • 1970-01-01
  • 2014-05-27
  • 2017-03-24
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2011-01-01
相关资源
最近更新 更多