java.lang.NumberFormatException : null

标签 java html jsp jdbc

我创建了一个登录表单,其中包含每个字段的验证。当我点击提交按钮时,将调用函数validation()来验证所有字段,验证成功后,它将重定向到另一个jsp页面,其中所有详细信息将被插入到Oracle数据库中。

但我收到“org.apache.jasper.JasperException:java.lang.NumberFormatException:null”异常。还有“服务器遇到内部错误(),导致其无法完成此请求”错误。我希望你能帮助我。

这是代码:

<html>
    <head>
    <script type="text/javascript">
    function validate()
    {

        if(document.frm.username.value=="")
        {
          alert("Please enter Username");
          document.frm.username.focus();
        }

        else if(document.frm.mobile.value=="")
         {       
            alert("Please Enter your contact number");
            document.frm.mobile.focus();
         } 

       else
       {
        window.location = "insert.jsp";
       }
     }
</script>
    </head>

    <body>
    <form name="frm">
    <table>
    <tr><td>User Name:</td><td><input type="text" name="username"></td></tr>
    <tr><td>Contact Number:</td><td><input type="text" name="mobile"></td></tr>
    <tr><td><input type="submit" value="Submit" onclick="validate()"></td><td></td></tr>
    </table>
    </form>
    </body>

插入.jsp:

  <body>
             <%@page import="java.sql.*"%>
             <%@page import="java.util.*"%>
    <%
    Connection con=null;
    int mobile=Integer.parseInt(request.getParameter("mobile"));
    String username=request.getParameter("username");
    try{
         Class.forName("oracle.jdbc.driver.OracleDriver");
        con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","manager");

    Statement st=con.createStatement();
    st.executeUpdate("insert into stud values("+mobile+",'"+username+"')");
    out.println("Data is successfully inserted!");

      }

     catch(Exception e)
    {
       System.out.print(e);
    }
    %>
        </body>

最佳答案

您正在重定向浏览器以在 insert.jsp 上执行 GET,但您没有向该新 URL 提供请求参数。因此,您的 JSP 获取 mobile 请求参数,即 null,然后尝试将其解析为整数,产生 NumberFormatException

您可以将请求参数附加到 URL,如下所示:

window.location = "insert.jsp?mobile=" + document.frm.mobile.value + "&username=" + document.frm.username.value;

但最好在 POST 请求中提交这些值,而不是在 GET 中。我认为您可以通过向 form 标记添加 action="insert.jsp" 属性,将 onClick 属性更改为 onSubmit 并删除

 else {
    window.location = "insert.jsp";
 }

因为这将允许浏览器恢复正常的表单提交。如果在关注空字段后将其与 return false; 语句结合使用,您将阻止浏览器提交表单。

关于java.lang.NumberFormatException : null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15679411/

相关文章:

java - 检查某个对象是否是列表中某个类的实例

java - 在第二个声明中从 JSP 到 Servlet 获取 Null 值

java - javax.persistence.TransactionRequiredException 的可能原因

java - Double.parseDouble() 异常

java - (java) 不兼容的类型?

python - 写入文件的条目不正确

javascript - 修复 Bootstrap 下拉菜单的行为

javascript - 使用 Javascript 动态传递点击的 anchor 标记名称

java - JSP::与 session 对象混淆

html - JSP 中的单选按钮验证