2010-01-12 5 views
0
class mstLeastCountEdit { 
    mstLeastCount reff; 
    HttpServletRequest request; 
    HttpServletResponse response; 
    String msg = ""; 
    String LcDesc=""; 
    int i = 0; 
    int noOfRows = 0; 
    HttpSession session=request.getSession(true); 
    Integer ccode=(Integer) session.getAttribute("companycode"); 

    void updateEdit(mstLeastCount reff,HttpServletRequest request, HttpServletResponse response, int k) 
    throws ServletException,IOException,IllegalStateException { 
     int j = k; 
     this.reff=reff; 
     this.request=request; 
     this.response=response; 
     try{ 
      noOfRows = Integer.parseInt(request.getParameter("noOfRows")); 
      String chkboxVal=""; 
      for(i=j;i<=noOfRows;i++) { 
       if((request.getParameter("chk_select"+i))==null) { 
        chkboxVal="notticked"; 
       }//if for checked closed 
       else { 
        chkboxVal=request.getParameter("chk_select"+i); 
        if(chkboxVal.equals("ticked")) { 
         String LcId=request.getParameter("txtLcId"+i); 
         String LcDesc=request.getParameter("txtLcDesc"+i);         
         LcDesc=LcDesc.trim(); 
         String Rec_Status=request.getParameter("RecStatus"+i); 
         Statement st=reff.con.createStatement(); 
         String qu="xxxxxxxxxxxxxxxxx"; 
         st.executeUpdate(qu); 
        }//if chkbox closed 
       }//else checked closed 
       //j+=1; 
      }//For Loop Closed 
     } catch(SQLException sql) { 
      request.setAttribute("error", ge+" General e Exception"); 
      reff.getServletConfig().getServletContext().getRequestDispatcher("/errjsp.jsp").forward(request,response); 
     } catch(Exception ge) { 
      request.setAttribute("error", ge+" General e Exception"); 
      reff.getServletConfig().getServletContext().getRequestDispatcher("/errjsp.jsp").forward(request,response); 
     }   
     ResultSet rs1 = null; 
     try { 
      Statement st1 = reff.con.createStatement(); 
      rs1 = st1.executeQuery("Select * from xxxx"); 
      ResultSetMetaData rsm = rs1.getMetaData(); 
      int col_Count = rsm.getColumnCount(); 
      Vector vrow = new Vector(); 
      while(rs1.next()) { 
       Vector vcol = new Vector(); 
       for(int i=1;i<=col_Count;i++) { 
        vcol.addElement(rs1.getObject(i)); 
       } 
       vrow.addElement(vcol); 
      } //while loop closed 
      request.setAttribute("vrow",vrow); 
      request.setAttribute("msg",msg); 
      reff.getServletConfig().getServletContext().getRequestDispatcher("/xxx.jsp").forward(request,response); 
     }catch(SQLException sqldel){} 
     return ; 
    } 
} 

le servlet tente d'appeler cette classe comme celui-ciexception NullPointer lors de l'initialisation d'une classe servlet

mstLeastCountEdit ref1 = new mstLeastCountEdit(); 

et il émet une exception nullpointer. je suis encore bâclée sur la classe, et ceci est un vieux code développé 10 ans en arrière, tout aidera?

+3

Si vous voulez une réponse décente, incluez la pile. –

+0

Et une indication de quelle ligne est laquelle. –

Répondre

2

En feuilletant le code ...

HttpServletRequest request; 

[...] 

HttpSession session=request.getSession(true); 
Integer ccode=(Integer) session.getAttribute("companycode"); 

Cette ligne devrait lancer une exception. request n'a pas été affecté et sera donc null, d'où le NPE.

Une servlet sera généralement servie entre la requête et les sessions. Même en gérant plusieurs requêtes à la fois. Par conséquent, ne stockez pas les demandes, les sessions et les données associées dans une instance de servlet.

(En bonne pratique: rendre les champs private et, si possible final, ajouter des espaces de manière plus conventionnelle, utilisez bouchons de chameau pour les noms de variables (par exemple companyCode) et n'abrégez pas les mots en particulier si elles perdent leur sens.)

+1

Spot sur. Je serais cependant * vraiment * surpris si ce "vieux code" fonctionnait depuis 10 ans. – BalusC

+0

:-) moi aussi, mon expérience globale de programmation est très inférieure à ce code. de toute façon je vais essayer de revenir avec le résultat. – sansknwoledge

0

La ligne

HttpSession session=request.getSession(true); 

est appelé avant toute demande initialise, donc par conséquent vous essayez de déférence un pointeur nULL.

1

Le problème est dans votre initialisations sur le terrain:

HttpServletRequest request; 
HttpSession session=request.getSession(true); 
Integer ccode=(Integer) session.getAttribute("companycode"); 

La première ligne initialise « demande » à null, le second essaie de l'utiliser.

Étant donné que vous transmettez la requête dans la méthode, il n'est pas nécessaire de la conserver en tant que membre de champ. Déplacez ces deux lignes dans le corps de la méthode. En fait, si vous déplacez tous les champs dans le corps de la méthode, ce qui en fait des variables locales, il n'est pas nécessaire de créer un nouveau "mstLeastCountEdit" à chaque requête; Dans la servlet, vous pouvez conserver une référence unique en tant que champ membre.

Et pour l'enregistrement, les noms de classes Java devraient commencer par une lettre majuscule.