假设我有一个处理登录的servlet。登录成功后,用户将为该用户创建会话。然后重定向到主页。
假设主页上有“查看全部”链接。此链接调用servlet,viewall.html处理来自数据库的所有数据,然后重定向到将显示来自servlet的数据的jsp页面(viewall.jsp)。
从servlet viewall.html到jsp viewall.jsp,我希望代码看起来像这样:
if (session attribute user is null) {
// redirect to the login page
} else {
// if in the servlet, retrieve the data from the database
// if in the jsp, display the data
}
检查servlet或jsp上是否存在会话的更好方法是什么?注意我知道过滤器,假设项目不能使用过滤器。
答案 0 :(得分:2)
使用过滤器的servlet是一样的。一般方法是:
创建新会话
Session old = request.getSession(false); // first invalidate old if it exists
if (old != null) {
session.invalidate();
}
Session session = request.getSession(true); // next create one
将用户ID作为会话的属性
session.setAttribute("USERID", userId);
然后在你想知道你是否有注册用户的元素(servlet的过滤器)中:
Session = request.getSession(false);
if ((session == null) or (session.getAttribute("USERID") == null)) {
response.sendRedirect(homeUrl);
return; // no need to process further (if in a filter no need to go down the chain)
}
在servlet中控制后你有一个登录用户,转发到jsp
request.getRequestDispacher(“/ path / to / displayer.jsp”)。forward(request,response);
这就是......
答案 1 :(得分:0)
如果您想在创建前进行检查,请执行以下操作:
HttpSession session = request.getSession(false);
if (session == null) {
// Not created .
session = request.getSession();
} else {
// Already created.
}
如果您在创建后不关心检查,那么您也可以这样做:
HttpSession session = request.getSession();
if (session.isNew()) {
// newly created.
} else {
// Already created.
}
答案 2 :(得分:0)
<% if(session.getAttribute("sessionname")==null)
{
response.sendRedirect("index.jsp");
else
{
String activeUser=session.getAttribute("sessionname").toString();
}
我希望它可以帮到你