JSP连接数据库的问题 刚刚学不知道错误怎么改 望高手教我

时间:2022-08-02 23:19:19
此程序建立在系统DSN数据源是usergl数据表是user.mdb的数据基础上的
不知道为什么就是有异常  试了好久没找出原因 望高手告诉我 啊  
报错如下:
HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: An exception occurred processing JSP page /zhuce2.jsp at line 52

49:    username=request.getParameter("txtname");
50:    usersex=request.getParameter("radsex");
51:    userwork=request.getParameter("selwork");
52:    n=userid.length()*userid2.length()*password.length()*password2.length()*useremail.length()*username.length();
53:    %>
54:  <%
55:  if(n!=0&password.equals(password2))


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause 

java.lang.NullPointerException
org.apache.jsp.zhuce2_jsp._jspService(zhuce2_jsp.java:111)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.


--------------------------------------------------------------------------------
pache Tomcat/6.0.13
JSP程序如下:
<%@ page language="java"  import="java.sql.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>注册窗口</title>
    <meta http-equiv="content-type" content="text/html; charset=gb2312">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

  </head>
   <body bgcolor="#ccccffffff">
<div align="center">
<p>
<font size="5" face="隶书">
<b>
<font color="#cc00cc"> 
注册窗口 
</font></b></font></p>
<hr>
<%String userid=new String();
  String userid2=new String();
  String password=new String();
  String password2=new String();
  String useremail=new String();
  String username=new String();
  String usersex=new String();
  String userwork=new String();
  String temp=new String();
  int n;
  %>
<% userid=request.getParameter("txtuserid");
   userid2=request.getParameter("txtuserid2");
   password=request.getParameter("txtpassword");
   password2=request.getParameter("txtpassword2");
   useremail=request.getParameter("txtemail");
   username=request.getParameter("txtname");
   usersex=request.getParameter("radsex");
   userwork=request.getParameter("selwork");
   n=userid.length()*userid2.length()*password.length()*password2.length()*useremail.length()*username.length();
   %>
 <%
 if(n!=0&password.equals(password2))
 { 
 try
    {
 String url=new String();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=D:/myeclipse/JJ/WebRoot/user.mdb";
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();
 String SQL=new String();
 %>
<%
SQL="SELECT*FROM [user] WHERE [user]='"+ userid+"'";
ResultSet rs=stmt.executeQuery(SQL);
int flag=1;
if(rs.next()){
flag=0;
}
rs.close();
if(flag==1){
}
 %>
<%
SQL="INSERT INTO [user](user,id,password,email,name,sex,work,ipnum) VALUES('"+userid+"','"+userid2+"','"+password+"','"+useremail+"','"+username+"','"+usersex+"','"+userwork+"',0)";
 stmt.executeUpdate(SQL);
 %>
<%String SQL2=new String();
SQL2="CREATE TBLE"+userid+"(title TEXT,article TEXT )";
stmt.close();
con.close();
}
catch(Exception e){
                System.out.println("操作数据库出错,请仔细检查");
                System.err.println(e.getMessage());
            }
%>
<p align="center"><b><font color="cc00cc" face="宋体">注册成功!欢迎注册</font></b></p>
<p align="center"><b><font color="cc00cc" face="宋体">你注册的信息如下:</font></b></p>
<table width="200" border="0" cellspacing="0" cellpadding="0">
<tr>
<td heigth="35" width="100"><b><font color="#9900ff" size="3">用户账号:</font></b></td>
<td heigth="35" width="100"><b><font color="#9900ff" size="3">
<%=userid %></font></b></td></tr>
<tr>
<td heigth="35" width="100"><b><font color="#9900ff" size="3">用户呢称:</font></b></td>
<td heigth="35" width="100"><b><font color="#9900ff" size="3">
<%=userid2%></font></b></td>
</tr>
<tr>
<td heigth="35" width="100"><b><font color="#9900ff" size="3">email:</font></b></td>
<td heigth="35" width="100"><b><font color="#9900ff" size="3">
<%=useremail %></font></b></td>
</tr>
<tr>
<td heigth="35" width="100"><b><font color="#9900ff" size="3">姓名:</font></b></td>
<td heigth="35" width="100"><b><font color="#9900ff" size="3"><%=username %></font></b></td></tr>
<tr>
<td heigth="35" width="100"><b><font color="#9900ff" size="3">性别:</font></b></td>
<td heigth="35" width="100"><b><font color="#9900ff" size="3"><%=usersex %></font></b></td></tr>
<tr>
<td heigth="35" width="100"><b><font color="#9900ff" size="3">职业:</font></b></td>
<td heigth="35" width="100"><b><font color="#9900ff" size="3"><%=userwork %></font></b></td></tr>
</table>
<% }
else{ 
%>
<p align="center"><b><font face="宋体" color="#cc00cc" size="+2">这个用户名已经有人使用!</font></b></p>
<% }

