做了一个查询用户的页面~在第45行空指针错误(下面有指出45行) 
开发环境是Eclipse+tomcat6.0+tomcat插件,下面是我的代码一共三个文件queryUser.jsp,DBManager.java和JavaBean.java,JavaBean就不贴出了 这是queryUSER.jsp页面 
<%@ page contentType="text/html; charset=gb2312"%> 
<%@ page import="java.util.*"%> 
<%@ page import="com.jsp.query.*"%> 
<% 
request.setCharacterEncoding("gb2312"); 
%> 
<% 
String basePath = request.getScheme() 
+ "://localhost:8090/search_for_user_information/pages/"; 
%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<base href=" <%=basePath%>"> 
<title>用户信息查询 </title> 
</head> 
<body> 
<% String  = (String) request.getParameter(""); 
DBManager mdb=new DBManager(); 
String username = (String) request.getParameter("username") == null ? "" 
: (String) request.getParameter("username"); 
String work = (String) request.getParameter("work") == null ? "" 
: (String) request.getParameter("work"); %> <center> <font size="5">用户信息查询 </font> <form action="queryUser.jsp" method="post"> 
<table> 
<tr> 
<td>用户名称: </td> 
<td> <input type="text" name="username" /> <input type="hidden" 
name="" value="0" /> </td> </tr> 
<tr> 
<td>用户职业: </td> 
<td> <select size="1" name="work"> 
<option selected="selected" value="">--请选择-- </option> 
<option value="学生">学生 </option> 
<option value="职员">职员 </option> 
<option value="经理">经理 </option> 
<option value="cc">cc </option> 
</select> </td> 
</tr> 
<tr> 
<td> <input type="submit" value="查询" /> </td> 
<td> <input type="reset" value="重置" /> </td> 
</tr> 
</table> 
</form> <% 
if (username != "" || work != "") { 
mdb.setList(username,work);          //此处空指针错误 
List <JavaBean> list = mdb.getList(); 
if (!list.isEmpty()) { 
%> <table border="1"> 
<tr> 
<td>用户名称 </td> 
<td>密码 </td> 
<td>性别 </td> 
<td>职业 </td> 
<td>爱好 </td> 
<td>个人说明 </td> 
</tr> <% 
for (int i = 0; i < list.size(); i++) { 
JavaBean jb = (JavaBean) list.get(i); 
%> 
<tr> 
<td> <%=jb.getName()%> </td> 
<td> <%=jb.getPassword()%> </td> 
<td> <%=jb.getSex()%> </td> 
<td> <%=jb.getWork()%> </td> 
<td> <%=jb.getHobby()%> </td> 
<td> <%=jb.getDescription()%> </td> 
</tr> 
<% 

%> 
</table> <% 
} else { 
%> <font size="4" color="red">您输入的查询条件为用户名: <%=username%>,职业 <%=work%>,数据库中没有与之对应的信息 </font> 
<% 

} else if ( != null && .equals("0")) { 
%> <font size="4" color="red">请输入查询条件 </font> <% 

%> 
</center> 
</body> 
</html> 下面是DBManager.java 
import java.sql.*; 
import java.util.ArrayList; 
import java.util.List; public class DBManager{ 
private Connection conn=null; private PreparedStatement stmt=null; private ResultSet rs=null; private List <JavaBean> list=new ArrayList <JavaBean>(); public DBManager(){ } public DBManager(String username,String work)throws SQLException{ 
try{ 
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databasename=user_information?Unicode=true&characterEncoding=gb2312","searcher","password"); 
}catch (Exception e){ 

} public void setList(String username,String work)throws SQLException{ 
if(username==null||username.equals("")){ 
stmt=conn.prepareStatement("select * from users where work =?"); stmt.setString(1,work); 
rs=stmt.executeQuery(); 
while(rs.next()){ 
JavaBean jb=new JavaBean(); 
jb.setName(rs.getString("username")); 
jb.setPassword(rs.getString("password")); 
jb.setSex(rs.getString("sex")); 
jb.setWork(rs.getString("work")); 
jb.setHobby(rs.getString("hobby")); 
jb.setDescription(rs.getString("description")); list.add(jb); 

}else if(work==null || work.equals("")){ 
            stmt=conn.prepareStatement("select * from users where username like ?"); stmt.setString(1,"%"+username+"%"); rs=stmt.executeQuery(); 
while(rs.next()){ 
JavaBean jb=new JavaBean(); 
jb.setName(rs.getString("username")); 
jb.setPassword(rs.getString("password")); 
jb.setSex(rs.getString("sex")); 
jb.setWork(rs.getString("work")); 
jb.setHobby(rs.getString("hobby")); 
jb.setDescription(rs.getString("description")); list.add(jb); } 
}else{ 
stmt=conn.prepareStatement("select * from users where work=? and username like ?"); stmt.setString(1,work); stmt.setString(2,"%"+username+"%"); 
stmt.execute(); 
rs=stmt.executeQuery(); 
while(rs.next()){ 
JavaBean jb=new JavaBean(); 
jb.setName(rs.getString("username")); 
jb.setPassword(rs.getString("password")); 
jb.setSex(rs.getString("sex")); 
jb.setWork(rs.getString("work")); 
jb.setHobby(rs.getString("hobby")); 
jb.setDescription(rs.getString("description")); list.add(jb); 
    } 
} } 
public List <JavaBean> getList() { 
return list; 

解决方案 »

  1.   

    得会贴代码
    下面是DBManager.java 
    import java.sql.*; 
    import java.util.ArrayList; 
    import java.util.List; public class DBManager{ 
    private Connection conn=null; private PreparedStatement stmt=null; private ResultSet rs=null; private List <JavaBean> list=new ArrayList <JavaBean>(); public DBManager(){ } public DBManager(String username,String work)throws SQLException{ 
    try{ 
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databasename=user_information?Unicode=true&characterEncoding=gb2312","searcher","password"); 
    }catch (Exception e){ 


    public void setList(String username,String work)throws SQLException{ 
    if(username==null||username.equals("")){ 
    stmt=conn.prepareStatement("select * from users where work =?"); stmt.setString(1,work); 
    rs=stmt.executeQuery(); 
    while(rs.next()){ 
    JavaBean jb=new JavaBean(); 
    jb.setName(rs.getString("username")); 
    jb.setPassword(rs.getString("password")); 
    jb.setSex(rs.getString("sex")); 
    jb.setWork(rs.getString("work")); 
    jb.setHobby(rs.getString("hobby")); 
    jb.setDescription(rs.getString("description")); list.add(jb); 

    }else if(work==null || work.equals("")){ 
                stmt=conn.prepareStatement("select * from users where username like ?"); stmt.setString(1,"%"+username+"%"); rs=stmt.executeQuery(); 
    while(rs.next()){ 
    JavaBean jb=new JavaBean(); 
    jb.setName(rs.getString("username")); 
    jb.setPassword(rs.getString("password")); 
    jb.setSex(rs.getString("sex")); 
    jb.setWork(rs.getString("work")); 
    jb.setHobby(rs.getString("hobby")); 
    jb.setDescription(rs.getString("description")); list.add(jb); } 
    }else{ 
    stmt=conn.prepareStatement("select * from users where work=? and username like ?"); stmt.setString(1,work); stmt.setString(2,"%"+username+"%"); 
    stmt.execute(); 
    rs=stmt.executeQuery(); 
    while(rs.next()){ 
    JavaBean jb=new JavaBean(); 
    jb.setName(rs.getString("username")); 
    jb.setPassword(rs.getString("password")); 
    jb.setSex(rs.getString("sex")); 
    jb.setWork(rs.getString("work")); 
    jb.setHobby(rs.getString("hobby")); 
    jb.setDescription(rs.getString("description")); list.add(jb); 
        } 
    } } 
    public List <JavaBean> getList() { 
    return list; 

    这是queryUSER.jsp页面 
    <%@ page contentType="text/html; charset=gb2312"%> 
    <%@ page import="java.util.*"%> 
    <%@ page import="com.jsp.query.*"%> 
    <% 
    request.setCharacterEncoding("gb2312"); 
    %> 
    <% 
    String basePath = request.getScheme() 
    + "://localhost:8090/search_for_user_information/pages/"; 
    %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <base href=" <%=basePath%>"> 
    <title>用户信息查询 </title> 
    </head> 
    <body> 
    <% String  = (String) request.getParameter(""); 
    DBManager mdb=new DBManager(); 
    String username = (String) request.getParameter("username") == null ? "" 
    : (String) request.getParameter("username"); 
    String work = (String) request.getParameter("work") == null ? "" 
    : (String) request.getParameter("work"); %> <center> <font size="5">用户信息查询 </font> <form action="queryUser.jsp" method="post"> 
    <table> 
    <tr> 
    <td>用户名称: </td> 
    <td> <input type="text" name="username" /> <input type="hidden" 
    name="" value="0" /> </td> </tr> 
    <tr> 
    <td>用户职业: </td> 
    <td> <select size="1" name="work"> 
    <option selected="selected" value="">--请选择-- </option> 
    <option value="学生">学生 </option> 
    <option value="职员">职员 </option> 
    <option value="经理">经理 </option> 
    <option value="cc">cc </option> 
    </select> </td> 
    </tr> 
    <tr> 
    <td> <input type="submit" value="查询" /> </td> 
    <td> <input type="reset" value="重置" /> </td> 
    </tr> 
    </table> 
    </form> <% 
    if (username != "" || work != "") { 
    mdb.setList(username,work);          //此处空指针错误 
    List <JavaBean> list = mdb.getList(); 
    if (!list.isEmpty()) { 
    %> <table border="1"> 
    <tr> 
    <td>用户名称 </td> 
    <td>密码 </td> 
    <td>性别 </td> 
    <td>职业 </td> 
    <td>爱好 </td> 
    <td>个人说明 </td> 
    </tr> <% 
    for (int i = 0; i < list.size(); i++) { 
    JavaBean jb = (JavaBean) list.get(i); 
    %> 
    <tr> 
    <td> <%=jb.getName()%> </td> 
    <td> <%=jb.getPassword()%> </td> 
    <td> <%=jb.getSex()%> </td> 
    <td> <%=jb.getWork()%> </td> 
    <td> <%=jb.getHobby()%> </td> 
    <td> <%=jb.getDescription()%> </td> 
    </tr> 
    <% 

    %> 
    </table> <% 
    } else { 
    %> <font size="4" color="red">您输入的查询条件为用户名: <%=username%>,职业 <%=work%>,数据库中没有与之对应的信息 </font> 
    <% 

    } else if ( != null && .equals("0")) { 
    %> <font size="4" color="red">请输入查询条件 </font> <% 

    %> 
    </center> 
    </body> 
    </html> 
      

  2.   

    if (username != null && work != null)
      

  3.   


    <% String  = (String) request.getParameter(""); 
    DBManager mdb=new DBManager(); 
    String username = (String) request.getParameter("username") == null ? "" 
    : (String) request.getParameter("username"); 
    String work = (String) request.getParameter("work") == null ? "" 
    : (String) request.getParameter("work"); %> 
      

  4.   

    <% String  = (String) request.getParameter(""); 
    DBManager mdb=new DBManager(); 
    String username = (String) request.getParameter("username") == null ? "" 
    : (String) request.getParameter("username"); 
    String work = (String) request.getParameter("work") == null ? "" 
    : (String) request.getParameter("work"); %> 
      

  5.   

    <% String  = (String) request.getParameter(""); 
    DBManager mdb=new DBManager(); 
    String username = (String) request.getParameter("username") == null ? "" 
    : (String) request.getParameter("username"); 
    String work = (String) request.getParameter("work") == null ? "" 
    : (String) request.getParameter("work"); %> 
    你在这取的数据就是个空串啊,String username = request.getParameter("username")==null? "":request.getParameter("username");
    查看一下你在上一个页面中的输入域中是不是  “username”
      

  6.   

    真同情你,楼上没人能理解你的问题,我理解,可也正在寻找 + ing 答案。
      

  7.   

    你的jsp执行的程序流程如下
    DBManager mdb=new DBManager(); 声明了类
    然后获取两个变量
    mdb.setList(username,work); 执行方法.
    可是你的DBmanger如下
    public DBManager(){ } 
    根本没有获取数据库连接
    所以你setList里调用的conn就是null
    stmt=conn.prepareStatement("select * from users where work =?"); 就应该出问题了