<pre name="code" class="html"><?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="t" extends="struts-default">
<!-- 总的声明拦截器,告诉系统有那些拦截器 -->
<interceptors>
<!-- 声明一个拦截器,指定具体的拦截器为哪个java文件 -->
<interceptor name="a" class="com.leonyip.test.struts.interceptor.PermissionInterceptor" />
<!-- 声明一个拦截器栈 -->
<interceptor-stack name="cc">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="a"/>
</interceptor-stack>
</interceptors>
<global-results>
<result name="login">/login.jsp</result>
</global-results>
<action name="scope" class="com.leonyip.test.struts.action.ScopeAction">
<result>/scope.jsp</result>
<!-- 用名为a的拦截器对Action进行拦截 -->
<interceptor-ref name="a"></interceptor-ref>
</action>
<action name="scope1" class="com.leonyip.test.struts.action.ScopeAction1">
<result>/scope.jsp</result>
</action>
<action name="scope2" class="com.leonyip.test.struts.action.ScopeAction2">
<result>/scope.jsp</result>
</action>
</package>
<package name="fileUpload" extends="struts-default">
<!--
因为struts2中如文件上传,数据验证,封装请求参数到action等功能都是由系统默认的defaultStack中的拦截器实现的,
所以我们定义的拦截器需要引用系统默认的defaultStack,这样应用才可以使用struts2框架提供的众多功能。
-->
<interceptors>
<interceptor name="permission" class="com.leonyip.test.struts.interceptor.PermissionInterceptor" />
<interceptor-stack name="permissionStack">
<!-- 使用系统默认的拦截器"defaultStack" -->
<interceptor-ref name="defaultStack" />
<interceptor-ref name="permission" />
</interceptor-stack>
</interceptors>
<global-results>
<result name="login">/login.jsp</result>
</global-results>
<!-- 第一种使用两个拦截器的形式 -->
<action name="upload" class="com.leonyip.test.struts.action.UploadAction">
<result>/showimg.jsp</result>
<interceptor-ref name="defaultStack" />
<interceptor-ref name="permission" />
</action>
<!-- 第二种使用两个拦截器的形式 -->
<action name="upload1" class="com.leonyip.test.struts.action.UploadAction1">
<result>/showimgs.jsp</result>
<interceptor-ref name="permissionStack" />
</action>
</package>
</struts>
<pre name="code" class="java">public class PermissionInterceptor implements Interceptor {
public void destroy() {
// TODO Auto-generated method stub
}
public void init() {
// TODO Auto-generated method stub
}
public String intercept(ActionInvocation invocation) throws Exception {
Map<String, Object> session = invocation.getInvocationContext().getSession();
if(session.get("loginedUser")!=null){
//已经登录
return invocation.invoke();//继续进行后面的任务
}else{
//没有登录
return "login";
}
}
}