0

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

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

但是我希望当用户直接想去 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 页面......我的代码有什么问题......

4

2 回答 2

1

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

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

最后,如果还没有会话,以下代码将引发异常。Soc heck that session 不为空,或者不使用getSession(false),但是getSession()

session=request.getSession(false);
if(session.getAttribute("User_ID")==null)
于 2013-01-05T17:37:10.780 回答
0
<%
    session=request.getSession(false);
    if(session.getAttribute("User_ID")==null)
    {
        response.sendRedirect("index.jsp");
    }

%> 

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

于 2016-12-28T08:39:18.967 回答