<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*"%>
<%! String trans(String chi)
{
               String result = null;
               byte temp [];
               try
               {
                       temp=chi.getBytes("iso-8859-1");
                      result = new String(temp);
                }
                catch(UnsupportedEncodingException e)
                {
                        System.out.println (e.toString());
                }
return result;
}
%>
<html>
<head></head>
<body>
往book 表中插入数据
<form method="get" action="insertdata.jsp">
bookId:<INPUT TYPE="text" NAME="bookid"><br>
bookName:<INPUT TYPE="text" NAME="bookname"><br>
publisher:<INPUT TYPE="text" NAME="publisher"><br>
price:<INPUT TYPE="text" NAME="price">
</form><%
String id = request.getParameter("bookid");
String name = request.getParameter("bookname");
String publisher = request.getParameter("publisher");
int price = Integer.parseInt(request.getParameter("price"));   try
   {
   
    //装载驱动程序
   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
  
   //创建连接
   Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev","sa","sa");
   
   Statement stmt=con.createStatement();
   String inse = "insert into book values('"+id+"','"+name+"','"+publisher+"',"+price+")";
   //stmt.execute("insert into book values('"+id+"','"+name+"','"+publisher+"',"+price+")");
stmt.execute(inse);
    //rst.close();
    stmt.close();
    con.close();
    }
    
catch(Exception e)
    {
    e.printStackTrace();
    }
    
    %>
</body>
</html>出错页面显示为:HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: null
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:436)
java.lang.Integer.parseInt(Integer.java:518)
org.apache.jsp.insertdata_jsp._jspService(insertdata_jsp.java:84)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

解决方案 »

  1.   

    你请求第一次该页面的时,表单项都是null,当然异常!!!
      

  2.   

    int price = Integer.parseInt(request.getParameter("price"));
    这句话有问题
    应该判断request.getParameter("price")的返回是否为空
      

  3.   

    NumberFormatException - String不包含可分析的int。建议你对int price = Integer.parseInt(request.getParameter("price"));这句代码加个抛出异常.要不这样写:
    int price =Integer.parseInt(request.getParameter("price"),10);不过转换默认也是10进制
    后面这个10是转换基数~!意思是将10进制quest.getParameter("price")表示为整数...