今天才知道struts还有Preparable接口,实现此接口需要实现其prepare()方法,调用action中其他方法之前会先调用prepare()方法。此接口和方法可以用于初始化一些数据。

测试代码:

package cn.qlq.action;import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;@Namespace("/")
@ParentPackage("default")
public class FirstAction extends ActionSupport implements Preparable {private static final long serialVersionUID = 1L;private String test;@Overridepublic void prepare() throws Exception {System.out.println("这是所有方法前的处理");}@Action(value = "test", results = { @Result(name = "success1", location = "/index2.jsp", type = "redirect") ,@Result(name = "error", location = "/index2.jsp") ,@Result(name = "success" ,type = "json" , params = {"root","test"}) })@Overridepublic String execute() throws Exception {test = "test";return super.execute();}public String getTest() {return test;}public void setTest(String test) {this.test = test;}}

当我们访问execute方法的时候会先执行prepare()方法。

  另外,当action种有一个方法叫做haha(),我们可以定义一个prepareHaha()方法,则在访问haha()之前会先访问prepareHaha(),再访问prepare(),最后访问haha(),如下代码:

package cn.qlq.action;import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;@Namespace("/")
@ParentPackage("default")
public class FirstAction extends ActionSupport implements Preparable {private static final long serialVersionUID = 1L;private String test;@Overridepublic void prepare() throws Exception {System.out.println("这是所有方法前的处理");}@Action(value = "test", results = { @Result(name = "success1", location = "/index2.jsp", type = "redirect") ,@Result(name = "error", location = "/index2.jsp") ,@Result(name = "success" ,type = "json" , params = {"root","test"}) })@Overridepublic String execute() throws Exception {test = "test";return super.execute();}public void prepareHaha() {System.out.println("haha 执行前面");}@Action(value = "haha" ,results ={@Result(name = "success", location = "/index2.jsp", type = "redirect")} )public String haha() throws Exception {return super.execute();}public String getTest() {return test;}public void setTest(String test) {this.test = test;}}

结果:

  haha 执行前面
  这是所有方法前的处理

struts2 中 Preparable 接口实现数据准备相关推荐

  1. Struts2实现Preparable接口和【struts2】继承ActionSupport类

    Struts2实现Preparable接口 实现preparable接口,实现public void prepare() throws Exception 方法.当你访问某问action指定方法之前, ...

  2. springboot项目拦截器中获取接口返回数据_Spring Boot自定义Annotation实现接口自动幂...

    在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同.按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重 ...

  3. struts2中表现层的数据展现(bean,list,iterator,format,etc)

    假定在Action中通过get/set了绑定了一个ModelAndView 的bean,用于渲染页面的数据.在实际的开发中,这个bean可能包含了各种页面需要的信息,因此会相当复杂. 设定:bean ...

  4. Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...

    Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn   发布于:2012-09-15 ...

  5. Struts2中采用Json返回List对象数据为空解决方案

    Struts2中采用Json返回List对象数据为空解决方案 参考文章: (1)Struts2中采用Json返回List对象数据为空解决方案 (2)https://www.cnblogs.com/wa ...

  6. boot spring 接口接收数据_在 Spring Boot 中使用 Dataway 配置数据查询接口

    Dataway介绍 Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具.使得使用者无需开发任何代码就配置一个满足需求的接口. 整个接口配置.测试.冒烟.发布.一站式都通过 ...

  7. java从端口获取数据库_Java之通过接口获取数据并用JDBC存储到数据库中

    最近做数据同步功能,从接口获取数据然后存到数据库中以便后续对数据进行相关操作,下面就贴一下相关代码. 1 import com.alibaba.fastjson.JSON; 2 import com. ...

  8. antd pro中如何使用mock数据以及调用接口

    antd pro的底层基础框架使用的是dva,dva采用effect的方式来管理同步化异步 在dva中主要分为3层 services  models  components models层用于存放数据 ...

  9. vue获取接口数据_c#中HttpWebRequest调用接口获取数据

    c#中HttpWebRequest调用接口获取数据PART  01-封装接口 将post请求进行封装,以便调用使用: /// /// 请求后台地址/// 请求参数/// public string P ...

最新文章

  1. 关于深度残差收缩网络,你需要知道这几点
  2. 查看Unix/Linux的CPU个数和内存大小,系统位数(转载)
  3. 将Python源码编译成pyc和pyo文件
  4. Linux执行yum不显示时间图形,Linux停的yum命令详解(朝花夕拾)
  5. 基础功能-tensorflow使用gpu
  6. 2021年科技赋能中医药产业发展报告
  7. android listview 向上自动滚动效果,Android通过代码控制ListView上下滚动的方法
  8. Python操作文件文档
  9. Oracle新建数据库和用户及表空间
  10. 信息论基础——消息,信息,信号区别 信息的度量
  11. osgearth 利用经纬度得到高程
  12. 20220906_C52单片机学习笔记 | LED闪烁
  13. 诗歌九 声律启蒙(云对雨,雪对风,晚照对晴空)
  14. Leo个人MSN简明使用手册
  15. 仅 300 员工却垄断全球,几亿一台还供不应求……
  16. cad页面布局快捷键_CAD页面设置管理器快捷键命令(如何设置页面布局)
  17. 中国传媒大学GPA算法
  18. 使用MySQL管理工具-SQLyog 9.63报错号码2058,超详细解析
  19. 计算机用户名密码不知道了怎么改,电脑系统账号administrator设置了密码,密码忘记了怎么办?...
  20. 基于Java毕业设计研究生推免系统源码+系统+mysql+lw文档+部署软件

热门文章

  1. wifi动不动就断开_手机信号满格,但是WIFI经常掉线!我来教你怎么办
  2. 计算机机房规范管理,计算机中心机房建设及管理规范.doc
  3. js调用python脚本_javascript – 如何从NodeJs调用python脚本
  4. php功能与特性,PHP 6将实现的8个特性和功能
  5. mysql大于等于怎么写_数据库中大于等于0小于等于100怎样表达
  6. idea可以使用flash框架吗_这个框架厉害了,使用它几分钟就可以编写一个微信插件...
  7. 进入页面先刷新一次_转盘抽奖分享得积分,防止页面被恶意
  8. java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  9. 使用Poi读取xlsx类型的Excel
  10. 看看那些令你惊叹的PCB设计艺术