正在做的东西,两个页面的代码和方法是一样的,这个偏显示有错,很是纠结,不知道究竟哪错了,求哪位高手指点下,不胜感激
换页程序代码,我在另一个网页里面是一模一样的,显示是正常的,但是在这个网页里点击下一页偏提示是空指针,
jsp里:
<form name="formpage" action="./servlet/ReinfServlet" align="center" method="post">
<table>
  
<input type="hidden" name="opflag" value="changePage"/>
<input type="hidden" name="currentPage" value="<%=pagehelp.getCurrentpage() %>"/>  
<input type="hidden" name="condi" value="<%=pagehelp.getCondition()%>"/>
<tr>
<td height=25 width="105"></td><td height=25 cols="3" align="center"><%=pagehelp.getPagebar()%></td>
</tr>
</table>
</form>servlet里:
if("changePage".equals(opflag)){
String sqlCondition =" ";
sqlCondition=request.getParameter("condi");
String currentpage=request.getParameter("currentPage");
//System.out.println(currentpage);
int intcurrentpage=Integer.parseInt(currentpage);
StuInfDAO stuinfdao =null;
PageHelp pagehelp=new PageHelp();
//System.out.println(intcurrentpage+sqlCondition+intcurrentpage);//点击下一页,显示“2 2”是正常的,说明已经传回来要显示第二页了 
try {
pagehelp=stuinfdao.queryInfo(sqlCondition,intcurrentpage);//提示空指针的一行
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("pagehelp",pagehelp);
//response.sendRedirect("../Contact/AllContact.jsp");
request.getRequestDispatcher("../Stuinf/AllStu.jsp").forward(request,response);}queryInfo程序代码:在第一页时显示正常,那这个程序应该是没问题的
public PageHelp queryInfo(String condi,int currentPage) throws SQLException {
conn=dbc.getConnection();
Statement sm=conn.createStatement();
int recordcount=0;
ResultSet rs=null;
String sql="select count(*) recordcount from StuInf where 1=1 "+condi;
rs=sm.executeQuery(sql);
//System.out.println(rs.getInt("recordcount"));
if(rs.next()){
recordcount=rs.getInt("recordcount");
}
int startNum=(currentPage - 1) * PageHelp.pagesize+1;//由于数据库中没有第0条记录所以要进行+1修正
int endNum= currentPage* PageHelp.pagesize+1;//查询结束行号
int N=recordcount-startNum+1;
//System.out.println(startNum);
//System.out.println(N);
String pagesql="select top 3* from (select top "+N+"* from (select * from StuInf where 1=1 "+condi+")t2 order by StuID desc)t3 order by StuID asc"; 
rs=sm.executeQuery(pagesql);
List info=new ArrayList();
StuInfVO stuinfvo =null;
while(rs.next()){
stuinfvo=new StuInfVO();
stuinfvo.setStuID(rs.getString("StuID"));
stuinfvo.setStuName(rs.getString("StuName"));
//Date dstime=
//java.sql.Date stime=rs.getDate("stime");stuinfvo.setStuSex(rs.getInt("StuSex"));
//oaplanvo.setEtime(rs.getTimestamp("stime"));
stuinfvo.setStuGrade(rs.getInt("StuGrade"));
stuinfvo.setBirthPlace(rs.getString("BirthPlace"));
stuinfvo.setmajor(rs.getString("major"));
stuinfvo.setZZMM(rs.getString("ZZMM"));
stuinfvo.setTel(rs.getString("Tel"));
stuinfvo.setEthnic(rs.getString("Ethnic"));
stuinfvo.setDorm(rs.getString("Dorm"));
stuinfvo.setQQ(rs.getInt("QQ"));
stuinfvo.setEmail(rs.getString("Email"));
stuinfvo.setDegree(rs.getString("Degree"));
info.add(stuinfvo);
}
PageHelp pagehelp= new PageHelp(currentPage,recordcount,condi,info);
return pagehelp;
}错误代码如下, 提示空指针:  
Exception reportmessage  description The server encountered an internal error () that prevented it from fulfilling this request.exception  java.lang.NullPointerException
com.StuInfo.ctrl.ReinfServlet.doPost(ReinfServlet.java:79)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.

解决方案 »

  1.   

    应该贴完整代码:StuInfDAO stuinfdao =null;
    PageHelp pagehelp=new PageHelp();
    //System.out.println(intcurrentpage+sqlCondition+intcurrentpage);//点击下一页,显示“2 2”是正常的,说明已经传回来要显示第二页了  
    try {
    pagehelp=stuinfdao.queryInfo(sqlCondition,intcurrentpage);//提示空指针的一行
    没有看见你 new 一个对象 还是spring'注入 怎么的??
    最好由完整点代码
      

  2.   

    o(∩_∩)o...哈哈  谢谢,自己从另一处拷过来时忘记new啦,这脑子
    顺便再问一个问题  我在某jsp的页面中通过判断urole来决定传哪个参数,
    <%
        String id=(String)session.getAttribute("uid");
        String role=(String)session.getAttribute("urole");
        StuInfDAO stuinfdao = new StuInfDAO();
        StuInfVO stuinfvo=stuinfdao.findByStuID(id);

    %>
    把以上原本正确的代码改为<%
        String id=(String)session.getAttribute("uid");
        String role=(String)session.getAttribute("urole");
        System.out.println(role);//输出测试的确为0
        StuInfDAO stuinfdao = new StuInfDAO();
        if("0".equals(role)){
        StuInfVO stuinfvo=stuinfdao.findByStuID(id);
    }
    %>
    就无法获得stuinfvo了,也就是字符串相等那个判断那没有通过,不知道jsp里面难道不是这样判断的吗
      

  3.   


    if("0".equals(role)){
      StuInfVO stuinfvo=stuinfdao.findByStuID(id);
    }
    确实没错,或者你可以把StuInfVO stuinfvo=stuinfdao.findByStuID(id);
    注释。换一个System out 看看后台有没有输出 
    或者在 findByStuID(id)方法里面设断点看看调用到没有?或者 把
    if("0".equals(role)){
      StuInfVO stuinfvo=stuinfdao.findByStuID(id);
    }换到java代码中去看看 是不是 有语法错误 
    到java文件容易看出 标点 啊字符之类的错误
      

  4.   


    if("0".equals(role)){
      System.out.println("juese");
      StuInfVO stuinfvo=stuinfdao.findByStuID(id);
    }
    还是输出不出来哎  好像就是判别不了
      

  5.   

    你把if("0".equals(role)){
      System.out.println("juese");
      StuInfVO stuinfvo=stuinfdao.findByStuID(id);
    }
    这个代码放到一个java文件里面看看 有问题没有。会不会是理论是可以判断的
    除非是写错了还有就是  StuInfDAO stuinfdao = new StuInfDAO();
    的类 你引入没有
    try{  String id=(String)session.getAttribute("uid");
      String role=(String)session.getAttribute("urole");
      System.out.println(role);//输出测试的确为0
      StuInfDAO stuinfdao = new StuInfDAO();
      if("0".equals(role)){
         StuInfVO stuinfvo=stuinfdao.findByStuID(id);
      }}catch(Exception e){
      //e.print  这里输出看  我忘记怎么写了 输出看 有没有异常信息
    }
      

  6.   

    放java里看,这个不会哎
    <%
        String role=(String)session.getAttribute("urole");
       if("0".equals(role)){
        String id=(String)session.getAttribute("uid");
        }else {
         String id=request.getParameter("vsid");
        }
        StuInfDAO stuinfdao = new StuInfDAO(); 
    StuInfVO stuinfvo=stuinfdao.findByStuID(id);//提示id不能被解决
    %>如果if判断不了,那else里应该可以执行的吧
      

  7.   

    你把你的完整的代码贴上来 或者发给我看看:而且 你这里写错了 作用域不对:
    String role = (String) session.getAttribute("urole");
    String id = "";
    if ("0".equals(role)) {
    //String id = (String) session.getAttribute("uid");
    id = (String) session.getAttribute("uid");
    } else {
    //String id = request.getParameter("vsid");
    //这个作用域不对 提取出去
    id = request.getParameter("vsid");
    }
    StuInfDAO stuinfdao = new StuInfDAO();
    StuInfVO stuinfvo = stuinfdao.findByStuID(id);// 提示id不能被解决
      

  8.   


     try{//可以设置一个断点看看
     String id=(String)session.getAttribute("uid");
     String role=(String)session.getAttribute("urole");
     System.out.println(role);//输出测试的确为0
     StuInfDAO stuinfdao = new StuInfDAO();
     if("0".equals(role)){
     StuInfVO stuinfvo=stuinfdao.findByStuID(id);
     }
     }catch(Exception e){
     e.printStackTrace();
     System.out.println("异常——" + e.getMessage());//这里后台打印出异常 看看
     
     }
      

  9.   


     if("0".equals(role)){
     StuInfVO stuinfvo=stuinfdao.findByStuID(id);
     //这里这个 stuinfvo 又是局部的 那么在if 外面是获取不到的 ,不知道你是怎么处理逻辑的
     }