我是struts2的新手,我正在使用struts 2开发一个应用程序如何在应用程序中实现注销功能,并在会话超时后重定向到登录页面。
提前感谢。
答案 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" />