在struts2 in action中所见,这样封装后省去了大部分crud反复代码。尽管还不能理悟。先记下来。

abstract class BaseAction extends ActionSupport {

	protected DB db;
protected static Log log = LogFactory.getLog(BaseAction.class);
private long requestId;
private boolean readOnly = false;
private String mappedRequest; @SkipValidation
public String show(){
setReadOnly(true);
setMappedRequest(Constants.LIST);
return SUCCESS;
} @SkipValidation
public String add(){
setMappedRequest(Constants.SAVE);
return SUCCESS;
} public String save(){
db.save(getModel());
return list();
} @SkipValidation
public String edit(){
setMappingRequest(Constants.UPDATE);
return SUCCESS;
} public String update(){
db.save(getModel());
return list();
} @SkipValidation
public String destroy(){
setReadOnly(true);
setMappingRequest(Constants.REMOVE);
return Constants.SUCCESS;
} public String remove(){
db.remove(getModel());
return list();
} @SkipValidation
public String list(){
setMappingedRequest(Constants.LIST);
return Constants.LIST;
} public String getActionClass(){
return getClass().getSimpleName();
} public String getDestination(){
return getClass().getSimpleName();
} public String getActionMethod(){
return mappedRequest;
} public void setActionMethod(String method){
this.mappedRequest = method;
} public void setMappedRequest(String actionMethed){
this.mappedRequest = getActionClass() + "_" + actionMethed;
log.debug("setting mappedRequest to "+ getActionClass() + "_" + actionMethed);
} public void setReadOnly(boolean readOnly){
this.readOnly = readOnly;
log.debug("setting readOnly to "+readOnly);
} public long getRequestId(){
return requestId;
} public void setRequestId(long requestId){
this.requestId = requestId;
} public void setDb(DB db){
this.db = db;
} public boolean isReadOnly(){
return readOnly;
} public abstract Object getModel();
}

public class MemberAction extends BaseAction implements ModelDriven,Preparable {

	private Member model;

	public Member getModel(){
return model;
} public void prepare() throws Exception{
if(getRequestId() == 0){
model = new Member();
}else{
model = (Member) db.get(getRequestId);
}
}
}

struts2 一个CRUD的BaseAction的更多相关文章

  1. Hello Mybatis 01 第一个CRUD

    What's the Mybatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google c ...

  2. Struts2的crud

    struts2的crud引出的问题: 1.当Action里面有其他类的实例引用属性时,当要用请求参数为该对象的属性赋值时,如何将其压入栈顶. 2.当有的操作(list)不需要创建该属性的实例对象时,或 ...

  3. Struts2的CRUD操作

    Struts之CRUD 1何为CRUD:CRUD代表的是一个框架的Create(增),Read(读取),update(更新),Delete(删除) 2怎么做呢?? 其实Struts2的CRUD与现实的 ...

  4. 瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!!

    瞧一瞧,看一看呐用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在不 ...

  5. 用MVC+EF快速弄出一个CRUD

    瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在 ...

  6. 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序

    使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...

  7. struts2 一个简洁的struts.xml

    struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUB ...

  8. 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章  ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...

  9. struts2一个和多个文件上传及下载

    struts2的文件上传相比我们自己利用第三方jar包(commons-fileupload-1.2.1.jar   commons-io-1.3.2.jar )要简单的多,当然struts2里面也是 ...

随机推荐

  1. XAMPP--Apache服务无法启动问题定位及处理

    一.问题简述: XAMPP 在使用一段时间后,Apache服务无法启动. 二.详细描述: 安装Xampp服务器套件之后,部署使用正常.一段时间未使用,再次打开时,Apache服务无法启动.错误提示如下 ...

  2. grunt 全局使用

    grunt 不同地方使用时需要将插件下载的当前文件夹,这是因为查找模块时是当前路径,这会造成多个工程使用时会需要下载多次,而这些东西又不应该存在于工程之中,所以应该将所有模块全局安装,然后在工程下面只 ...

  3. Java多线程学习笔记(四)——Thread类中方法介绍

    currentThread():返回代码正在被哪个线程调用. public class CurrentThreadWay { public static void main(String[] args ...

  4. Python自学-1-基本概念问题

    C语言适合开发那些追求运行速度.充分发挥硬件性能的程序. Python是用来编写应用程序的高级编程语言. Python提供了 第三方库 & 基础代码库(覆盖了网络.文件.GUI.数据库.文本等 ...

  5. kdump机制和crash常见使用

    kdump简介 kdump是系统崩溃的时候,用来转储运行内存的一个工具. 系统一旦崩溃,内核就没法正常工作了,这个时候将由kdump提供一个用于捕获当前运行信息的内核, 该内核会将此时内存中的所有运行 ...

  6. Spring资源访问接口Resource

    该接口拥有对不同资源类型的实现类 boolean exists() 资源是否存在 boolean isOpen() 资源是否打开 URL getURL() 如果底层资源可以表示成URL,则该方法返回对 ...

  7. python3 的range

    1. range(3):从0到2: 2. range(3,10,2):从3到10,隔一个数显示一个: 3.list(range(3,10,-2):结果为空: 4. S[::2] : 同隔一个数显示一个 ...

  8. vue父组件向子组件传递参数

    父组件中引用的子组件 <pics :is-pics="showpics" // 这是我们要传递的参数 :is-product="productMsg" : ...

  9. vue列表渲染,以及鼠标点击改变样式的问题

    在实际项目中,我们进场会遇到鼠标点击该表某个DOM元素的样式,在原生的js或者jquery中,我们会比较熟练的实现这个需求,但是在vue中怎么实现呢? 直接操作DOM?NO!NO! 既然我们的项目使用 ...

  10. Java 字符串总结

    三种字符串类:String,StringBuilder,StringBuffer String类 1. 常用构造器 构造器   public String(char value[])   public ...