2013-01-05 77 views
0

我在应用会话时遇到了麻烦。jsp会话重定向

index.jsp具有简单的登录表单,当提交到一个创建会话并重定向到admin_home.jsp页面的servlet时,这里的一切都很顺利。

但我想,当用户直接想去admin_home.jsp,他会重定向到的index.jsp page.Here的问题是:

admin_home.jsp

<body> 

<% 
    session=request.getSession(false); 
    if(session.getAttribute("User_ID")==null) 
    { 
     response.sendRedirect("index.jsp"); 
    } 

%> 
    <jsp:include page="header.jsp"></jsp:include> 

    <div> 
    <div id="left"> 
      <div id="photo"> 
       <img alt="" src="images/users_image/<%out.println(session.getAttribute("User_ID").toString().concat(".jpg"));%>" /> 

      </div> 

     </div> 
    </div> 
</body> 

登录的servlet在设置值USER_ID会话....

因此,当用户试图访问admin_home.jsp直接,他应该重定向到index.jsp页面... 什么是错在我的代码....

+1

你得到任何错误;或者只是重新指导不会发生? – Deepak

+0

我得到nullpointerexception在行“/> –

回答

1

这段代码应该在任何东西刷新到响应之前完成,并且它不应该在重定向之后执行任何指令。此外,这不是视图逻辑(所以它不应该在JSP中),并且你真的不希望在需要用户进行身份验证的应用程序的每个JSP和servlet中都有此代码。您应该将这个逻辑放在一个servlet过滤器中。

最后,如果没有会话,下面的代码将引发异常。 SOC赫克会话不为空,或者不使用getSession(false),但getSession()

session=request.getSession(false); 
if(session.getAttribute("User_ID")==null) 
+0

感谢您的答复......但我仍然有同样的问题,我这次做了什么是我把scriplet在网页的开头,并改变getSession(false)getSession(false) )但是我仍然得到例外..... –

+1

是的,因为如果你重定向,你不应该执行页面的其余部分,或者你重定向,或者你执行页面,但不能同时执行。如果,并将页面的其余部分放在else块中。 –

0
<% 
    session=request.getSession(false); 
    if(session.getAttribute("User_ID")==null) 
    { 
     response.sendRedirect("index.jsp"); 
    } 

%> 

把这些代码在HTML和头段为我工作之间