一、 Preparable接口

1.有prepare()方法,实现该接口的action在执行时,首先执行该方法,用于进行一些预处理。
2.创建prepareXXX方法,则在执行XXX方法前,将先执行prepareXXX方法.

二、ModelDriven接口

1.该接口实现将T类中的属性展现到action中,action中不再需要针对T类,写set,get方法
2.注意preparable与modeldriven执行顺序,必须保证getmodel在prepare之前调用。

实现了ModelDriven就必须实现getModel这个方法,该方法返回的是你的ModelDrivern泛型中设定的实体类(就是父类抽出来的公共方法中的泛型)。

其实是为了实现代码的重用,不要再定义一次你在数据访问层定义的属性了,直接用那个类就行了。

三、执行顺序:

prepare->prepareInput->input->getModel.

参照下面例子:

假设请求为:http://127.0.0.1:8080/employee_input.action

且我们的类结构如下:

BaseAction.java

public class BaseAction extends ActionSupport {

}

CRUDAction.java

import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable; public abstract class CRUDAction<T> extends BaseAction implements ModelDriven<T>, Preparable {
// 具体的CRUD方法抽取
CRUD Method; // 保证执行input方法时执行下面规定的prepareInput():因为方法名对应二次参数绑定拦截器
public abstract void prepareInput() throws Exception; @Override
public void prepare() throws Exception {
// 留空
} }

具体实现EmployeeAction.java

public class EmployeeAction extends CRUDAction<Employee> {
// 具体的实现CRUD , 如excute(){};save(){};delete(){};等等
CRUD Method; public String input() {
    }

    @Override
public void prepareInput() throws Exception {
// 省略其他设置
    // 设置查询,回显数据,在更新方法中中解决属性丢失问题
    }

    @Override
/** 驱动模型 */
public Employee getModel() {
return employee;
}
//省略其他设置
}

顺序:

1 . CRUDaction-------prepare()

2 . EmployeeAction---prepareInput()

3 . EmployeeAction---input()

4 . EmployeeAction---getModel()

ModelDriven & Preparable 接口的更多相关文章

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

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

  2. struts2 中 Preparable 接口实现数据准备

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

  3. Struts2之ModelDriven和Preparable拦截器

    首先struts.xml文件配置如下 默认拦截器设置为paramsPrepareParamsStack <package name="default" namespace=& ...

  4. (转)实现这两个接口ModelDriven<T>,Preparable有什么用?

    转:http://www.cnblogs.com/guanghuiqq/archive/2012/08/24/2654300.html 实现了ModelDriven就必须实现getModel这个方法, ...

  5. 6. ModelDriven拦截器、Preparable 拦截器

    1. 问题 Struts2 的 Action 我们将它定义为一个控制器,但是由于在 Action 中也可以来编写一些业务逻辑,也有人会在 Action 输入业务逻辑层. 但是在企业开发中,我们一般会将 ...

  6. struts2 ModelDriven 和 Preparable 拦截器

    Struts2 运行流程图-1

  7. ModelDriven 和 Preparable 拦截器

    Params 拦截器 Parameters 拦截器将把表单字段映射到 ValueStack 栈的栈顶对象的各个属性中. 如果某个字段在模型里没有匹配的属性, Param 拦截器将尝试 ValueSta ...

  8. Struts2 - ModelDriven 拦截器、Preparable 拦截器

    开篇:拦截器在Struts中的作用 在我们的web.xml中,我们配置了一个过滤器,实现将所有请求交付StrutsPrepareAndExecuteFilter类.一旦接受到任意action的请求,该 ...

  9. 接触Struts2的ModelDriven<>接口

    最近在学SSH框架,实战项目,用到了Struts2的ModelDriven<>接口,在这做一点记录 ModelDriven,意为模型驱动,意思是直接把实体类当成页面数据的收集对象 参考他人 ...

随机推荐

  1. Lua Linux环境下安装

    首先下载Lua包 解压缩 进入执行make linux 如果碰到lua.c:67:31: fatal error: readline/readline.h: No such file or direc ...

  2. Unity实现混合模式的ADD模式

    一般来说,2D的特效都会用到ADD模式来播放,但是Unity居然没有内置任何的混合模式,网上资料太少,没有写好的Shader,这里提供下我自己编写Shader: Shader "Unlit/ ...

  3. Linux好用的工具命令 - nl/du

    nl 添加行号后打印输出文本内容,以下例子演示了cat 和nl 输出nlDemo文档的区别. [root@ptarmiganantelope:~]# cat nlDemo root:x:0:0:roo ...

  4. 【spark 深入学习 03】Spark RDD的蛮荒世界

    RDD真的是一个很晦涩的词汇,他就是伯克利大学的博士们在论文中提出的一个概念,很抽象,很难懂:但是这是spark的核心概念,因此有必要spark rdd的知识点,用最简单.浅显易懂的词汇描述.不想用学 ...

  5. js绝对地址图片转换成base64的方法

    //将图片转换成base64 function getBase64Image(url, callback){ var canvas = document.createElement('canvas') ...

  6. [转]mysql大表更新sql的优化策略

    看了该文章之后,很受启发,mysql在update时,一般也是先select.但注意,在Read Committed隔离级别下,如果没有使用索引,并不会锁住整个表, 还是只锁住满足查询条件的记录而已. ...

  7. PHP最全笔记(二)(值得收藏,不时翻看一下)

    /* [goto]5.3+ 版本 */用来跳转到程序中的某一指定位置该目标位置可以用目标名称 加上冒号来标记.PHP中的goto有一定限制,只能在同一个文件和作用域中跳转,    也就是说你无法跳出一 ...

  8. vue项目在安卓低版本机显示空白原因

    vue项目在安卓低版本机显示空白原因: 可能的原因一: 查看安卓debug,报错,可能有箭头函数语法错误,或者其他语法问题,那可能是ES6语法问题. 这时候需要安装babel-pollyfill. 网 ...

  9. Tensorflow 使用slim框架下的分类模型进行分类

    Tensorflow的slim框架可以写出像keras一样简单的代码来实现网络结构(虽然现在keras也已经集成在tf.contrib中了),而且models/slim提供了类似之前说过的object ...

  10. python使用上下文对代码片段进行计时,非装饰器

    之前发过了一组常用的装饰器,包括了一个where_is_it_called的装饰器,可以计时和对入参和返回结果,被何处调用进行记录,十分强大. 这是用上下文,上下文的好处是,不需要抽成函数才能计时. ...