杨氏框架的自动代码功能
承蒙朋友们抬爱,把这个框架命名为杨氏框架,那我就不客气了。我起的英文名字,大家记住,Yangs Frame。
现在杨氏框架在师弟师妹的努力下已经日趋完善,也已经在项目中开始使用。可是我知道我们的框架当然需要有很多提高的地方,所以这里我要提出一些新的要求。
框架的发展
杨氏框架将在下面的方向进行发展,或者说经历下面的几个阶段:
前台和后台代码的自动生成功能(这也是我这篇文章将要说明的)
系统程序的模块化(如果第一步能够实现,那么第二步将会很容易了)
提升效率(包括数据库连接资源池、数据的缓存、数据库的并发以及全局变量的使用等)
等上面的三部分基本都实现了,那么框架就很成熟了
自动代码功能
之所以要提这个功能,是因为我觉得杨氏框架还不够智能。如果一个数据表的结构改变,那么首先我们要修改数据库,同时要修改前台页面,还要修改后台生成sql语句的类。工作量是巨大的。所以我希望能够引入配置文件的功能,从而实现代码的自动生成。
实现架构
架构图如图1所示:这里我假定的是理想情况,不需要做任何修改,那么使用E-R图生成的Sql语句和XML是绝对一致的。SQL语句用来生成数据库,XML文件用来生成前台页面和后台代码,所以三者之间是高度一致的。
/li>
XML文件
XML文件的结构应该如下所示(仅供参考)
?View Code XML<?xml version="1.0" ?>
<tables>
<table name="UserData">
<column name="UserName" type="text" unique="true" empty="false" NickName="姓名">
<column name="PassWord" type="text" unique="false" empty="false" NickName="密码">
<column name="Sex" type="bit" options="Male|Female" values="0|1" NichName="性别">
<column name="Dept" type="Table:Department:PID|DeptName" NickName="部门">
……………..
</table>
………………
</tables>
其中的name和数据库表中的某一列的列名,数据类型,是否唯一,是否为空都需要定义。另外NickName指的是别名,用来在前台Form表单进行显示。为了保证效率,可以在Tomcat运行时就将该XML文件载入内存,存放在全局变量中,这样前台和后台都可以直接使用。
前台代码(所有的代码都是伪代码,我现在已经退化到不会写代码了)
前台代码我想采用自定义标签的形式,前台调用方式会很简单:
?View Code JSP<MyTag:Autoform tablename="UserData" />
后台处理的Java程序也并不难,但是可能会复杂,因为要考虑的情况很多:
?View Code JAVAthis.tablename=tablename;//get which form you want to generate
autoform.getTable(tablename);//get the table info from the xml stored in Memory as Application variable
out.print("<form name= action= method=>");
for(i=1; i<autoform.columnnumber;i++)
{
if(column[i].type="text")
{
out.print(column.nickname+"<input name=\""+column.name+"\" >");//generate [...]
更多本类文章
- Chrome OS:Google的贸然行动
- 推荐两款免费的文本编辑器
- 微软免费杀软MSE
- 开始测试使用遨游3浏览器
- 这一坨没用的浏览器
- 我的Firefox插件
- 推荐Winrar替代品:免费压缩软件7z
- 浏览器知识扫盲
- 关于计算机的引导问题
- 无插件实现WordPress留言本
- 编程的坏习惯之备份文件
- 老杨首页图片幻灯实现方法
- 编程的坏习惯之百密一疏
- 编程的坏习惯之贸然开工
- 开始整理编程的坏习惯
- 使用Windows7自带Windows Media Center播放RMVB影片
- 用个性邮箱打造统一账号
- 微博客服务
- 拥有自己域名后缀的邮箱
- 使用Godaddy的免费FTP空间同步本地文件
- 使用Godaddy的免费空间
- 我的wordpress插件
- 有仇必报的百度
- 关于暴风影音引发的网络瘫痪
- 批量下载163相册工具AlbumCon
- Cannot start session without errors错误解决
- 一句CSS代码实现圆角边框
- 使用新的Wordpress编辑器TinyMCE Advanced
- 用邮箱管理邮箱
- 如何关注网站
- Gravatar
- 开始玩转微博客
- 在Ubuntu下使用Apache配置Subversion
- 在Ubuntu下使用ies4linux安装IE
- 在Ubuntu下使用Nvidia驱动实现双屏复制显示
- 在你的博客中使用Google Gears
- UE还是UI?
- 我喜欢的浏览器
- Windows Mobile和WinCE的区别
- C#中创建文件夹代码
- 为网站添加WAP功能
- MVC的核心控制器
- 从Windows7升级到Windows Xp
- 框架的初步定型
- CSS中的!important还真重要
- 动态调用JavaBean的set方法(续)
- 动态调用JavaBean的set方法
- WordPress的自作主张
- 什么才是安全
- 基本确定的开发环境
- 我想象的框架结构
- Ubuntu的窗口玻璃效果
- Ubuntu下安装Telnet
- 禁用Ubuntu的开机文件检查
- Ubuntu下的中文桌面
- Ubuntu下Firefox Flash插件中文乱码解决
- Ubuntu下使用飞信
- 代码高亮工具推荐
- 解决Firefox在Ubutntu下Flash播放器没有声音的问题
- Ubuntu下使用QQ
- Ubuntu的更新源
- 学习Linux从Ubuntu开始
- 使用Servlet过滤器实现用户登录验证
- 数据库的设计
- 准备换一种开发模式
- 关于理想空间的免费主机
- WordPress中永久链接的作用
- WordPress2.6的中文Tag标题显示Bug
- 推荐一个Flickr的Slideshow
- Java和JSP中下载文件文件名中文乱码问题
- Wordpress插件推荐 Wordpress Thread Comment
- 在C#中使用DataTable存储数据
- C#中得到文件夹下文件
- C#实现汉字转全拼拼音
- 整理C#笔记
- 使用.htaccess文件设置网站防盗链
- 理想空间新推100M免费空间
- 访问SemorHome的最快方式
- BSBJ9:试用JDBC连接数据库
- BSBJ8:带有参数的JSP和Servlet
- BSBJ7:JSP版本的HelloWorld
- BSBJ6:Servlet的工作原理
- BSBJ5:JSP初步之Servlet
- 轻松卸载Vista(其实不轻松)
- 免费wordpress主机测试征集
- 用好WordPress的Database Backup插件
- 恨死IE6了
- 流氓来袭
- 使用JSTL读取XML文件
- 使用Java通过DOM读取XML
- 雅可比迭代求解线性方程组C语言
- 龙贝格方法求积分C程序
- 在Java和JSP中使用Jdom读取XML
- BSBJ4:Tomcat的运行原理
- BSBJ3:Tomcat的安装
- BSBJ2:Java的安装
- BSBJ1:关于B/S系统结构
- 基于Java语言的B/S系统构建(序)
- 撤掉Google广告
- Semor推荐:Wordpress插件cos-html-cache
- Windows远程登陆Linux桌面的方法
- Semor推荐:理想空间
- 牛顿差值算法c语言
- Wordpress数据转移
- 关于域名的使用
- Semor推荐:Flex音乐网站Anywhere.Fm
- New version of Gmail
- 使用wordpress的ping功能
- Semor推荐:Firefox插件Gspace
- Semor推荐:Firefox插件All-In-One Gestures
- 奇怪的数据库问题
- C#中读取XML到Dataset最简单的方法
- Semor推荐:Google书签
- 使用WMI查看杀毒软件信息
- 关于内存和虚拟内存
- Linux下安装Tomcat
- Linux下Java的安装
- 关于并行算法的一点思考
- 在Linux下配置MPI环境
- JSP学习笔记之Servlet
- html中frame的使用
- 使用批处理修改ip地址
- 再说数据
- 数据
- QQ传送文件
- Rootkit查杀
- 又是病毒?
- 大战灰鸽子2006
- 习惯“裸奔”
- 关于Sql数据库
- 从数据库中读出有限个数据项
- Ajax中DOM的使用
- CSS中DIV嵌套高度自适应问题
- Ajax中向服务器传递参数
- Jsp页面URL中文乱码问题解决
- 使用JavaBean连接数据库(续)
- Ajax初级实现:Hello World
- CSS中使div垂直水平居中
- 软件推荐:CSS编辑器TopStyle
- 使用JavaBean连接Sqlserver数据库
- 配置jsp服务器
- Linux学习笔记1
- Extended Live Archive简明使用教程
- 在Firefox中使用Flashgot插件管理迅雷下载
- Java连接mysql数据库
- Jsp连接Mysql数据库
- 设置Tomcat虚拟目录
- JavaScript:用JS函数隐藏浏览器地址栏(续)
- JavaScript:用JS函数隐藏浏览器地址栏
- 关于Web应用程序
- WordPress:让分类进行树形显示




