LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1343|回复: 16

java空指针

[复制链接]
发表于 2004-5-8 07:34:23 | 显示全部楼层 |阅读模式
这是UserInfo类
[php]
package UserBean;
public class UserInfo
{
     private String userId;
     private String userPassword;

     public String getUserId()
     {
          return this.userId;
     }

     public String getUserPassword()
     {
          return this.userPassword;
     }

     public void setUserId(String userId)
     {
           this.userId = userId;
     }

     public void setUserPassword(String userPassword)
     {
           this.userPassword = userPassword;
     }
}
[/php]

这是UserRegist类
[php]
import UserBean;
import java.sql.*;
public class UserRegist
{
     private UserInfo userInfo;
     private Connection con;
   
     public UserRegist()
     {
          String CLASSFORNAME = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
          String SERVANDDB = "jdbc:microsoft:sqlserver://127.0.0.1;DatabaseName=contact";
          String USER = "menglianjing";
          String PWD = "menglianjing";
          try
          {
                Class.forName(CLASSFORNAME);
                con = DriverManager.getConnection(SERVANDDB,USER,PWD);
               
          }
          catch(Exception e)
          {
               e.printStack();
          }
     }

     public void setUserInfo(UserInfo userInfo)
     {
            this.userInfo = userInfo;
     }

     public void reist() throws Exception
     {
            String reg = "insert into user_info values(?,?)";
            try
            {
                  PreparedStatement pstmt = con.prepareStatement(reg);
                  pstmt.setString(1,userInfo.getUserId());
                  pstmt.setString(2,userInfo.getUserPassword());
                  pstmt.executeUpdate();
            }
            catch(Exception e)
            {
                e.printStack();
            }
     }
}
[/php]

这是注册jsp页面
<%@ page language="java" contentType="text/html;charset=gb2312" import="java.sql.*"%>
<jsp:useBean id="userInfo" class="UserBean.UserInfo" scope="page">
<jsp:setProperty name="userInfo" property="*"/>
</jsp:useBean>
<jsp:useBean id="regist" class="UserBean.UserRegist" scope="page"/>
html代码我就不写了
<%
     regist.setUserInfo(userInfo);
     regist.regist();
     
%>


从上一页传过来的表单域中的name为userId,userPassword
但是有空指针异常……
发表于 2004-5-8 08:35:52 | 显示全部楼层
上午先等一下,下午才有时间。
发表于 2004-5-8 08:55:41 | 显示全部楼层
java哪有指针啊
发表于 2004-5-8 15:06:21 | 显示全部楼层
最初由 _z_ 发表
java哪有指针啊

楼主说的是一种nullpoint异常,不是指针。
发表于 2004-5-8 17:30:37 | 显示全部楼层
楼主的程序问题太多,连一些jsp的基本概念都不清楚。
发表于 2004-5-8 17:41:43 | 显示全部楼层
不知道写的什么东西。。。。
发表于 2004-5-8 17:52:05 | 显示全部楼层
java连接数据库,jndi dbcp是最常用的一种方法,几乎所有的服务器都支持,。。。
以下以tomcat 为例:
假设开发目录结构为:
+demo----------------------------------------context根目录
+src-----------------------------------java源代码
+web---------------------------------web目录
+WEB-INF--------------------classes,libs ,confs

$TOMCAT_HOME/conf/server.xml中配置。。。。
[PHP]
<ResourceParams name="jdbcdemo">
   <parameter>
     <name>factory</name>
     <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
   </parameter>
   <parameter>
     <name>maxActive</name>
     <value>100</value>
   </parameter>
   <parameter>
     <name>maxIdle</name>
     <value>30</value>
   </parameter>
   <parameter>
     <name>maxWait</name>
     <value>50000</value>
   </parameter>
  <parameter>
    <name>username</name>
    <value>root</value>
   </parameter>
   <parameter>
    <name>password</name>
    <value>hantsy</value>
   </parameter>
  <parameter>
      <name>driverClassName</name>
      <value>org.gjt.mm.mysql.Driver</value>
   </parameter>
