数据库名称:bbs_db 表名:tb_user
jsp页面代码:
<h2 align="center">会员登陆</h2>
<form action="login.action" method="post">
<table align="center">
<tr>
<th>用户名:</th>
<td width="80"><input type="text" name="username"/></td>
</tr>
<tr>
<th>密 &nbsp;&nbsp;&nbsp;&nbsp;码:</th>
<td width="80"><input type="password" name="password"/></td>
</tr><tr>
<td colspan="2" align="right">
<input type="submit" value="提交"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>数据库连接类:UseDate.java代码如下:
package com.swp.datebase;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class UseDate {
Connection conn = null ;
public UseDate() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/db_bbs?user=root&password=root";
conn = DriverManager.getConnection(url);
System.out.println("000000");
}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}finally {
try {
if (conn!=null) {
conn.close();
conn=null;
}
}catch(SQLException e) {
e.printStackTrace();
}
}
}
public Connection getConn() {
return conn;
}
}通过strut.xml映射的类为UserLogin.java代码如下:
package com.swp.login;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;import com.opensymphony.xwork2.Action;
import com.swp.datebase.UseDate;public class UserLogin implements Action{
private String username;
private String password;

public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

public String execute() throws Exception{
UseDate date = new UseDate();
Statement stmt = null;
ResultSet rs = null;
Connection conn = date.getConn();

stmt = conn.createStatement();

String check = "select * from tb_user where username='"+getUsername()+"'and password='"+getPassword()+"'";
 rs = stmt.executeQuery(check);
if(rs.next()) {
return SUCCESS;
}else {
return LOGIN;
}
}
}运行后显示的错误为:
javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
root cause java.lang.NullPointerException
com.swp.login.UserLogin.execute(UserLogin.java:33)其中java:33在上面红色显示的 就是!!
请高手指点一下::
或者那个高手给个实例也行!!!!

解决方案 »

  1.   

    root cause java.lang.NullPointerException 
    com.swp.login.UserLogin.execute(UserLogin.java:33) 把上面的那个错误全贴出来
      

  2.   

    finally {
    try {
    if (conn!=null) {
    conn.close();
    conn=null;
    } 楼主你这段是不是把连接始终设为null了
    因为finally始终要执行的
      

  3.   

    当调用UseDate date = new UseDate(); 的时候
    UseDate()构造函数被执行
    然而里面的finally 始终被执行,导致conn始终是null
      

  4.   

    解决办法是在UseDate中另外加一个close方法,然后写finally代码在action中调用一下close
      

  5.   

    空指针异常,LZ表单提交的是login.action  , 编写的action又是UserLogin , 名字不一样,看不懂。