jsp会话重定向

时间:2013-01-05 17:16:22

标签: jsp

我在申请会议时遇到了麻烦。

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

但是我希望当用户直接想要去admin_home.jsp时,他会重定向到index.jsp页面。这就是问题所在:

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页面... 我的代码有什么问题......

2 个答案:

答案 0 :(得分:1)

此代码应在将任何内容刷新到响应之前完成,并且在重定向后不应执行任何指令。

此外,这不是视图逻辑(因此它不应该在JSP中),并且您真的不希望在应用程序的每个需要用户进行身份验证的JSP和servlet中都有此代码。因此,您应该将此逻辑放在servlet过滤器中。

最后,如果还没有会话,以下代码将抛出异常。 Soc认为会话不是空的,或者不使用getSession(false),而是getSession()

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

答案 1 :(得分:0)

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

%> 

将该代码放在html和head部分之间,这对我有用