struts2拦截器

    技术2023-05-23  66

    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>
    Processed: 0.011, SQL: 9