会话超时在struts2中

时间:2015-04-06 05:14:24

标签: java struts2

我是struts2的新手,我正在使用struts 2开发一个应用程序如何在应用程序中实现注销功能,并在会话超时后重定向到登录页面。

提前感谢。

3 个答案:

答案 0 :(得分:2)

在Struts2中,我们有一个名为SessionAware的接口,它允许您将数据保存在会话中并在需要时检索...

import com.opensymphony.xwork2.ActionSupport;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.SessionAware;

public class Login extends ActionSupport implements SessionAware{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private SessionMap<String,Object> sessionmap;
    public String execute()  {
        System.out.println("Inside Login Action");
        //Now Keeping required data in sessionMap

        //Retrieve User Object from Database
        sessionmap.put("Current User",User);

        //Note User is a object or record retrieved from DB

        return SUCCESS;

    } 


    @Override
    public void setSession(Map<String, Object> map) {
        System.out.println("INSIDE SESSION Login");
        sessionmap=(SessionMap)map;
    }


}

现在在Logout Class中     

sessionmap.invalidate();

//Removes the user object from session :)

    检查用户是否已登录或会话过期....

User user = (User)sessionmap.get("Current User");

if user is null session is expired or user haven't logged in...:)

web.xml

<session-config>
<session-timeout>20</session-timeout>
</session-config>

答案 1 :(得分:0)

注销功能 - 创建名为LogoutAction的操作,并在JSP注销按钮上调用此操作。清除方法中的会话对象并重定向到登录页面。

对于会话超时,我认为您可以在web.xml中指定它。更多详情here

答案 2 :(得分:-1)

这是我的工作代码,试试这个

在jsp页面的标题部分添加了此代码

 <meta http-equiv="refresh" content="<%=(session.getMaxInactiveInterval())-30%>; url=Login.jsp" />