%>
<% if(!(password.equals(password2))){
%>
<p align="center"><b><font face="宋体" color="#cc00cc" size="+2">密码不符!</font></b></p>
<%}

if(n==0){
 %>
<p align="center"><b><font face="宋体" color="#cc00cc" size="+2">有未填的注册信息!</font></b></p>
<%}
 %>
<p align="center"><b><font face="宋体" color="#cc00cc" size="+2">注册失败!
</font></b></p
 
</div>
</body>
</html>

6 个解决方案

#1


userid
userid2
password
password2
useremail
username
这其中一个或几个为空值。。。。。
检查下

#2



  userid2=request.getParameter("txtuserid2"); 
  password=request.getParameter("txtpassword"); 
  password2=request.getParameter("txtpassword2"); 
  useremail=request.getParameter("txtemail"); 
  username=request.getParameter("txtname"); 
  usersex=request.getParameter("radsex"); 
  userwork=request.getParameter("selwork"); 
这些方法中的参数你都没设置啊。。取出来的当然是空值了。。怪不得是空指针异常。。
你要从表单中取一个参数的值。。
如:<input type = "text" name =" txtuserid"/>
中的name属性值必须和你的userid=request.getParameter(" txtuserid"); 参数相同

#3


 n=userid.length()*userid2.length()*password.length()*password2.length()*useremail.length()*username.length(); 
楼上非常正确

#4


同意而楼,你还没有给他变量,怎么得到值呢?

#5


顶2楼,是啊,你没有用到表单中的input控件,也没有设置name的值,
request.getParameter()方法去哪里拿到你的输入的数据啊,肯定是空的

#6


有啊 有设置的 前面有个这样的文档
做了相应的定义啊  相应的属性值也没错啊 这是一个注册页面 填好相应的数据后点击确认按钮跳转到这个页面显示注册的信息
就是从那个跳转到这个页面的时候就不行了  谢谢你的指点 但是我觉得不是这里的问题吧 能在帮我看看好吗 ?
上一页面程序如下 :
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>注册窗口</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body bgcolor="000ffff">
  <div align="center">
  <p></font size="5" face="隶书"><b><font color="0000fffff">注册窗口</font></b></p>
  <hr>
  <p align="left"><b><font color="cc00cc" face="隶书">请输入注册信息:</font></b></p>
  <form method="middle" action="zhuce2.jsp">
  <table border="0" cellspacing="0" align="center">
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">用户账号:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="text" name="txtuserid" size="20" maxlength="12">*不能为空
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">用户呢称:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="text" name="txtuserid2" size="20" maxlength="12">
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">用户密码:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="password" name="txtpassword" size="20" maxlength="12">*必须是1~9的数字或者字母
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">密码确认:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="password" name="txtpassword2" size="20" maxlength="12">
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">EMAIL:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="text" name="txtemail" size="20" maxlength="12">*请填写正确的EMAIL
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">真实姓名:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="text" name="txtname" size="20" maxlength="12">*必须填写
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">用户性别:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="radio" name="radsex" value="male"checked>男
  <input type="radio" name="radsex" value="female" >女
  </font></b></div>
  </td>
  </tr>
  <tr>
 <tr valign="middle" align="left">
  <td height="35" width="100"><b><font size="2" color="9900ff">你的职业:</font></b></td>
   <td height="35" width="100"><b><font size="2" color="9900ff">
   <select name="selwork">
   <option value="STUDENT">学生</option>
    <option value="TEACHER">教师</option>
     <option value="MERCHANT">商人</option>
      <option value="CADRE">*</option>
       <option value="ORHTER">其他</option>
       </select>
       </font></b></td>
       </tr>
       <tr align="middle" align="left">
       <td heitght="35" colspan="2" >
       <div align="left"></div>
       <div align="center">
       <input type="submit" name="cmdok" value="确认">
        <input type="reset" name="cmdreset" value="重置">
        </div>
        </td>
        </tr>
        </table>
        </form>
       <p>&nbsp;</p>
       </div>
  </body>
