【问题标题】:jsp session redirectjsp会话重定向
【发布时间】:2013-01-05 17:16:22
【问题描述】:

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

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

【问题讨论】:

  • 您是否遇到任何错误;或者只是不会发生重定向?
  • 我在 " />

标签: jsp


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的回复...但是我仍然遇到同样的问题我这次所做的是将脚本放在页面的最开头并将 getSession(false) 更改为 getSession() 但我仍然得到异常.....
  • 是的,因为如果您重定向,您不应该执行页面的其余部分。要么重定向,要么执行页面,但不能同时执行。在 if 中添加 else 子句,并将页面的其余部分放在 else 块中。
【解决方案2】:
<%
    session=request.getSession(false);
    if(session.getAttribute("User_ID")==null)
    {
        response.sendRedirect("index.jsp");
    }

%> 

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

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多