struts拦截器使用
创建拦截器类
public class MyIntercept extends MethodFilterInterceptor {
@Autowired
RolePrivilegeService rolePrivilegeService;
@Override
protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
//从session域中取出用户信息
User user =(User)ServletActionContext.getRequest().getSession().getAttribute("SYS_USER");
//查询权限数据列表
List<String> privilegeList = rolePrivilegeService.findByUid(user);
//判断权限数据列表是否为空
if (privilegeList != null){
for (String privilege:privilegeList){
//判断是否具有该权限
if ("nsfw".equals(privilege)){
//代理action,执行方法
return actionInvocation.invoke();
}
}
}
return "false";
}
}
拦截器注册
在对应的package中注册拦截器
<!--进行拦截器的注册操作-->
<interceptors>
<interceptor name="MyIntercept" class="com.dsm.intercept.MyIntercept">
<!--指定当前方法拦截器对象要进行拦截的方法对象-->
<param name="includeMethods">nsfw_frame</param>
<!-- 指定对doThird方法不进行过滤操作 -->
<!-- <param name="excludeMethods">doThird</param> -->
</interceptor>
<!--进行一个拦截器栈的注册操作-->
<interceptor-stack name="MyInterceptStack">
<interceptor-ref name="MyIntercept"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
在action中添加拦截器
<action name="*_*" class="com.dsm.action.NsfwAction" method="{1}_{2}">
<!--返回结果-->
<result name="success">/WEB-INF/jsp/{1}/{2}.jsp</result>
<result name="false">/WEB-INF/jsp/noPermissionUI.jsp</result>
<interceptor-ref name="MyInterceptStack"></interceptor-ref>
</action>