</html>

#1


userid
userid2
password
password2
useremail
username
这其中一个或几个为空值。。。。。
检查下

#2



  userid2=request.getParameter("txtuserid2"); 
  password=request.getParameter("txtpassword"); 
  password2=request.getParameter("txtpassword2"); 
  useremail=request.getParameter("txtemail"); 
  username=request.getParameter("txtname"); 
  usersex=request.getParameter("radsex"); 
  userwork=request.getParameter("selwork"); 
这些方法中的参数你都没设置啊。。取出来的当然是空值了。。怪不得是空指针异常。。
你要从表单中取一个参数的值。。
如:<input type = "text" name =" txtuserid"/>
中的name属性值必须和你的userid=request.getParameter(" txtuserid"); 参数相同

#3


 n=userid.length()*userid2.length()*password.length()*password2.length()*useremail.length()*username.length(); 
楼上非常正确

#4


同意而楼,你还没有给他变量,怎么得到值呢?

#5


顶2楼,是啊,你没有用到表单中的input控件,也没有设置name的值,
request.getParameter()方法去哪里拿到你的输入的数据啊,肯定是空的

#6


有啊 有设置的 前面有个这样的文档
做了相应的定义啊  相应的属性值也没错啊 这是一个注册页面 填好相应的数据后点击确认按钮跳转到这个页面显示注册的信息
就是从那个跳转到这个页面的时候就不行了  谢谢你的指点 但是我觉得不是这里的问题吧 能在帮我看看好吗 ?
上一页面程序如下 :
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>注册窗口</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body bgcolor="000ffff">
  <div align="center">
  <p></font size="5" face="隶书"><b><font color="0000fffff">注册窗口</font></b></p>
  <hr>
  <p align="left"><b><font color="cc00cc" face="隶书">请输入注册信息:</font></b></p>
  <form method="middle" action="zhuce2.jsp">
  <table border="0" cellspacing="0" align="center">
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">用户账号:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="text" name="txtuserid" size="20" maxlength="12">*不能为空
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">用户呢称:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="text" name="txtuserid2" size="20" maxlength="12">
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">用户密码:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="password" name="txtpassword" size="20" maxlength="12">*必须是1~9的数字或者字母
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">密码确认:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="password" name="txtpassword2" size="20" maxlength="12">
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">EMAIL:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="text" name="txtemail" size="20" maxlength="12">*请填写正确的EMAIL
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">真实姓名:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="text" name="txtname" size="20" maxlength="12">*必须填写
  </font></b></div>
  </td>
  </tr>
  <tr valign="middle" align="left">
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">用户性别:</font></b></div>
  <td height="35" width="100">
  <div align="left"><b><font size="2" color="9900ff">
  <input type="radio" name="radsex" value="male"checked>男
  <input type="radio" name="radsex" value="female" >女
  </font></b></div>
  </td>
  </tr>
  <tr>
 <tr valign="middle" align="left">
  <td height="35" width="100"><b><font size="2" color="9900ff">你的职业:</font></b></td>
   <td height="35" width="100"><b><font size="2" color="9900ff">
   <select name="selwork">
   <option value="STUDENT">学生</option>
    <option value="TEACHER">教师</option>
     <option value="MERCHANT">商人</option>
      <option value="CADRE">*</option>
       <option value="ORHTER">其他</option>
       </select>
       </font></b></td>
       </tr>
       <tr align="middle" align="left">
       <td heitght="35" colspan="2" >
       <div align="left"></div>
       <div align="center">
       <input type="submit" name="cmdok" value="确认">
        <input type="reset" name="cmdreset" value="重置">
        </div>
        </td>
        </tr>
        </table>
        </form>
       <p>&nbsp;</p>
       </div>
  </body>
</html>