问题描述
- 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)里面,知道的速度解答!!快要疯了!!
解决方案二:
你这里应该是null和“”的问题。
null表示还没new出对象,就是还没开辟空间 “”表示new除了对象,但是这个对象装的是空字符串。
对于username=request.getParameter("") 当前端没有为username输入时,它默认的应该是“” 而不是null。自然你这里的if就进不去了
解决方案三:
修改为 if("".equals(username)) 再试下看看
解决方案四:
真实太逗了,错误的逻辑
解决方案五:
请问楼主解决这个问题了吗,我也是碰到这个问题,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");