用easyjweb快速实现增删查改

 

新建一个名为customerweb工程,我们要实现的对customer进行简单的增删查改功能,而其他功能,如验证暂不实现。话不多说,马上开始吧。

1、业务层简单开发

·模型设计

       myapp.domain包下新建Customer.java代表Customer模型,该模型包含属性有用户编号,姓名,性别,年龄,住址,邮件等信息,年龄用枚举类Gender表示。代码如下:

package myapp.domain;
public class Customer {
    private Long id;
    private String name;
    private int age;
    private Gender gender;
    private String address;
    private String email;
   
    // getter and setter方法
}
 
 

 

 

 

·DAO层设计

应用的持久化功能由DAO负责,实现对实体的增删查改功能。本例中仅作演示用,故不对实体进行持久化操作,而是用Java容器来代替,详见代码。

public interface ICustomerDao {
    Long addEntity(Customer instance);
    boolean delEntity(Long id);
    Customer getEntity(Long id);
    boolean updateEntity(Long id, Customer instance);
    Collection<Customer> getEntityList();
    List<Customer> findEntityListByName(String name);
}
 

 

 

 

·Service层设计

    Dao封装了对底层的操作,service层获得Dao层的对象来实现上层相应的服务。Easyjweb框架有一个内置的IOC容器,可以通过该容器将IcustomerDao接口对象注入到ICustomerService,降低了应用的耦合度,并能方便实现customer的添删改查。IOC容器的实现见配置文件部分。

public interface ICustomerService {
    Long addCustomer(Customer instance);
    Customer getCustomer(Long id);
    boolean delCustomer(Long id);
    boolean updateCustomer(Long id,Customer instance);
    Collection<Customer> getCustomerList();
    List<Customer> findCustomer(String name);
}
 

 

 

 

2、控制层简单开发

·Controller设计

       Easyjweb应用的控制器是一个Action,每个Action必须实现IwebAction接口并实现execute方法,如Hello示例中所示。Easyjweb框架还为我们提供了许多IWebAction接口的实现类,能够提供许多强大的功能,比如AbstractCmdActionAbstractCrudAction等。

       先简单介绍这两个类。AbstractCmdActionIWebAction接口的实现类,在请求中我们可以通过使用cmd传递的参数值作为请求执行的方法名的构成。构成的规则为doXxxx()。其中Xxxx表示的是首字母大写后的该值。比如请求的是xxx.ejf?cmd=edit,则会调用doEdit或者edit方法并返回适当的页面,方便快速。相见AbstractPageCmdAction部分介绍。AbstractCrudAction类间接继承了AbstractCmdAction,是处理普通数据表的添删改查(CRUD)处理的抽象类,用户只需继承该Action,并根据自身的情况实现其中的模板方法即可。具体见AbstractCrudAction部分。

所以,我们创建的控制器CustomerAction就继承AbstractCrudAction,只要实现父类的抽象方法即可快速实现增删改查的功能。另外,在CustomerAction中我们再次利用easyjweb框架内置的IOC容器,往Action中注入IcustomerService对象,实现增删改查服务。由于本程序添加了根据姓名查找实体功能,故增加了一个doFind方法,查找所有同名的customer

 

@Action
public class CustomerAction extends AbstractCrudAction {
    @Inject
    private ICustomerService service;
   
    public void setService(ICustomerService service) {
       this.service = service;
    }
   
    protected Object findEntityObject(Serializable id) {
       return service.getCustomer((Long) id);
    }
 
    protected void removeEntity(Serializable id) {
       service.delCustomer((Long) id);
    }
   
    protected void saveEntity(Object object) {
       service.addCustomer((Customer)object);
    }
 
    protected void updateEntity(Object object) {
       service.updateCustomer(((Customer)object).getId(), (Customer)object);
    }
 
    protected IPageList queryEntity(IQueryObject queryObject) {   
       Collection<Customer> collection = service.getCustomerList();
       IQuery query = new ListQuery(toList(collection));
       IPageList pageList = new PageList(query);
       pageList.doList(10, 1, "", "");
       return pageList;
    }
   // 添加一个按姓名查找方法
    public void doFind(WebForm form) {
       String name = CommUtil.null2String(form.get("name"));
       List<Customer> list = service.findCustomer(name);
       form.addResult("list", list);
       page("list");
    }
    // 其他代码
}
 

 

 

3、视图层简单开发

·视图设计

easyjweb集成了velocity页面显示技术,可以选择使用velocity开发试图页面。Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言来引用由java代码定义的对象。接下来简单介绍velocity的基本语法,详细可以参考相关文档。

赋值 #set

#set($a = ‘Velocity”),这样就可以在页面中利用$a表示‘Velocity”字串

条件判断 #if, # elseif, #end

  #if($a)     #end

循环 #foreach

#foreach($customer in #list)

  $customer.name

#end

 

easyjweb的默认视图路径为WEB-INF/views,在该目录下新建customer目录,创建list.tmedit.html。详细代码。

 

4、 配置文件

web.xml文件的配置跟hello示例相同,还需要配置WEB-INF/easyjf-web.xml文件,需要两点配置:1、框架需要扫描的包,即你设置的Action所在包。2easyjwebIOC容器,在CustomerServiceImpl实现类中注入CustomerDaoImpl对象。

<?xml version="1.0" encoding="utf-8"?>
<easyjf-web>
  <framework-setting>
     <property name="com.easyjweb.defaultActionPackages">
         myapp.action
     </property>
  </framework-setting>
  <beans>
     <bean name="customerService" class="myapp.service.impl.CustomerServiceImpl">
         <property name="customerDao" ref="customerDao" />
     </bean>
     <bean name="customerDao" class="myapp.dao.impl.CustomerDaoImpl"/>
  </beans>
</easyjf-web>
 

 

你可能感兴趣的:(DAO,Web,velocity,IOC,webform)