zoukankan      html  css  js  c++  java
  • Struts 2 读书笔记使用PreResultListener

          PreResultListener是要给监听器接口,他可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调。

          Struts 2 可以由ActionInvocation的addPreResultListener()方法来完成。

          Struts 2 可以由Action和拦截器添加PreResultListener监听器。当为Action添加了改监听器,该监听器就可以再应用转入到实际物理视图之前回调该监听器的beforeResult()方法;当为拦截器添加监听器后,该监听器会对该拦截器所拦截的所有action都起作用。如:

     1 public class LoginRegistAction extends ActionSupport{
     2     private String username;           //用户名
     3     private String password;           //密码
     4     private String tip;                //封装结果
     5     
     6     public String getUsername() {
     7         return username;
     8     }
     9     public void setUsername(String username) {
    10         this.username = username;
    11     }
    12     public String getPassword() {
    13         return password;
    14     }
    15     public void setPassword(String password) {
    16         this.password = password;
    17     }
    18     public String getTip() {
    19         return tip;
    20     }
    21     public void setTip(String tip) {
    22         this.tip = tip;
    23     }
    24     
    25     //Action包含的注册控制逻辑
    26     public String regist(){
    27         ActionContext.getContext().getSession().put("user", getUsername());
    28         return SUCCESS;
    29     }
    30     
    31     //Action包含的登陆控制逻辑
    32     public String login(){
    33         ActionInvocation actionInvocation = ActionContext.getContext().getActionInvocation();
    34         
    35 actionInvocation.addPreResultListener(new PreResultListener(){
    36             public void beforeResult(ActionInvocation action,String resultCode){
    37                 System.out.println("返回的逻辑视图名字为:"+resultCode);
    38                 //在返回resultCode之前加入一个额外的数据
    39                 action.getInvocationContext().put("extra", new java.util.Date()+"由"+resultCode+"逻辑视图转入");
    40                 }
    41         });
    42         
    43         if(getUsername().equals("chenssy")&&getPassword().equals("chentmt")){
    44             ActionContext.getContext().getSession().put("user", getUsername());
    45             setTip("欢迎,"+getUsername()+",您已经成功登陆!");
    46             return SUCCESS;
    47         }
    48         else {
    49             return ERROR;
    50         }
    51     }
    52 }

          上面的红色字体代码就示范了为Action添加PreResultListener,这样改监听器就可以在转入物理视图之前激发该监听器

           输入正确的用户名和密码登陆后,就可以得到如下页面:

          

          通过上面我们可以看到,通过使用PreResultListener监听指定Action转入不同Result的细节。

     

          读李刚《轻量级java EE企业应用实战(第三版)—struts 2+Spring 3+Hibernate整合开发》

     

    PS:如果你觉得文章对你有所帮助,别忘了推荐或者分享,因为有你的支持,才是我续写下篇的动力和源泉!
  • 相关阅读:
    C++11 并发指南四(<future> 详解三 std::future & std::shared_future)(转)
    转: 关于 ssl的建立链接的过程
    工信部电信投诉网站入口
    rfc 标准文档目录
    转: 七牛云的开源播放器的使用指南
    转: Android基于HLS和RTMP协议的第三方SDK选择
    转:Android中Context详解 ---- 你所不知道的Context
    android开发推荐书籍列表
    转:java 类名 this 的使用
    转: android studio 消除SDK更新时的“https://dl-ssl.google.com refused”错误
  • 原文地址:https://www.cnblogs.com/chenssy/p/2589706.html
Copyright © 2011-2022 走看看