基于控件的J2EE框架
来源:互联网 发布:适合w10的c语言 编辑:程序博客网 时间:2024/05/18 12:05
我在业余时间写了一个J2EE框架, 该框架基于控件并支持可视化界面设计,整个框架的组织结构类似于Delphi PHP。
使用该框架编程只需要从TForm类派生出自己的窗口类,并处理OnCreate事件和OnEvent事件,完全不必与HTML代码和JavaScript、VBScript代码打交道,在该框架中内置了TMenu(菜单控件)、TLabel(标签控件)、TButton(按钮控件)、TEdit(文本编辑框控件)、TMemo(文本区控件)、TCheckBox(复选框控件)、TDBUpdate(数据库更新组件)、TDBQuery(数据库查询组件)、 TListDB(列表框控件)、TComboDB(下拉式列表框控件)、TGridDB(表格控件) 、TPageControl(属性页控件) 、TForm(窗体控件) 、TApplication(应用程序组件)等支持面向对象设计的控件类,使用该框架可以进行快速Web应用程序开发,并且程序的设计过程类似于Delphi应用程序的开发,整个框架使用基于事件驱动的模型,Web应用程序开发者只需要在需要处理的事件中加上自己的Java代码即可,同时为了实现界面的可视化设计,我开发了一个用于自动生成界面代码的插件,该插件应用在C++ Builder上,它可以根据用户在窗体设计器上放置的控件自动生成对应的Java界面代码。
整个 框架的代码如下(包括演示Demo):
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.Vector;
import java.util.HashMap;
import java.util.StringTokenizer;
import java.sql.*;
class TGlobal
{static long ID_COUNT=0;static long ID_SESSION=0;static long ID_FORM=0;
static PrintWriter out;static HttpServletRequest request;static HttpSession session;
static TForm entry;static Connection datacon;static Vector formlist=new Vector();
static TSessionInt active=new TSessionInt(0);static TSessionByte state=new TSessionByte((byte)0);
static TSessionInt newin=new TSessionInt(0);
static void echo(String scriptstr)
{out.println(scriptstr);
}
static String getvalue(String keystr)
{return request.getParameter(keystr);
}
static TForm getnew()
{TForm form=(TForm)formlist.get(newin.get());
return form;
}
static String geturl()
{String use="http://"+request.getServerName()+request.getRequestURI()+"?EventForm="+newin.get();
return use;
}
//导航到另一个窗口
static void goform(TForm form)
{
active.set((int)form.markID);state.set((byte)1);
}
//关闭当前窗口
static void closeform()
{
state.set((byte)3);
}
//新建一个窗口
static void newform(TForm form)
{
state.set((byte)2);newin.set((int)form.markID);
}
static void addform(TForm form,boolean ismain)
{form.name=String.valueOf(ID_FORM);form.markID=ID_FORM;
formlist.add(form);ID_FORM++;if(ismain)entry=form;
}
static void setentry(TForm form)
{entry=form;
}
}
class TSessionBool
{
String name;boolean initvalue;
TSessionBool(boolean initvalue)
{
long temp=TGlobal.ID_SESSION;
name=String.valueOf(temp);
TGlobal.ID_SESSION++;
this.initvalue=initvalue;
}
void set(boolean value)
{
TGlobal.session.setAttribute(name,new Boolean(value));
}
boolean get()
{
Boolean temp=(Boolean)TGlobal.session.getAttribute(name);
if(temp==null)return initvalue;
else return temp.booleanValue();
}
}
class TSessionByte
{
String name;byte initvalue;
TSessionByte(byte initvalue)
{long temp=TGlobal.ID_SESSION;
name=String.valueOf(temp);
TGlobal.ID_SESSION++;
this.initvalue=initvalue;
}
void set(byte value)
{
TGlobal.session.setAttribute(name,new Byte(value));
}
byte get()
{
Byte temp=(Byte)TGlobal.session.getAttribute(name);
if(temp==null)return initvalue;
else return temp.byteValue();
}
}
class TSessionInt
{
String name;int initvalue;
TSessionInt(int initvalue)
{long temp=TGlobal.ID_SESSION;
name=String.valueOf(temp);
TGlobal.ID_SESSION++;
this.initvalue=initvalue;
}
void set(int value)
{
TGlobal.session.setAttribute(name,new Integer(value));
}
int get()
{
Integer temp=(Integer)TGlobal.session.getAttribute(name);
if(temp==null)return initvalue;
else return temp.intValue();
}
}
class TSessionLong
{
String name;long initvalue;
TSessionLong(long initvalue)
{long temp=TGlobal.ID_SESSION;
name=String.valueOf(temp);
TGlobal.ID_SESSION++;
this.initvalue=initvalue;
}
void set(long value)
{
TGlobal.session.setAttribute(name,new Long(value));
}
long get()
{
Long temp=(Long)TGlobal.session.getAttribute(name);
if(temp==null)return initvalue;
else return temp.longValue();
}
}
class TSessionFloat
{
String name;float initvalue;
TSessionFloat(float initvalue)
{long temp=TGlobal.ID_SESSION;
name=String.valueOf(temp);
TGlobal.ID_SESSION++;
this.initvalue=initvalue;
}
void set(float value)
{
TGlobal.session.setAttribute(name,new Float(value));
}
float get()
{
Float temp=(Float)TGlobal.session.getAttribute(name);
if(temp==null)return initvalue;
else return temp.floatValue();
}
}
class TSessionStr
{
String name;String initvalue;
TSessionStr(String initvalue)
{long temp=TGlobal.ID_SESSION;
name=String.valueOf(temp);
TGlobal.ID_SESSION++;
this.initvalue=initvalue;
}
void set(String value)
{
TGlobal.session.setAttribute(name,value);
}
String get()
{
String temp=(String)TGlobal.session.getAttribute(name);
if(temp==null)return initvalue;
else return temp;
}
}
interface FControl
{
void init();
void output();
void outscript();
void reset();
void setsize(int dx,int dy);
void setpos(int x,int y);
void setrect(int x,int y,int dx,int dy);
}
/*
interface FDataSet
{void reset();
}
*/
class TControl
{int x;int y;int cx;int cy;long markID;String name;
void autoname()
{markID=TGlobal.ID_COUNT;name=String.valueOf(markID);
TGlobal.ID_COUNT++;
}
public void outscript()
{
}
public void setsize(int dx,int dy)
{this.cx=dx;this.cy=dy;
}
public void setpos(int x,int y)
{this.x=x;this.y=y;
}
public void setrect(int x,int y,int dx,int dy)
{this.x=x;this.y=y;this.cx=dx;this.cy=dy;
}
//输出风格
void htmlstyle()
{TGlobal.echo(" style=/"left:"+this.x+";top:"+this.y+";width:"+this.cx+";height:"+this.cy+";position:absolute/"");
}
//输出名字
void htmlname()
{TGlobal.echo(" name=/""+this.name+"/"");
}
//public void setparent(container)
//public void getparent()
//public void setvisible()
//public void setunvisible()
//public boolean isvisible()
//public void setenable()
//public void setdisable
//public boolean isenabled()
}
class TLabel extends TControl implements FControl
{String caption;
//构造函数
TLabel(String caption)
{this.caption=caption;
}
//输出界面
public void output()
{TGlobal.echo("<NOBR");
htmlstyle();
TGlobal.echo(">"+caption+"</NOBR>");
}
//初始化
public void init()
{
}
//重置对象
public void reset()
{
}
}
class TButton extends TControl implements FControl
{String caption;
//输出界面
public void output()
{TGlobal.echo("<BUTTON type=/"button/" onclick=buttonclick("+this.name+")");
this.htmlname();this.htmlstyle();
TGlobal.echo(">");
TGlobal.echo(caption);
TGlobal.echo("</BUTTON>");
}
//构造函数
TButton(String caption)
{this.caption=caption;
this.autoname();
}
//初始化
public void init()
{
}
//重置对象
public void reset()
{
}
}
class TEdit extends TControl implements FControl
{TSessionStr text;
//输出界面
public void output()
{TGlobal.echo("<INPUT type=/"text/" value=/""+text.get()+"/"");
this.htmlname();this.htmlstyle();
TGlobal.echo(">");
}
//初始化
public void init()
{text.set(TGlobal.getvalue(name));
}
//重置数据
public void reset()
{text.set("");
}
//设置文本内容
void settext(String text)
{this.text.set(text);
}
//得到文本内容
String gettext()
{return text.get();
}
//构造函数
TEdit()
{text=new TSessionStr("");
this.autoname();
}
}
class TMemo extends TControl implements FControl
{TSessionStr text;int rows;int cols;
//输出界面
public void output()
{TGlobal.echo("<TEXTAREA");
this.htmlname();this.htmlstyle();htmlsize();
TGlobal.echo(">"+text.get()+"</TEXTAREA>");
}
//初始化
public void init()
{text.set(TGlobal.getvalue(name));
}
//重置数据
public void reset()
{text.set("");
}
//设置文本内容
void settext(String text)
{this.text.set(text);
}
//得到文本内容
String gettext()
{return text.get();
}
//输出尺寸
void htmlsize()
{TGlobal.echo(" rows="+rows+" cols="+cols);
}
//构造函数
TMemo(int rows,int cols)
{this.rows=rows;this.cols=cols;
this.autoname();text=new TSessionStr("");
}
//构造函数
TMemo()
{rows=7;cols=8;
this.autoname();text=new TSessionStr("");
}
}
class TCheckBox extends TControl implements FControl
{TSessionBool check;
//输出界面
public void output()
{
String checkstr=check.get()?" checked":"";
TGlobal.echo("<INPUT type=/"checkbox/" value=/"true/""+checkstr);
this.htmlname();this.htmlstyle();
TGlobal.echo(">");
}
//判断是否选中
boolean ischecked()
{return check.get();
}
//设置选中
void setcheck()
{check.set(true);
}
//取消选中
void setuncheck()
{check.set(false);
}
//构造函数
TCheckBox()
{check=new TSessionBool(false);
this.autoname();
}
//初始化
public void init()
{
String temp=TGlobal.getvalue(name);
if(temp==null){check.set(false);return ;}
if(temp.equals("true"))check.set(true);
else check.set(false);
}
//重置数据
public void reset()
{check.set(false);
}
}
class TFieldValue
{String field;String value;
}
class TDBUpdate
{Vector insertmap=null;String table;Connection con;
String keyfield;Statement command=null;
//构造函数
TDBUpdate(String table,String keyfield)throws SQLException
{this.table=table;this.keyfield=keyfield;con=TGlobal.datacon;
command=this.con.createStatement();
insertmap=new Vector();
}
//————————对单行记录进行操作——————//
//立即设置单元格的值(传入数值)
void setcell(long rowID,String fieldname,int value)throws SQLException
{String sql="UPDATE "+this.table+" SET "+fieldname+"="+value+" WHERE "+this.keyfield+"="+rowID;
command.executeUpdate(sql);
}
void setcell(long rowID,String fieldname,long value)throws SQLException
{String sql="UPDATE "+this.table+" SET "+fieldname+"="+value+" WHERE "+this.keyfield+"="+rowID;
command.executeUpdate(sql);
}
void setcell(long rowID,String fieldname,float value)throws SQLException
{String sql="UPDATE "+this.table+" SET "+fieldname+"="+value+" WHERE "+this.keyfield+"="+rowID;
command.executeUpdate(sql);
}
void setcell(long rowID,String fieldname,String value)throws SQLException
{String sql="UPDATE "+this.table+" SET "+fieldname+"='"+value+"' WHERE "+this.keyfield+"="+rowID;
command.executeUpdate(sql);
}
//立即得到单元格的值
String getcellstr(long rowID,String fieldname)throws SQLException
{String sql="SELECT "+fieldname+" FROM "+this.table+" WHERE "+this.keyfield+"="+rowID;
ResultSet record=command.executeQuery(sql);
return record.getString(fieldname);
}
int getcellint(long rowID,String fieldname)throws SQLException
{String sql="SELECT "+fieldname+" FROM "+this.table+" WHERE "+this.keyfield+"="+rowID;
ResultSet record=command.executeQuery(sql);
return record.getInt(fieldname);
}
long getcelllong(long rowID,String fieldname)throws SQLException
{String sql="SELECT "+fieldname+" FROM "+this.table+" WHERE "+this.keyfield+"="+rowID;
ResultSet record=command.executeQuery(sql);
return record.getLong(fieldname);
}
float getcellfloat(long rowID,String fieldname)throws SQLException
{String sql="SELECT "+fieldname+" FROM "+this.table+" WHERE "+this.keyfield+"="+rowID;
ResultSet record=command.executeQuery(sql);
return record.getFloat(fieldname);
}
//设置更新值或插入值(传入数值)
void updatecell(String fieldname,int value)
{TFieldValue use=new TFieldValue();
use.field=fieldname;use.value=String.valueOf(value);
insertmap.add(use);
}
void updatecell(String fieldname,long value)
{TFieldValue use=new TFieldValue();
use.field=fieldname;use.value=String.valueOf(value);
insertmap.add(use);
}
void updatecell(String fieldname,float value)
{TFieldValue use=new TFieldValue();
use.field=fieldname;use.value=String.valueOf(value);
insertmap.add(use);
}
void updatecell(String fieldname,String value)
{TFieldValue use=new TFieldValue();
use.field=fieldname;use.value="'"+value+"'";
insertmap.add(use);
}
//执行更新
void updaterow(long keyID)throws SQLException
{
String sql="UPDATE "+table+" SET ";
String temp="";
int size=insertmap.size();TFieldValue use;
for(int i=0;i<size;i++)
{
use=(TFieldValue)insertmap.get(i);
temp+=use.field;temp+="=";temp+=use.value;
if(i!=size-1)temp+=",";
}
sql+=temp;sql+=" WHERE ";
sql+=this.keyfield;sql+="=";sql+=keyID;
command.executeUpdate(sql);
insertmap.clear();
}
//执行插入
void insertrow()throws SQLException
{
String insertfields="";String insertvalues="";
int size=insertmap.size();TFieldValue use;
for(int i=0;i<size;i++)
{
use=(TFieldValue)insertmap.get(i);
insertfields+=use.field;insertvalues+=use.value;
if(i!=size-1)
{insertfields+=",";insertvalues+=",";
}
}
String sql="INSERT INTO "+this.table+"("+insertfields+") VALUES("+insertvalues+")";
command.executeUpdate(sql);
insertmap.clear();
}
//删除指定记录
void delrow(long keyID)throws SQLException
{String sql="DELETE FROM "+this.table+" WHERE "+this.keyfield+"="+keyID;
command.executeUpdate(sql);
}
//有条件的清空记录
void clear(String filter)throws SQLException
{String sql="DELETE FROM "+table+" WHERE "+filter;
command.executeUpdate(sql);
}
//清空所有记录
void clear()throws SQLException
{String sql="DELETE FROM "+table;
command.executeUpdate(sql);
}
}
class TDBQuery
{String table;Connection con;String keyfield;
ResultSet recordset=null;
TSessionLong activerow;Statement command=null;
TSessionStr filter;TSessionBool needfilter;
TSessionLong querystart;TSessionLong queryend;
//构造函数
TDBQuery(String table,String keyfield)throws SQLException
{this.table=table;this.keyfield=keyfield;con=TGlobal.datacon;
command=con.createStatement();
filter=new TSessionStr("");needfilter=new TSessionBool(false);
querystart=new TSessionLong(0);queryend=new TSessionLong(0);
}
//设置过滤器
void setfilter(String filter)
{this.filter.set(filter);needfilter.set(true);
}
//取消过滤器
void setunfilter()
{needfilter.set(false);
}
//打开第一条记录
void firstrecord(String fieldlist)throws SQLException
{
String sql;
if(needfilter.get())sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" order by "+keyfield+" desc";
else sql="SELECT top 1 "+fieldlist+" FROM "+table+" order by "+keyfield+" desc";
recordset=command.executeQuery(sql);
recordset.absolute(1);
long keyID=recordset.getLong(keyfield);
activerow.set(keyID);
}
//打开上一条记录
void prevrecord(String fieldlist)throws SQLException
{
String sql;long keyID=activerow.get();
if(needfilter.get())sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" and "+keyfield+"<"+keyID+" order by "+keyfield+" asc";
else sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+keyfield+"<"+keyID+" order by "+keyfield+" asc";
recordset=command.executeQuery(sql);
recordset.absolute(1);
keyID=recordset.getLong(keyfield);
activerow.set(keyID);
}
//打开下一条记录
void nextrecord(String fieldlist)throws SQLException
{
String sql;long keyID=activerow.get();
if(needfilter.get())sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" and "+keyfield+">"+keyID+" order by "+keyfield+" desc";
else sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+keyfield+">"+keyID+" order by "+keyfield+" desc";
recordset=command.executeQuery(sql);
recordset.absolute(1);
keyID=recordset.getLong(keyfield);
activerow.set(keyID);
}
//打开最后一条记录
void lastrecord(String fieldlist)throws SQLException
{
String sql;
if(needfilter.get())sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" order by "+keyfield+" asc";
else sql="SELECT top 1 "+fieldlist+" FROM "+table+" order by "+keyfield+" asc";
recordset=command.executeQuery(sql);
recordset.absolute(1);
long keyID=recordset.getLong(keyfield);
activerow.set(keyID);
}
//打开第一页
void firstpage(String fieldlist,int pagesize)throws SQLException
{
String sql;
if(needfilter.get())sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" order by "+keyfield+" desc";
else sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" order by "+keyfield+" desc";
recordset=command.executeQuery(sql);
}
//打开最后一页
void lastpage(String fieldlist,int pagesize)throws SQLException
{
String sql;
if(needfilter.get())sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" order by "+keyfield+" asc";
else sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" order by "+keyfield+" asc";
recordset=command.executeQuery(sql);
}
//打开上一页
void prevpage(String fieldlist,long pagestart,int pagesize)throws SQLException
{
String sql;
if(needfilter.get())sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" and "+keyfield+"<"+pagestart+" order by "+keyfield+" asc";
else sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+keyfield+"<"+pagestart+" order by "+keyfield+" asc";
recordset=command.executeQuery(sql);
}
//打开下一页
void nextpage(String fieldlist,long pageend,int pagesize)throws SQLException
{
String sql;
if(needfilter.get())sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" and "+keyfield+">"+pageend+" order by "+keyfield+" desc";
else sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+keyfield+">"+pageend+" order by "+keyfield+" desc";
recordset=command.executeQuery(sql);
}
//打开所有记录
void open(String fieldlist)throws SQLException
{
String sql;
if(needfilter.get())sql="SELECT "+fieldlist+" FROM "+table+" WHERE "+filter.get();
else sql="SELECT "+fieldlist+" FROM "+table;
recordset=command.executeQuery(sql);
}
//打开从属的记录
void openasdetail(String fieldlist,String masterfield,long masterkeyID)throws SQLException
{
String sql;
if(needfilter.get())sql="SELECT "+fieldlist+" FROM "+this.table+" WHERE "+filter.get()+" AND "+masterfield+"="+masterkeyID;
else sql="SELECT "+fieldlist+" FROM "+this.table+" WHERE "+masterfield+"="+masterkeyID;
recordset=command.executeQuery(sql);
}
//————————用于循环遍历整个记录集——————//
//移动到下一条记录
boolean movenext()throws SQLException
{return recordset.next();
}
//取得当前记录索引字段的值
long getkey()throws SQLException
{return recordset.getLong(keyfield);
}
//取得当前记录指定字段的值
String getvaluestr(String fieldname)throws SQLException
{return recordset.getString(fieldname);
}
int getvalueint(String fieldname)throws SQLException
{return recordset.getInt(fieldname);
}
long getvaluelong(String fieldname)throws SQLException
{return recordset.getLong(fieldname);
}
float getvaluefloat(String fieldname)throws SQLException
{return recordset.getFloat(fieldname);
}
//关闭数据集
void close()throws SQLException
{recordset.close();
}
}
class TCollectDB extends TControl
{TDBQuery dbselect;String listfield;TSessionLong selkeyID;
//得到选中项
long getsel()
{return selkeyID.get();
}
//设置选中项
void setsel(long selkeyID)
{this.selkeyID.set(selkeyID);
}
//初始化
public void init()
{
String temp=TGlobal.getvalue(name);
if(temp==null)selkeyID.set(-1);
else selkeyID.set(Long.parseLong(temp));
}
//重置数据
public void reset()
{selkeyID.set(-1);
}
//————————用于循环遍历整个记录集——————//
//打开记录集
void open()throws SQLException
{String fieldstr=dbselect.keyfield+","+listfield;
dbselect.open(fieldstr);
}
//移动到下一条记录
boolean movenext()throws SQLException
{return dbselect.movenext();
}
//得到当前记录
String currentitem()throws SQLException
{return dbselect.getvaluestr(listfield);
}
//得到当前记录的唯一索引
long currentitemkey()throws SQLException
{return dbselect.getkey();
}
//关闭记录集
void close()throws SQLException
{dbselect.close();
}
//————————设置数据绑定信息——————//
//指定列表字段
void setlistfield(String listfield)
{this.listfield=listfield;
}
//设置相关联的数据集
void setdbselect(TDBQuery data)
{this.dbselect=data;
}
//输出选项
void htmloption(long key,String value)
{TGlobal.echo("<OPTION value="+key+">"+value+"</OPTION>");
}
//输出选中的选项
void htmlseloption(long key,String value)
{TGlobal.echo("<OPTION value="+key+" selected>"+value+"</OPTION>");
}
}
class TListDB extends TCollectDB implements FControl
{int visualsize;
//输出界面
public void output()
{
long keyID;String value;long selrecord=selkeyID.get();
TGlobal.echo("<SELECT");
htmlname();htmlstyle();htmlvisualsize();
TGlobal.echo(">");
try
{
open();
while(movenext())
{keyID=currentitemkey();value=currentitem();
if(keyID==selrecord)htmlseloption(keyID,value);
else htmloption(keyID,value);
}
close();
}
catch(SQLException e){}
TGlobal.echo("</SELECT>");
}
//设置可视个数
void setvisualsize(int num)
{this.visualsize=num;
}
//输出可视个数
void htmlvisualsize()
{TGlobal.echo(" size="+this.visualsize);
}
//构造函数
TListDB(TDBQuery data,String listfield,int num)
{this.dbselect=data;this.listfield=listfield;
this.visualsize=num;selkeyID=new TSessionLong(-1);
this.autoname();
}
//构造函数
TListDB(TDBQuery data,String listfield)
{this.dbselect=data;this.listfield=listfield;
this.visualsize=8;selkeyID=new TSessionLong(-1);
this.autoname();
}
}
class TComboDB extends TCollectDB implements FControl
{
//输出界面
public void output()
{
long keyID;String value;long selrecord=selkeyID.get();
TGlobal.echo("<SELECT");
htmlname();htmlstyle();
TGlobal.echo(">");
try
{
open();
while(movenext())
{
keyID=currentitemkey();value=currentitem();
if(keyID==selrecord)htmlseloption(keyID,value);
else htmloption(keyID,value);
}
close();
}
catch(SQLException e){}
TGlobal.echo("</SELECT>");
}
//构造函数
TComboDB(TDBQuery data,String listfield)
{this.dbselect=data;this.listfield=listfield;
selkeyID=new TSessionLong(-1);
this.autoname();
}
}
class TCollectRAM extends TControl
{Vector data;TSessionInt selkeyID;
//初始化
public void init()
{
String temp=TGlobal.getvalue(name);
if(temp==null)selkeyID.set(-1);
else selkeyID.set(Integer.parseInt(temp));
}
//重置数据
public void reset()
{selkeyID.set(-1);
}
//得到选中项
int getsel()
{return selkeyID.get();
}
//设置选中项
void setsel(int selkeyID)
{this.selkeyID.set(selkeyID);
}
//输出选项
void htmloption(int key,String value)
{TGlobal.echo("<OPTION value="+key+">"+value+"</OPTION>");
}
//输出选中的选项
void htmlseloption(int key,String value)
{TGlobal.echo("<OPTION value="+key+" selected>"+value+"</OPTION>");
}
//添加子项
int additem(String item)
{data.add(item);
return data.size()-1;
}
//得到子项
String getitem(int index)
{
return (String)data.get(index);
}
int getsize()
{return data.size();
}
}
class TListRAM extends TCollectRAM implements FControl
{int visualsize;
//输出界面
public void output()
{
String value;int selrecord=selkeyID.get();
TGlobal.echo("<SELECT");
htmlname();htmlstyle();htmlvisualsize();
TGlobal.echo(">");
int size=getsize();
for(int i=0;i<size;i++)
{value=getitem(i);
if(i==selrecord)htmlseloption(i,value);
else htmloption(i,value);
}
TGlobal.echo("</SELECT>");
}
//设置可视个数
void setvisualsize(int num)
{this.visualsize=num;
}
//输出可视个数
void htmlvisualsize()
{TGlobal.echo(" size="+this.visualsize);
}
//构造函数
TListRAM(int num)
{data=new Vector();
this.visualsize=num;selkeyID=new TSessionInt(-1);
this.autoname();
}
//构造函数
TListRAM()
{data=new Vector();
this.visualsize=8;selkeyID=new TSessionInt(-1);
this.autoname();
}
}
class TComboRAM extends TCollectRAM implements FControl
{
//输出界面
public void output()
{
String value;int selrecord=selkeyID.get();
TGlobal.echo("<SELECT");
htmlname();htmlstyle();
TGlobal.echo(">");
int size=getsize();
for(int i=0;i<size;i++)
{value=getitem(i);
if(i==selrecord)htmlseloption(i,value);
else htmloption(i,value);
}
TGlobal.echo("</SELECT>");
}
//构造函数
TComboRAM()
{data=new Vector();selkeyID=new TSessionInt(-1);
this.autoname();
}
}
class TRAMData
{Vector data;
TRAMData()
{data=new Vector();
}
//添加子项
int additem(String item)
{data.add(item);
return data.size()-1;
}
//得到子项
String getitem(int index)
{
return (String)data.get(index);
}
//得到尺寸
int getsize()
{return data.size();
}
}
class TField
{HashMap mapdb;TDBQuery listsource;String listfield;
TRAMData mapram;
byte type;String alias;String fieldname;
//构造函数(普通)
TField(String fieldname,String alias)
{this.alias=alias;this.fieldname=fieldname;
type=0;
}
//构造函数(连接到数据库)
TField(String fieldname,String alias,TDBQuery listsource,String listfield)
{mapdb=new HashMap();this.listsource=listsource;this.listfield=listfield;
type=1;
}
//构造函数(连接到内存)
TField(String fieldname,String alias,TRAMData mapram)
{this.alias=alias;this.fieldname=fieldname;
this.mapram=mapram;type=2;
}
boolean isnormal()
{ if(type==0)return true;
else return false;
}
boolean islookup()
{if(type==1|| type==2)return true;
else return false;
}
boolean linkdata()
{if(type==1)return true;
else return false;
}
//加载查询列表
void load()
{
String fieldstr=listsource.keyfield+","+listfield;
mapdb.clear();
try
{
listsource.open(fieldstr);String value;long keyID;
while(listsource.movenext())
{
value=listsource.getvaluestr(listfield);
keyID=listsource.getkey();
mapdb.put(new Long(keyID),value);
}
listsource.close();
}
catch(SQLException e){}
}
String getvalue(long keyID)
{if(type==1)return (String)mapdb.get(new Long(keyID));
else return mapram.getitem((int)keyID);
}
}
class TSelRecord
{Vector selrows;int selcount;int activesel;
TSelRecord()
{selrows=new Vector();selcount=0;
}
int getsize()
{return selcount;
}
//得到选中的记录索引
long getonesel()
{Long use=(Long)selrows.get(0);
return use.longValue();
}
//移动到第一条选中记录
void movefirstsel()
{activesel=0;selcount=selrows.size();
}
//判断是否存在下一条选中记录
boolean hasnextsel()
{if(activesel<selcount)return true;
else return false;
}
//得到当前选中记录
long getsel()
{
Long use=(Long)selrows.get(activesel);
long ret=use.longValue();
activesel++;return ret;
}
void add(long item)
{selrows.add(new Long(item));
}
}
class TGridDB extends TControl implements FControl
{Vector fieldlist;TDBQuery dataset;int initwidth;
TSessionStr selstr;
int pagesize;TSessionLong pagestart;TSessionLong pageend;
//添加文本字段
public void addfield(String fieldname,String alias)
{
TField sfield=new TField(fieldname,alias);
fieldlist.add(sfield);
}
//添加数据库查询字段
public void addfield(String fieldname,String alias,TDBQuery listsource,String listfield)
{
TField sfield=new TField(fieldname,alias,listsource,listfield);
fieldlist.add(sfield);
}
//添加内存查询字段
public void addfield(String fieldname,String alias,TRAMData mapram)
{
TField sfield=new TField(fieldname,alias, mapram);
fieldlist.add(sfield);
}
//构造函数
public TGridDB(TDBQuery data,int initwidth)
{this.dataset=data;fieldlist=new Vector();
this.autoname();selstr=new TSessionStr("");
this.initwidth=initwidth;
}
//重置数据
public void reset()
{selstr.set("");
}
//输出脚本
public void outscript()
{TGlobal.echo("var selrows"+name+"=new Array(50);var numrows"+name+"=0;");
TGlobal.echo("function findrecord"+name+"(keyID){for(i=0;i<numrows"+name+";i++){if(selrows"+name+"[i].id==keyID)return true;}return false;}");
TGlobal.echo("function cancelselrecords"+name+"(){var selrecord;for(i=0;i<numrows"+name+";i++){selrecord=selrows"+name+"[i];selrecord.style.background=/"white/";}}");
TGlobal.echo("function onselrecord"+name+"(record){var eform=document.mainform;if(event.ctrlKey){if(!findrecord"+name+"(record.id)){selrows"+name+"[numrows"+name+"]=record;numrows"+name+"++;record.style.background=/"blue/";eform.selrecord"+name+".value=eform.selrecord"+name+".value+/"-/"+record.id;}}else{cancelselrecords"+name+"();record.style.background=/"blue/";selrows"+name+"[0]=record;numrows"+name+"=1;eform.selrecord"+name+".value=record.id;}}");
}
//输出界面
public void output()
{
String value; int num=fieldlist.size();TField item;long lookid;
String fieldstr="",head="",temp;
TGlobal.echo("<INPUT type=/"hidden/" name=/"selrecord"+this.name+"/" value=/"/">");
TGlobal.echo("<DIV onscroll=posheader(this,/"header"+name+"/",/"firstpage"+name+"/",/"prevpage"+name+"/",/"nextpage"+name+"/",/"lastpage"+name+"/") style=/"left:"+x+";top:"+y+";width:"+cx+";height:"+cy+";position:absolute;border-left:2pt outset;border-top:2pt outset;border-bottom:2pt ridge;border-right:2pt ridge;padding-left:2;padding-top:2;overflow:auto/">");
for (int i = 0; i <num; i++)
{item=(TField)fieldlist.get(i);
if(item.linkdata())item.load();
fieldstr+=item.fieldname;fieldstr+=",";
temp="<th>"+item.alias+"</th>";
head+=temp;
}
fieldstr+=dataset.keyfield;
TGlobal.echo("<TABLE width="+initwidth+" border=1 cellspacing=0 bordercolor=black bgcolor=white>");
TGlobal.echo("<TR id=header"+name+" style=/"position:relative;z-index:5;background-color:#C8FC60/">");
TGlobal.echo(head);
try
{
dataset.open(fieldstr);
while(dataset.movenext())
{
TGlobal.echo("<tr id="+String.valueOf(dataset.getkey())+" onclick=onselrecord"+name+"(this)>");
for (int i = 0; i <num; i++)
{
item=(TField)fieldlist.get(i);
if(item.islookup())
{
lookid=dataset.getvaluelong(item.fieldname);htmlcell(item.getvalue(lookid));
}
else
{
value=dataset.getvaluestr(item.fieldname);htmlcell(value);
}
}
}
dataset.close();
TGlobal.echo("<TR height=80><TD></TD>");
}
catch(SQLException e){}
TGlobal.echo("</TABLE>");
TGlobal.echo("<BUTTON id=firstpage"+name+" type=/"button/" style=/"position:absolute;width:80;height:40/" onclick=firstpage("+name+")>第一页</BUTTON>");
TGlobal.echo("<BUTTON id=prevpage"+name+" type=/"button/" style=/"position:absolute;width:80;height:40/" onclick=prevpage("+name+")>上一页</BUTTON>");
TGlobal.echo("<BUTTON id=nextpage"+name+" type=/"button/" style=/"position:absolute;width:80;height:40/" onclick=nextpage("+name+")>下一页</BUTTON>");
TGlobal.echo("<BUTTON id=lastpage"+name+" type=/"button/" style=/"position:absolute;width:80;height:40/" onclick=lastpage("+name+")>最后一页</BUTTON>");
TGlobal.echo("</DIV>");
}
void htmlcell(String value)
{TGlobal.echo("<td>"+value+"</td>");
}
public void init()
{
String temp=TGlobal.getvalue("selrecord"+name);
if(temp==null)selstr.set("");
else selstr.set(temp);
}
TSelRecord getsel()
{
long use;TSelRecord mn=new TSelRecord();
StringTokenizer fenxi=new StringTokenizer(selstr.get(),"-");
while(fenxi.hasMoreTokens())
{use=Long.parseLong(fenxi.nextToken());
mn.add(use);
}
return mn;
}
}
class TContainer extends TControl
{Vector controllist=new Vector();
//添加子控件
void addcontrol(FControl child)
{controllist.add(child);
}
void init()
{
FControl control;
int num=controllist.size();
for(int i=0;i<num;i++)
{ control=(FControl)controllist.get(i);
control.init();
}
}
//重置所有子控件
void reset()
{
FControl control;TDBQuery ds;
int num=controllist.size();
for(int i=0;i<num;i++)
{ control=(FControl)controllist.get(i);
control.reset();
}
}
//输出所有子控件的界面
void output()
{
FControl control;
int num=controllist.size();
for(int i=0;i<num;i++)
{ control=(FControl)controllist.get(i);
control.output();
}
}
//输出所有子控件的脚本
public void outscript()
{ FControl control;
int num=controllist.size();
for(int i=0;i<num;i++)
{
control=(FControl)controllist.get(i);
control.outscript();
}
}
}
class TTabSheet extends TContainer
{String caption;
TTabSheet(String caption)
{this.caption=caption;
autoname();
}
}
class TPageControl extends TControl implements FControl
{Vector sheetlist;TSessionInt selsheet;
void addsheet(TTabSheet item)
{sheetlist.add(item);
}
void setactive(int active)
{selsheet.set(active);
}
public void reset()
{
int num=sheetlist.size();TTabSheet item;
item=(TTabSheet)sheetlist.get(0);selsheet.set((int)item.markID);
for(int i=0;i<num;i++)
{
item=(TTabSheet)sheetlist.get(i);
item.reset();
}
}
TPageControl()
{sheetlist=new Vector();selsheet=new TSessionInt(-1);
autoname();
}
//输出界面
public void output()
{
int ptsel=selsheet.get();
TGlobal.echo("<INPUT type=/"hidden/" name=/"selsheet"+name+"/" value="+ptsel+">");
TGlobal.echo("<DIV style=/"left:"+x+";top:"+y+";width:"+cx+";height:"+cy+";position:absolute;border-left:2pt outset;border-top:2pt outset;border-bottom:2pt ridge;border-right:2pt ridge/">");
TGlobal.echo("<TABLE border=1 cellspacing=1 bgcolor=aqua height=26><TR>");
int num=sheetlist.size();TTabSheet item;
for(int i=0;i<num;i++)
{
item=(TTabSheet)sheetlist.get(i);
if(item.markID==ptsel)
TGlobal.echo("<TD id=caption"+item.name+" bgcolor=red onclick=ontabswitch"+name+"(this,"+item.name+")>"+item.caption+"</TD>");
else
TGlobal.echo("<TD id=caption"+item.name+" onclick=ontabswitch"+name+"(this,"+item.name+")>"+item.caption+"</TD>");
}
TGlobal.echo("</TABLE>");
for(int i=0;i<num;i++)
{
item=(TTabSheet)sheetlist.get(i);
if(ptsel==item.markID)
TGlobal.echo("<DIV id="+item.name+" style=/"left:0;top:26;position:absolute;visibility:visible/">");
else
TGlobal.echo("<DIV id="+item.name+" style=/"left:0;top:26;position:absolute;visibility:hidden/">");
item.output();
TGlobal.echo("</DIV>");
}
TGlobal.echo("</DIV>");
}
//产生脚本
public void outscript()
{
TGlobal.echo("var tabsheet"+name+";var sheetlabel"+name+";");
TGlobal.echo("function ontabswitch"+name+"(lab,ele)");
TGlobal.echo("{var eform=document.mainform;");
TGlobal.echo("var selsheet=eform.selsheet"+name+".value;");
TGlobal.echo("if(tabsheet"+name+"==null)tabsheet"+name+"=document.getElementById(selsheet);");
TGlobal.echo("if(sheetlabel"+name+"==null)sheetlabel"+name+"=document.getElementById(/"caption/"+selsheet);");
TGlobal.echo("tabsheet"+name+".style.visibility=/"hidden/";");
TGlobal.echo("sheetlabel"+name+".style.background=/"aqua/";");
TGlobal.echo("sheetlabel"+name+"=lab;sheetlabel"+name+".style.background=/"red/";");
TGlobal.echo("tabsheet"+name+"=document.getElementById(ele);");
TGlobal.echo("tabsheet"+name+".style.visibility=/"visible/";");
TGlobal.echo("eform.selsheet"+name+".value=ele;");
TGlobal.echo("}");
int num=sheetlist.size();TTabSheet item;
for(int i=0;i<num;i++)
{
item=(TTabSheet)sheetlist.get(i);
item.outscript();
}
}
//初始化
public void init()
{
String use=TGlobal.getvalue("selsheet"+name);
selsheet.set(Integer.parseInt(use));
int num=sheetlist.size();TTabSheet item;
for(int i=0;i<num;i++)
{
item=(TTabSheet)sheetlist.get(i);
item.init();
}
}
}
abstract class TForm extends TContainer
{String caption;
//private eventsource; private bkcolor;
void setcaption(String caption)
{this.caption=caption;
}
//显示正常的界面
void Show()
{TGlobal.echo("<HTML><HEAD><TITLE>"+caption+"</TITLE>");
TGlobal.echo("<script language=/"javascript/">");
eventscript();
outscript();
TGlobal.echo("</script>");
TGlobal.echo("</HEAD><BODY bgcolor=#D8D0C8>");
TGlobal.echo("<FORM name=/"mainform/" method=/"post/" action=/"app/">");
TGlobal.echo("<INPUT type=/"hidden/" name=/"EventType/" value=/"-1/"><INPUT type=/"hidden/" name=/"EventSource/" value=-1><INPUT type=/"hidden/" name=/"EventForm/" value=/""+name+"/">");
output();
TGlobal.echo("</FORM>");
TGlobal.echo("</BODY></HTML>");
}
//显示新建窗体的界面
void ShowNew()
{TGlobal.echo("<HTML><HEAD><TITLE>"+caption+"</TITLE>");
TGlobal.echo("<script language=/"javascript/">");
eventscript();
outscript();
TGlobal.echo("</script>");
TGlobal.echo("</HEAD><BODY");
TForm mn=TGlobal.getnew();
TGlobal.echo(" onload=window.open(/""+TGlobal.geturl()+"/",/"_blank/",/"top="+mn.y+",left="+mn.x+",width="+mn.cx+",height="+mn.cy+",menubar=yes,toolbar=no,location=yes,status=no,scrollbars=yes,resizable=yes/")");
TGlobal.echo(" bgcolor=#D8D0C8>");
TGlobal.echo("<FORM name=/"mainform/" method=/"post/" action=/"app/">");
TGlobal.echo("<INPUT type=/"hidden/" name=/"EventType/" value=/"-1/"><INPUT type=/"hidden/" name=/"EventSource/" value=-1><INPUT type=/"hidden/" name=/"EventForm/" value=/""+name+"/">");
output();
TGlobal.echo("</FORM>");
TGlobal.echo("</BODY></HTML>");
}
void eventscript()
{TGlobal.echo("function buttonclick(value){var eform=document.mainform;eform.EventType.value=/"ButtonClick/";eform.EventSource.value=value;eform.submit();}");
TGlobal.echo("function posheader(item,head,firstpage,prevpage,nextpage,lastpage){var header=document.getElementById(head);var firstbutton=document.getElementById(firstpage);var prevbutton=document.getElementById(prevpage);var nextbutton=document.getElementById(nextpage);var lastbutton=document.getElementById(lastpage);header.style.posTop=item.scrollTop-2;var comtop=item.scrollTop+item.offsetHeight-70;var sep=(item.offsetWidth-320)/5;firstbutton.style.posTop=comtop;prevbutton.style.posTop=comtop;nextbutton.style.posTop=comtop;lastbutton.style.posTop=comtop;firstbutton.style.posLeft=item.scrollLeft+sep;prevbutton.style.posLeft=item.scrollLeft+2*sep+80;nextbutton.style.posLeft=item.scrollLeft+3*sep+160;lastbutton.style.posLeft=item.scrollLeft+4*sep+240;}");
TGlobal.echo("function firstpage(value){var eform=document.mainform;eform.EventType.value=/"FirstPageClick/";eform.EventSource.value=value;eform.submit();}");
TGlobal.echo("function prevpage(value){var eform=document.mainform;eform.EventType.value=/"PrevPageClick/";eform.EventSource.value=value;eform.submit();}");
TGlobal.echo("function nextpage(value){var eform=document.mainform;eform.EventType.value=/"NextPageClick/";eform.EventSource.value=value;eform.submit();}");
TGlobal.echo("function lastpage(value){var eform=document.mainform;eform.EventType.value=/"LastPageClick/";eform.EventSource.value=value;eform.submit();}");
}
//窗口创建事件
public abstract void OnCreate();
//事件分发函数
void OnEvent()
{
long source=Long.parseLong(TGlobal.getvalue("EventSource"));
String type=TGlobal.getvalue("EventType");
if(type.equals("ButtonClick"))
{
OnButtonClick(source);
}
//Form2.LinkTo();
}
//按钮单击事件
public abstract void OnButtonClick(long eventsource);
}
abstract class TApplication extends HttpServlet
{boolean isfirst=true;
public void init()throws ServletException
{
run();
}
public void setconnection(Connection con)
{TGlobal.datacon=con;
}
abstract void run();
void htmlclose()
{TGlobal.echo("<HTML><HEAD><TITLE></TITLE></HEAD><BODY onload=window.close()></BODY></HTML>");
}
void prepare(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
request.setCharacterEncoding("GB2312");
TGlobal.request=request;
response.setContentType("text/html;charset=GB2312");
TGlobal.out=response.getWriter();
TGlobal.session=request.getSession();
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
isfirst=true;doPost(request,response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
TForm form;int temp;byte mn;
prepare(request,response);
//TGlobal.setactive();
String name=request.getParameter("EventForm");
if(name==null)form=TGlobal.entry;
else
{temp=Integer.parseInt(name);
form=(TForm)TGlobal.formlist.get(temp);
TGlobal.active.set(temp);
}
if(!isfirst)
{
form.init();form.OnEvent();
}
else
{
isfirst=false;form.reset();form.OnCreate();
}
mn=TGlobal.state.get();
if(mn==(byte)1) //转向
{
TGlobal.state.set((byte)0);
temp=TGlobal.active.get();
form=(TForm)TGlobal.formlist.get(temp);
form.reset();form.OnCreate();
form.Show();
}
else if(mn==(byte)2) //新建
{
TGlobal.state.set((byte)0);form.ShowNew();
}
else if(mn==(byte)3) //关闭
{
TGlobal.state.set((byte)0);htmlclose();
}
else form.Show();
}
}
//————————————————————演示程序的代码————————————————————//
class TLoginForm extends TForm
{
TPageControl PageControl1;TTabSheet TabSheet1;TGridDB DBGrid1;TButton Button1;TButton Button2;TButton Button3;TLabel Label1;
TLoginForm()
{
setcaption("应用程序主窗口");
PageControl1=new TPageControl();
TabSheet1=new TTabSheet("界面");PageControl1.addsheet(TabSheet1);
Label1=new TLabel("标签");
Label1.setrect(80,8,65,33);TabSheet1.addcontrol(Label1);
DBGrid1=new TGridDB(Entire.da,400);
DBGrid1.setrect(40,56,497,265);TabSheet1.addcontrol(DBGrid1);
Button1=new TButton("修改");
Button1.setrect(112,336,73,41);TabSheet1.addcontrol(Button1);
Button2=new TButton("删除");
Button2.setrect(240,336,81,41);TabSheet1.addcontrol(Button2);
Button3=new TButton("新建窗口");
Button3.setrect(376,336,97,41);TabSheet1.addcontrol(Button3);
PageControl1.setrect(40,24,585,425);addcontrol(PageControl1);
DBGrid1.addfield("english","姓名");
DBGrid1.addfield("chinese","年龄");
}
public void OnCreate()
{
}
public void OnButtonClick(long eventsource)
{
if(eventsource==Button3.markID)
{TGlobal.newform(Entire.form2);
}
}
}
class TSubForm extends TForm
{
TPageControl PageControl1;TTabSheet TabSheet1;TEdit Edit1;TMemo Memo1;TCheckBox CheckBox1;TButton Button2;TTabSheet TabSheet2;TListRAM ListBox1;TComboRAM ComboBox1;TButton Button1;TTabSheet TabSheet3;TEdit Edit3;TButton Button4;TEdit Edit2;TButton Button3;
TSubForm()
{
setcaption("Child Form");setpos(0,0);setsize(800,400);
PageControl1=new TPageControl();
TabSheet1=new TTabSheet("Card1");PageControl1.addsheet(TabSheet1);
Edit1=new TEdit();
Edit1.setrect(56,48,129,28);TabSheet1.addcontrol(Edit1);
Memo1=new TMemo();
Memo1.setrect(32,96,201,169);TabSheet1.addcontrol(Memo1);
CheckBox1=new TCheckBox();
CheckBox1.setrect(280,40,129,41);TabSheet1.addcontrol(CheckBox1);
Button2=new TButton("Button2");
Button2.setrect(280,152,137,57);TabSheet1.addcontrol(Button2);
TabSheet2=new TTabSheet("Card2");PageControl1.addsheet(TabSheet2);
ListBox1=new TListRAM();
ListBox1.additem("yang");ListBox1.additem("xue");ListBox1.additem("dong");ListBox1.setrect(40,40,169,169);TabSheet2.addcontrol(ListBox1);
ComboBox1=new TComboRAM();
ComboBox1.additem("Hello");ComboBox1.additem("How do you do");ComboBox1.additem("My name is join");ComboBox1.setrect(248,48,185,28);TabSheet2.addcontrol(ComboBox1);
Button1=new TButton("Button1");
Button1.setrect(264,160,121,57);TabSheet2.addcontrol(Button1);
TabSheet3=new TTabSheet("Card3");PageControl1.addsheet(TabSheet3);
Edit3=new TEdit();
Edit3.setrect(128,56,153,28);TabSheet3.addcontrol(Edit3);
Button4=new TButton("Button4");
Button4.setrect(120,144,185,65);TabSheet3.addcontrol(Button4);
PageControl1.setrect(56,24,497,321);addcontrol(PageControl1);
Edit2=new TEdit();
Edit2.setrect(80,360,153,28);addcontrol(Edit2);
Button3=new TButton("Button3");
Button3.setrect(296,360,89,41);addcontrol(Button3);
}
public void OnCreate()
{
Edit1.settext("Yang");
}
public void OnButtonClick(long eventsource)
{
/* if(eventsource==button1.markID)
{
edit1.settext("The selected option is:"+listram1.getsel());
}
if(eventsource==button2.markID)
{
close();
}
*/
}
}
class Entire
{static TLoginForm form1;static TSubForm form2;
static TDBQuery da;
}
public class App extends TApplication
{
Connection con;
void run()
{
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException e){}
try
{con=DriverManager.getConnection("jdbc:odbc:yang","","");
setconnection(con);
}
catch(SQLException e){}
try{Entire.da=new TDBQuery("dictionary","id");}
catch(SQLException e){}
Entire.form1=new TLoginForm();TGlobal.addform(Entire.form1,true);
Entire.form2=new TSubForm();TGlobal.addform(Entire.form2,false);
}
}
欢迎J2EE编程爱好者与我交流编程心得,本人的邮箱为yangxuedong2000@163.com,移动电话为15814676195(深圳),现处于找工作状态中。
- 基于控件的J2EE框架
- 基于J2EE的JDFrame框架
- 基于J2EE规范的TeaFramework框架(毕业设计用于学习J2EE写的一个框架)
- 基于J2EE技术的SSH框架的改进-笔记
- 框架一瞥(基于J2EE)
- 框架一瞥(基于J2EE)
- 基于SPRING构建J2EE框架
- 基于多框架的J2EE快速开发方法
- 基于J2EE多层架构的Web开发框架研究
- 基于代码生成器的J2EE智能开发框架 JEECG
- 基于springmvc+mybatis搭建的J2EE快速开发框架
- 基于J2EE的Blog平台
- 基于J2EE的Blog平台
- 基于J2EE的Blog平台
- 基于JBoss的J2EE应用
- 基于J2EE的Blog平台
- 基于j2ee的web应用
- 基于J2EE的分布式数据库
- 得到所有窗口
- P2P与IPTV的技术演化进展4
- Linux脚本编写基础
- P2P与IPTV的技术演化进展3
- Linux系统命令汇总之系统备份常用命令
- 基于控件的J2EE框架
- P2P与IPTV的技术演化进展2
- 十七条黄金定律(拿破仑·希尔)
- 瀑布模型、渐增模型/演化/迭代、原型模型、螺旋模型具体有什么区别?
- Windows2003系统下,上传较大的文件时,出现“Request 对象 错误 'ASP 0104 : 80004005'”错误
- 自定义消息映射
- P2P与IPTV的技术演化进展1
- C#2.0类和对象学习系列之属性
- c#.net函数和方法集