struts2在struts.xml中为所有动作类添加拦截器

我使用了Struts 2框架,并创建了一个具有登录页面的Web应用程序。 我有三个不同的Action类,名为Action1Action1Action3 ,以及JSP页面的不同视图,这些视图是通过在Action类中运行一些业务逻辑来呈现的。

现在,我想在Action类执行处理之前检查用户是否已登录。 所以,我在下面创建了一个拦截器工作正常。

 public String intercept(ActionInvocation invocation) throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); HttpSession session = request.getSession(); if(session.isNew()) { response.sendRedirect("Login.action"); } System.out.println("Interceptor Fired"); String result = invocation.invoke(); return result; } 

我想在struts.xml中使用的不是为下面的所有操作添加拦截器

  

我的struts.xml文件有

          /success.jsp    /success.jsp    /success.jsp    

对于每个动作,我想要在struts.xml中编写一些定义,它运行拦截器而不是手动添加

  

     //here you are including default stack    

现在testStack将针对每个请求执行

使用

  

如果你没有为每个动作手动设置interceptor-ref ,你可以使用default-interceptor-ref拦截所有未明确定义拦截器配置的动作。 请参阅如何配置要与每个Action一起使用的拦截器 。

我们可以创建自己的命名堆栈,甚至为包声明一个新的默认拦截器堆栈

         

但是,如果您说上面的拦截器工作正常,我会鼓励您对业务逻辑保持谨慎,如果第一次执行失败则不会执行登录操作。 您应该检查已validation用户的结果,并将这些结果保存在您可以在拦截器中检查的会话中,而不是检查新会话。 例如,请参阅此问题。

编写使用经过身份validation的用户信息的拦截器的示例,您可以在此处找到该会话。