<parameter>
     <name>url</name>
     <value>jdbc:mysql://localhost:3306/demo</value>
   </parameter>
</ResourceParams>

[/PHP]
发表于 2004-5-8 17:53:31 | 显示全部楼层
以上代码放你的context配置之间。。。。
请参阅tomcat文档。。。。
新建一个类来连接数据库。。。。
/src/com/demo/ConnectionPool.java

[PHP]

/*
* 创建日期 2003-10-29
* Copyright2003 hantsy<hantsy@163.net>
*
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.


*/
package com.demo;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class ConnectionPool {
   
private static String JNDI_NAME = "java:comp/env/jdbcdemo";
   
private DataSource ds;
private static ConnectionPool mySelf;
   
private ConnectionPool(DataSource ds) {
this.ds = ds;
}
   
public static ConnectionPool getInstance() {
      
try {
           
  if(mySelf == null) {
               
   Context initCtx = new InitialContext();
   DataSource ds = (DataSource)initCtx.lookup(JNDI_NAME);
               
   mySelf = new ConnectionPool(ds);               
               
  }
  return mySelf;
           
} catch(NamingException ex) {
  ex.printStackTrace();
  throw new RuntimeException("connect to database failed!");
}
      
}
   
public Connection getConnection(boolean autoCommit) throws SQLException {
      
Connection con = ds.getConnection();
con.setAutoCommit(autoCommit);
return con;
}
   
}


[/PHP]
发表于 2004-5-8 17:56:28 | 显示全部楼层
连接数据库主要通过调用此类的getConnection方法得到一个Connection的Instance....web设计遵循mvc原则。。。
新建一个专门的DAO类来进行数据库操作。。。建一个ValueObject来存放数据。。。新建一个BO来封装业务逻辑。。。新建Servlet来处理客户端请求。。。

/src/com/demo/user/User.java
可以用jbuilder,eclipse自动生成...
[PHP]

/*
* 创建日期 2003-11-2
* Copyright2003 hantsy<hantsy@163.net>
*
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.


*/
package com.demo.user;

/**
* @author hantsy
*
* User getters and setters.This file use for store data from database or through web pages.
*/
public class User {
private String id;
private String email;
private String password;
private String role;


public User(){}

//generate getters and  setters yourself....



[/PHP]
发表于 2004-5-8 17:57:29 | 显示全部楼层
/src/com/demo/user/UserDAO.java

[PHP]
/*
* 创建日期 2003-11-2
* Copyright2003 hantsy<hantsy@163.net>
*
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.


*/
package com.demo.user;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

/**
* @author hantsy
*
* DAO stand for Data Access Object,this file use for accessing the datebase.
*/
public class UserDAO {
private Connection con;

public UserDAO(Connection con) {
this.con = con;
}

      //edit the method yourself
       public void create(User user) {}
       public void update(User user) {}
public void remove(String userId) {}
public User findByPrimaryKey(String userId) {}

       public Collection findAllUser() {

PreparedStatement ps = null;
ResultSet rs = null;
User user = null;
ArrayList list = new ArrayList();

String sql = "SELECT * from user ";

try {

  if (con.isClosed()) {
   throw new IllegalStateException("unexpected");
  }

  ps = con.prepareStatement(sql);
  rs = ps.executeQuery();

  while (rs.next()) {

   user = new User();
   user.setId(rs.getString(1));
   user.setEmail(rs.getString(2));
   user.setPassword(rs.getString(3));
   user.setRole(rs.getString(4));

   list.add(user);

  }
  return list;

} catch (SQLException e) {
  System.out.println(e.getMessage());
  throw new RuntimeException("unexpected");
} finally {
  try {
   if (ps != null)
    ps.close();
   if (rs != null)
    rs.close();
  } catch (SQLException e) {
   System.out.println(e.getMessage());
   throw new RuntimeException("unexpected");
  }
}

}

}

[/PHP]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表