首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

struts2-中的自定义拦截器(16)

2012-08-27 
struts2---中的自定义拦截器(16)16、struts2中的自定义拦截器业务需求:如果用户登录--访问action中的所有

struts2---中的自定义拦截器(16)

16、struts2中的自定义拦截器
业务需求:
如果用户登录-->访问action中的所有方法
如果用户没有登录,不允许访问action中的方法,并提示没有权限执行该操作
user.jsp{
 //设置用户登录的状态,放session中
}
request.getSession().getAttribute("user","itcast");
request.getSession().removeAttribute("user");

拦截器要实现拦截器的接口
public class PermissionInterceptor implements Interceptor{
 public void destory(){};
 public void init(){};
 public String intercept(ActionInvocation invocation) throws Exception{
  return null;
 }
}
struts启动时会实例化拦截器,用init(),主要是interceptor拦截Action
invocation.invoke();
public String intercept(ActionInvocation invocation) throws Exception{
 Object user=ActionContext.getContext().getSession().get("user");
 if(user!=null") return invocation.invoke();
 ActionContext.getContext().put("message","你没有访问权限";
 return "success";
}
定义拦截器
<interceptor name="permission" class="cn.itcast.interceptor.PermissionInterceptor"/>
</interceptor>
<global-result>
 <result name="success">/WEB-INF/page/message.jsp</result>
</global-result>
在Action使用拦截器
<action name="list_*" class="cn.itcast.action.HelloWordAction method="{1}">
 <interceptor-ref name="permission"/>
</action>
上面会短路内置的拦截器
<interceptor-stack name="permissionStack">
 <interceptor-ref name="defaultStack">
 </interceptor-ref>
 <interceptor-ref name="permission"/>
</interceptor-stack>

<default-interceptor-ref name="permissionStack"/>
在包底下的Action都可以运用这个拦截器
如果action引用了默认就会实现
如果在action中运用多个就添加多个

热点排行