Web.xml中的配置
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher><!-- -->
<dispatcher>FORWARD</dispatcher>
2、struts自定义拦截器:
第一步:创建一个了类集成Struts中的 MethodFilterInterceptor
集成这个类的好处:
1、只需要重写一个方法
2、可以设置过滤哪个action不拦截
public class BOSLogininterceptor extends MethodFilterInterceptor {
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
// User user = (User) ServletActionContext.getRequest().getSession().getAttribute(“user”);
ActionProxy proxy = invocation.getProxy();
String actionName = proxy.getActionName(); //请求的地址
String namespace = proxy.getNamespace();
User user = BOSUtils.getUser();
if(user == null) {
//没有登录,跳转到登录的页面
return "login";
}else {
//登录了放行
return invocation.invoke();
}
}
}
第二步:在Spring的Application中配置自定义过滤器
<!-- 配置登录的拦截器 -->
<interceptors>
<interceptor name="bosLogininterceptor" class="com.puya.bos.web.interceptor.BOSLogininterceptor">
<!-- 放行不拦截的方法-->
<param name="excludeMethods">login</param>
</interceptor>
<!-- 定义一个拦截器栈,将自己的定义的拦截器添加进去,同时也将struts2的默认的拦截器栈也添加进去 -->
<interceptor-stack name="myStack">
<interceptor-ref name="bosLogininterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 将自定义的拦截器栈设置成默认的拦截器栈 -->
<default-interceptor-ref name="myStack"></default-interceptor-ref>
<!-- 全局结果集定义 -->
<global-results>
<result name="login">/login.jsp</result>
</global-results>
<!-- 需要进行权限控制的页面访问 -->
<action name="page_*_*">
<result type="dispatcher">/WEB-INF/pages/{1}/{2}.jsp</result>
</action>
<!-- 采用注解创建对象,类名就是简单类名的小写 -->
<action name="userAction_*" class="userActions" method="{1}">
<result name="home">/index.jsp</result>
</action>
</package>