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 ;
}
}
servlet试图像这样调用这个类
mstLeastCountEdit ref1 = new mstLeastCountEdit();
并抛出nullpointer异常。 我仍然在课堂上草率,这是一个10年前开发的旧代码,任何都有帮助??
答案 0 :(得分:2)
浏览代码......
HttpServletRequest request;
[...]
HttpSession session=request.getSession(true);
Integer ccode=(Integer) session.getAttribute("companycode");
此行应该抛出异常。 request
尚未分配,因此将是null
,因此是NPE。
通常在请求和会话之间提供servlet。甚至可以一次处理多个请求。因此,请勿在servlet实例中存储请求,会话和相关数据。
(作为一种良好做法:制作字段private
并尽可能final
,按常规方式添加空格,对变量名称使用驼峰上限(例如companyCode
)和“不要” t缩写词,特别是如果它们变得毫无意义。)
答案 1 :(得分:1)
问题在于您的字段初始化:
HttpServletRequest request;
HttpSession session=request.getSession(true);
Integer ccode=(Integer) session.getAttribute("companycode");
第一行将“request”初始化为null,第二行尝试使用它。
由于您将请求传递给方法,因此无需将其作为字段成员维护。将这两行移动到方法的主体中。实际上,如果将所有字段移动到方法的主体中 - 通过使它们成为局部变量 - 那么就不需要在每个请求上创建新的“mstLeastCountEdit”;在servlet中,您可以将其作为成员字段保持单一引用。
对于记录,Java类名称应以大写字母开头。
答案 2 :(得分:0)
该行
HttpSession session=request.getSession(true);
在任何初始化请求之前调用,因此您尝试使用空指针。