来公司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();
}