以下代码段如何始终进入else块?
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
request.getRequestDispatcher("link.html").include(request, response);
HttpSession session=request.getSession();
if(session!=null){
String name=(String)session.getAttribute("name");
out.print("Hello, "+name+" Welcome to Profile");
}
else{
out.print("Please login first");
request.getRequestDispatcher("login.html").include(request, response);
}
out.close();
}
答案 0 :(得分:0)
来自java doc的getSession()返回与此请求关联的当前会话, 或者如果请求没有会话,则创建一个。
在您的代码中
HttpSession session=request.getSession();
它将检查与请求关联的当前会话,如果没有,则将创建一个。
因此,检查if(session!=null){
将始终为真。
如果你想检查会话是否存在那么只返回HttpSession对象,否则返回null,那么你可以使用这个方法的一个重载版本
HttpSession session=request.getSession(false);