项目论坛中我用session判断登录与否已经登录则可以发贴,否则不可以。开始四这样写的。
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
HttpSession session=request.getSession();
String name=session.getAttribute("username").toString;
if(name.equals("")||name==null)
session.setAttribute("relogin","911");
return mapping.findForward("nologin");
}
String sql="select title from bbsclass";
DataConnection dc=new DataConnection();
ResultSet rs=dc.executeQuery(sql);
ArrayList arraylist=new ArrayList();
try {
while(rs.next()) {
BbsChildrenClass bsc=new BbsChildrenClass();
bsc.setTitle(rs.getString("title"));
arraylist.add(bsc);
}
request.setAttribute("childrenclass",arraylist);
return mapping.findForward("success");
}
catch(SQLException e) {
e.printStackTrace();
}
}
return null;
}
这样如果登录了可以正常,但是如果么有登录,则不 能正常跳转,信息显示java.lang.NullPointerException
找了好长时间,后来改为
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
HttpSession session=request.getSession();
if(session.getAttribute("username")==null) {
session.setAttribute("relogin","911");
return mapping.findForward("nologin");
}
if(session.getAttribute("username")!=null) {
String sql="select title from bbsclass";
DataConnection dc=new DataConnection();
ResultSet rs=dc.executeQuery(sql);
ArrayList arraylist=new ArrayList();
try {
while(rs.next()) {
BbsChildrenClass bsc=new BbsChildrenClass();
bsc.setTitle(rs.getString("title"));
arraylist.add(bsc);
}
request.setAttribute("childrenclass",arraylist);
return mapping.findForward("success");
}
catch(SQLException e) {
e.printStackTrace();
}
}
return null;
}
终于正常了。
发现问题出在
String name=session.getAttribute("username").toString;这段
因为当username位空时,session.getAttribute("username")的结果位null,此时相当与对null进行toString
便会出现java.lang.NullPointerException 异常。