对中软R1平台的一些想法以及来公司3天的感受

来源:互联网 发布:windows 7摄像头 编辑:程序博客网 时间:2024/05/16 19:15

        来公司3天了,感觉还不错,无论从技术上还是同事方面。无论最后是否能留下来都是笔宝贵的财富。呵呵,当然,我对自己还是有信心的。

        R1平台是公司从中软引进的,我们这批新来的据说就是为了培训这个新平台。初次接触看到,以为就是个简单的eclipse插件,后来见到它的整个架构,原来是个快速开发平台,它把“一切”都封装了。Model全部封装在servlet和handler,servlet继承自它自己的一个类ServletBase,Handler主要是封装业务逻辑。而controler还是按照一般的架构由servlet或者部署文件控制。整个系统采用servlet的filter技术进行权限控制和字符转换等处理。

        采用这个平台开发与数据库交互的应用很简单,首先建立个连接(在R1 studio,一个插件),在建立个DAO对象,你可以选择同时生成VO(Value Object)。然后建立servlet,会自动生成一个servlet和handler。handler封装了对于数据库的增、删除、改、搜、批量增、批量删等操作,其实是通过一个DAOFactory来实现,不过你必须在DAO中提供主键,它依据这个主键来进行此类操作。而servlet进行流程控制,获取表单数据,进行处理和交给javabean,然后forward到JSP文件。建立JSP文件,R1只是提供了个功能很简陋的模板,包括分页程序,如果要实际使用,你恐怕要自己写咯。R1把一个查询出来的结果放在List里面,然后传入request,再传到具体的页面。对于判断操作类型,根据JSP文件提交的表单中的隐藏的operate属性进行判断是何种操作,然后调用相应的handler中的方法。以上只是个简单的流程,毕竟我也才接触两天。

主要类的参考代码如下:

 

DAO类

 

     package com.icss.test.demo.baseinfomanage.dao;

import java.sql.Connection;

import com.icss.j2ee.dao.DAO;
import com.icss.j2ee.dao.DAOException;

public class RmstestDAO extends DAO {

    public String id;
    public String name;

    public RmstestDAO(){
        super();
    }

    public RmstestDAO(Connection conn){
        super(conn);
    }

    public java.lang.String getId(){
        return id;
    }
    public void setId(java.lang.String _id){
        firePropertyChange("id",id,_id);
        id = _id;
    }
    public java.lang.String getName(){
        return name;
    }
    public void setName(java.lang.String _name){
        firePropertyChange("name",name,_name);
        name = _name;
    }
    protected void setupFields() throws DAOException {
        addField("id","ID");
        addField("name","NAME");
        setTableName("RMSTEST");
        addKey("ID");                    //提供主键
    }

    }

VO类:

package com.icss.test.demo.baseinfomanage.vo;


import com.icss.j2ee.vo.ValueObject;

public class RmstestVO1 extends ValueObject {

    public String id;
    public String name;

    public java.lang.String getId(){
        return id;
    }
    public void setId(java.lang.String _id){
        id = _id;
    }
    public java.lang.String getName(){
        return name;
    }
    public void setName(java.lang.String _name){
        name = _name;
    }
}

 

 

servlet类片段:

 

try{
   conn = getConnection("java:comp/env/jdbc/cigmisdb");
   
   String id = request.getParameter("id");
         String name = request.getParameter("name");
         String operate=request.getParameter("operate");
         if(id==null)
               id="";
         if(name==null)
               name="";
        
        RmstestDAO rmstestDAO = new RmstestDAO();
           rmstestDAO.setId(id);  //设置主键


            RmstestHandler rmstestHandler = new RmstestHandler(conn);
            if(operate.equals("insert")) {
               rmstestDAO.setName(name);
               rmstestHandler.create(rmstestDAO);
            }else if(operate.equals("modify")) {
               rmstestDAO.setName(name);
               rmstestHandler.update(rmstestDAO,true);
            }else if(operate.equals("remove")) {
                rmstestHandler.delete(rmstestDAO);
            }
   String dist ="/servlet/baseinfomanage/MyServlet";
   forward(request,response,dist);
  }catch(Exception e){
   handleError(e) ;
  }finally{.....}

 

Handler类片段:

 

 public RmstestHandler(Connection conn){
        this.conn=conn;
        factory = new DAOFactory(conn);
    }

    public void create(RmstestDAO rmstestDAO)throws DAOException{
        rmstestDAO.setConnection(conn);
        rmstestDAO.create();
    }

    public void update(RmstestDAO rmstestDAO,boolean updateByPrimaryKey)throws DAOException{
        rmstestDAO.setConnection(conn);
        rmstestDAO.update(updateByPrimaryKey);
    }

    /** 参数DAO中必须含有主键
      * 否则请使用batchDelete方法
      */
    public void delete(RmstestDAO rmstestDAO)throws DAOException{
        rmstestDAO.setConnection(conn);
        rmstestDAO.delete();
    }

    /** 没有找到与RmstestDAO相应的VO
      * 所以查询结果返回的是DAO的List
      */
    public List find(RmstestDAO rmstestDAO)throws DAOException{
        factory.setDAO(rmstestDAO);
        List result = factory.find();
        return result;
    }

    /** 没有找到与RmstestDAO相应的VO
      * 所以查询结果返回的是DAO的实例
      */
    public RmstestDAO findByPrimaryKey(RmstestDAO rmstestDAO)throws DAOException{
        factory.setDAO(rmstestDAO);
        return (RmstestDAO)factory.findByPrimaryKey();
    }

    public void batchUpdate(RmstestDAO rmstestDAO)throws DAOException{
        factory.setDAO(rmstestDAO);
        factory.batchUpdate();
    }

    public void batchDelete(RmstestDAO rmstestDAO)throws DAOException{
        factory.setDAO(rmstestDAO);
        factory.batchDelete();
    }

 

 

 

 

原创粉丝点击