struts2 登录拦截,以及涉及到的session的方法

来源:互联网 发布:卡梅伦与猪 知乎 编辑:程序博客网 时间:2024/05/17 02:01
 

一、struts2 拦截登录

 

功能描述:登录进去的用户存在session中,若用户执行退出系统或者未登录系统,则无论访问哪个action或者页面,只能停在登录页面。

 

实现:

1.LoginInterceptor.java

public class LoginInterceptorimplements Interceptor
 
     {
 
              privateString exclude;
 
             public void destroy()
 
             {
 
                   // TODO Auto-generated method stub
 
 
 
              }

       public void init()
 
              {
 
                    // TODO Auto-generated method stub
 
 
 
              }

 

        publicString intercept(ActionInvocation arg0) throws Exception
 
              {

          //若为登录的action则不拦截
 
                   String actionName =arg0.getProxy().getActionName();
 
                   //  System.out.println("************actionName:"+ actionName);
 
                  if(exclude.equals(actionName))
 
                   {
 
                         return arg0.invoke();
 
                   }
 
                  ActionContext ac =arg0.getInvocationContext();
 
                  Map session = ac.getSession();
 
                   AdminInfoadmin = (AdminInfo) session.get("admins");
 
 
 
                 if(admin != null)
 
                  {
 
                           returnarg0.invoke();   
 
                 }
 
                 else
 
                 {
 
                            return"error";
 
                  }
 
           }

      public String getExclude()
 
             {
 
                   return exclude;
 
            }

       publicvoid setExclude(String exclude)
 
           {
 
                   this.exclude = exclude;
 
            }

}

 

2.struts.xml


 

二、“退出系统”代码:

1. LoginAction.java

 

//退出系统
 
     public String exit()
 
     {
 
              HttpServletRequestrequest = ServletActionContext.getRequest();
 
              HttpSessionsession = request.getSession();
 
             session.removeAttribute("admins");
 
             session.invalidate();
 
             return "exit";
 
      }

 

2.此处略去 struts.xml 中的配置(返回到 login.jsp)

 

三、session方法

1.HttpSession session =request.getSession();

 request.getSession()的括号中是有参数的,若不写参数,则默认为 true,表示当前 request中若无session,则创建一个新的 session 。若为 request.getSession(false) , 则返回 null。

需要注意的是,除非我们确认该 request 中存在 session(即session 中存了值)或者确实需要创建一个新的 session 时,使用 request.getSession(),其他的尽量使用 request.getSession(false) 。

 

2.session.removeAttribute("admins");  //清除session
 
         session.invalidate(); //注销 session

0 0