天下之事,必先处之难,而后易之。

Struts2学习笔记之自定义拦截器

Struts2学习笔记
第十 记: 自定义 拦截器
注: 以用户登录拦截为例, session 为空 不允许 操作。
1、编写Action方法类
public class UserAction{
   private String message;
   public String getMessage(){
         return this.message;
   }
   public void setMessage(String message){
         this.message=message;
    }
   public String execute() throw Exception{
      //do something
       return "success";//设置想要到达的视图
    }
    //................
}
2、Session实现用户登录拦截
原理:判断Session中用于记录用户的登录状态是否为空。
设置Session的属性值,在login.jsp页面设置:
<%
User user=new User("zhangsan","123456");
request.getSession().setAttribute("user",user);
%>
使用EL表达式接收页面消息: ${message}
3、实现自定义拦截器
自定义拦截器需要实现Interceptor接口:
public class MyInterceptor 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 {
       Object user=ActionContext.getContext().getSession().get("user");
      if(user!=null)return invocation.invoke();
      else{
            ActionContext.getContext.put("message","用户无该操作权限!");
            return "message";
      }
   }
}
4、struts.xml下配置消息页面和注册拦截器
<!-- 配置消息页面 -->
<global-results>
<result name="message">/WEB-INF/page/message.jsp</results>
<result name="success">/WEB-INF/page/index.jsp</results>
</global-results>
  </global-results>
<!-- 配置Action类 -->
  <action name="list_*" class="com.struts.action.UserAction" method="{1}"></action>
<!-- 注册拦截器 -->
<interceptors>
<interceptor name="promission" class="com.struts.interceptor.MyInterceptor"></interceptor>
</interceptors>
5、拦截器的引用
在action中的引用
<action name="user" class="com.struts.action.UserAction">
<interceptor-ref name="permission"/>
</action>
注:在action中引用拦截器时,默认的拦截器会失效。
6、拦截器栈
为了解决自定义拦截器影响而使struts2的默认拦截器失效,故引入堆栈。
<interceptor-stack name="permissionStack">
<interceptor-ref name="defaultStack"/><!-- 必须先调用默认的栈拦截器实现 -->
<interceptor-ref name="permission"/>
</interceptor-stack>
设置全局的默认拦截器:
<default-interceptor-ref name="permissionStack"/>
注:全局的默认拦截器与<interceptors></interceptors>同级。



posted @ 2023-04-30 00:38  boonya  阅读(5)  评论(0编辑  收藏  举报  来源
我有佳人隔窗而居,今有伊人明月之畔。
轻歌柔情冰壶之浣,涓涓清流梦入云端。
美人如娇温雅悠婉,目遇赏阅适而自欣。
百草层叠疏而有致,此情此思怀彼佳人。
念所思之唯心叩之,踽踽彳亍寤寐思之。
行云如风逝而复归,佳人一去莫知可回?
深闺冷瘦独自徘徊,处处明灯影还如只。
推窗见月疑是归人,阑珊灯火托手思忖。
庐居闲客而好品茗,斟茶徐徐漫漫生烟。

我有佳人在水之畔,瓮载渔舟浣纱归还。
明月相照月色还低,浅近芦苇深深如钿。
庐山秋月如美人衣,画堂春阁香气靡靡。
秋意幽笃残粉摇曳,轻轻如诉画中蝴蝶。
泾水潺潺取尔浇园,暮色黄昏如沐佳人。
青丝撩弄长裙翩翩,彩蝶飞舞执子手腕。
香带丝缕缓缓在肩,柔美体肤寸寸爱怜。
如水之殇美玉成欢,我有佳人清新如兰。
伊人在水我在一边,远远相望不可亵玩。