2011-10-25 104 views
-1

可能重复:
Java page re-directJava会话跟踪

我想后,虽然要到某个页面在第一次调用页面并转到另一页的所有时间会话仍处于活动状态。我已经有了一个登录机制。我提出了另一个话题,并建议在会话层上设置一个标志。我不知道如何实现这一点。

基本上,如果当他们按下一个按钮去一个页面调用此:

public int show(Action action) throws Exception { 
    HttpServletRequest request = action.getRequest(); 
    action.setJspURI("objects/objects_guidlines.jsp"); 
    return FORWARD; 
} 

这是好的,如果他们来到这里的第一次。我怎样才能实现一次检查,看看这是否是第一次,然后发送到另一个页面?

+0

你不应该重新问同样的问题时,答案是不令人满意的。相反,通过在答案中张贴评论和/或通过编辑和改进问题来阐明更多你真正想问的问题。 – BalusC

+0

我没有......但一小时后没有人回复 –

+0

@DocHoliday哇,你等了整整一个小时,没有一个堆栈溢出的志愿者回答你的问题(这是不正确的,他们做到了)? –

回答

2

HTTP是一种无状态的协议,所以如果你想在请求之间保持状态(比如用户以前是否在这里),你需要使用类似cookies或会话的东西。

如果您想使用的会话,你可以从HttpServletRequest的得到它,做到以下几点:

public int show(Action action) throws Exception{ 
    HttpServletRequest request = action.getRequest(); 
    if (request.getSession().getAttribute("has_visited_previously")!=true) 
    { 
     //User has not been here before so record that they are visiting. 
     request.getSession().setAttribute("has_visited_previously", true); 
     action.setJspURI("objects/objects_guidlines.jsp"); 
     return FORWARD; 
    } 
    else 
    { 
     //User has been here before. 
     action.setJspURI("objects/user_has_visited_before.jsp"); 
     return FORWARD; 
    } 
} 
+0

我想我明白你的意思了...... –

+0

这看起来很有趣... –

+0

Thanx男人...即时通讯运行此现在...我在这里得到了一个Incompatibale数据类型 –

-1

您需要一个静态变量或单个类来检查它。

在servlets中,你可以声明一个静态变量来执行这个检查,如果你没有权限访问那么你可以使用一个单例。

答案还取决于你的架构。

+2

静态变量将在所有用户中共享,与单身人士相同。用户特定数据的适当位置在会话中。 –

+0

是的,你是对的,我错过了会议信息部分。 – r0ast3d