servlet内部跳转if语句不执行,也不报错

} else if ("shoppingCartBooks".equals(flag)) {

String username = req.getParameter("username");

System.out.println(username+"****");

if (username != null) {

List list = bs.getAllBooksInShoppingCart(username);

req.setAttribute("list", list);

req.getRequestDispatcher("jsp/shopping.jsp").forward(req, resp);

} else if(username==null) {

//req.setAttribute("errorMess", "请登录!");

System.out.println("跳转了!!");

req.getRequestDispatcher("BookServlet?flag=allBooks").forward(

req, resp);

}

一切正常,username也为空,打出来看了,也取到了,唯独,不进入if()条件句里面,怎么回事??也没有异常!!一切正常!!

知道的回复我,到底怎么会是??这个username明明为null,我已经打出来看过了,在里面也取出来看了,就是进不去if(null)里面,知道的速度解答!!快要疯了!!

修改为 if("".equals(username)) 再试下看看

你这里应该是null和“”的问题。

null表示还没new出对象,就是还没开辟空间 “”表示new除了对象,但是这个对象装的是空字符串。

对于username=request.getParameter("") 当前端没有为username输入时,它默认的应该是“” 而不是null。自然你这里的if就进不去了

真实太逗了,错误的逻辑

请问楼主解决这个问题了吗,我也是碰到这个问题,if语句不能执行,验证过值都对,但是一到if语句就跳过。也不报错。
下边是部分代码:
sql=con.createStatement();
rs=sql.executeQuery(isActor);
int i=0;
while(rs.next()){
//if(log.getUser()==(rs.getString(1)).trim() && log.getPassword()==(rs.getString(2)).trim()) //这条语句不能执行
u[i]=(rs.getString(1)).trim();
p[i]=(rs.getString(2)).trim();
i++;
}
for(int m=0;m<i;m++){
if(log.getUser()==u[m] && log.getPassword()==p[m])
response.sendRedirect("loginSuccessS.jsp");
}
response.sendRedirect("loginError.jsp");