我在申请会议时遇到了麻烦。
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页面... 我的代码有什么问题......
答案 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部分之间,这对我有用