【发布时间】:2013-03-28 10:27:44
【问题描述】:
我创建了一个登录表单,其中包含每个字段的验证。当我单击提交按钮时,将调用函数 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>
【问题讨论】:
-
当然,手机号码通常是 10+ 位数字 - 超过一个整数。如果是国际号码,情况会更糟!
-
如果用户名是
'); DELETE FROM stud; --会发生什么 -
您不应将电话号码存储为数字类型。电话号码不像数学数字,例如,您想用它进行计算。如果电话号码以 0 开头怎么办?
int不会记住这一点。使用字符串类型来存储电话号码。