- 浏览: 370628 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (159)
- java world (63)
- php (12)
- ruby/python (0)
- web front (5)
- linux (4)
- db (1)
- 创业 (1)
- 生活 (13)
- 工作 (5)
- web (3)
- js uploader (1)
- java web (1)
- groovy (11)
- groovy sql (1)
- groovy swingbuilder (0)
- groovy antbuilder (1)
- json jquery (1)
- dom html (1)
- java punit (1)
- websql (1)
- 移动 (2)
- angularjs (2)
- 团购 java groovy (1)
- groovy watch dog (1)
- web karma seajs (1)
- angularjs primeui (1)
- groovy http test (1)
- golang (1)
- gradle (1)
- groovy linux (1)
最新评论
-
tongfan:
有能跑起来的demo么?? 按照你的思路 和代码 做的de ...
通过bean parser实现spring scan groovy文件装载bean -
zhangyuxidd:
谢谢分享,好东西
下载了人家的数据——中国行政区编码(电话,区号等),分享一下 -
逍遥道人:
谢谢博主的慷慨分享,谢谢!
下载了人家的数据——中国行政区编码(电话,区号等),分享一下 -
noyce520:
给这种精神 赞一个。csdn老要分,,烦死了
下载了人家的数据——中国行政区编码(电话,区号等),分享一下 -
wwwqqeew:
LoveStart 写道
纯js实现浏览器图片选择预览、旋转、批量上传
公司是做erp软件的
以前用的是基于ejb2.0架构的,虽然从前(jsp、js)到后(ejb,crud)都有良好的接口,但做一个逻辑操作仍然很复杂。 又平时兴趣积累做出些东东,尝试着去应用到实际开发中去。总结了下这样的东东应该是这样的
1.尽量少的java scriptlet,尽量少的javascript,尽量少的硬sql(既跟着需求常变的)在java源码中
2.常用的逻辑操作流程定义明确,比如crud的开发,应该是step1->step2->step3...
3.基于一个灵活的架构,一些常用的功能尽量提供好,比如i18n,log,transactions,configurable,exception control,auth related等等
4.多定义,少编程。重复性的业务流程尽量模块化,最好达到修改或添加***时候能够改改配置就完成了
5.良好的命名合适和文件目录结构
因为好多操作都是crud操作,故我尝试着以以下方案解决上述问题——=》
1.选个好框架jquery/zk + freemarker + spring mvc + crud data server/dao + spring jdbc template + hibernate dialect,其中的crud的数据抽象和流程(page -> action -> service -> dao)自己要做的。
2.尽量多定义好目录结构 java源文件等就不说了,包命名,类命名,我喜欢springside风格的
war目录 crud crud的html相关文件(js,images,css,。。。 frame frame的html。。。 error pages 404/500。。。
web-inf目录
classes lib tld ftl zul config i18n model(这个是我定义的用于对数据库的数据抽象描述的,类似于**mapping)
spring config files * n web.xml
3. 额外的***
i18n我没用spring带的,我自己写一个interceptor加个cache功能,唯一比spring的多一点就是递归遍历文件夹,根据locale和业务相关(prefix)动态加载。这样i18n里的文件应该是这样的 i18n/pur/cn_account.properties
所谓配置,和i18n一样,只不过在interceptor的prehandle里也加载了,这样在action里面就不用出现汉字了,可能没这个必要。。。。
3. 权限相关 filter 做 url 访问判断,可以定义到db里去,**rbac,来个视图就搞定了
model filter 判断,至于model是什么,下面有讲
4. model???
先主要列几个java文件
CrudAction CrudService CrudDAO CrudModel SQLGenerator Dialect ValueFomatter,这下你大概知道偶想做什么了吧,还不明白?那就多列几个
XmlConvertable Field Row TableHeader TableLayer PaginationWrapper OptModel ConstraintModel,这下你大概知道偶想做什么了吧,还不明白?
那我也没办法了,那我就把Field.java放到附件里,感兴趣的看下吧
5.流程 其实呢,简单点理解,这个东东能做什么呢?它主要能做两方面的事情
pluginable功能组织结构通过定义展示给用户 比如用户 kerry 通过权限判断,他可以操作(pur模块下的***,srm下面的***),当然页面和数据你自己定义,象我预设的就是user usergroup role application-module resource这么几层,之间为多多对应
自动crud流程,通过4你应该猜到了一下
js+freemarker by ajax/get/post
crudaction(spring mvc annotation多好用啊)
listAll
listByQuery
listInPage
addForm/addPost
updateForm/updatePost
delete
addBatch/addBatchPost
deleteBatch
importFromExcel/exportToExcel ...
当然了,对httprequest的模块化操作,肯定要封装下了。
在action里,从user(request)里得到的是model, 对model的操作呢?外加点权限的 判断,比如这个model(对应一个视图、表或者**)是否可以导出啊,是否可以删除啊 等等。
crudservice 这一层和action其实几乎是一一对应的,只不过声明了事务处理啊,判断下key constraint啊,对model的**(比如视图的view sql)根据登录user进行下转换啊什么 的——sql转换我深有感触,处处都有啊(比如一个插入,出来key constraint以外, 说不定还有业务上的constraint,这些动态sql都要转换的)
cruddao 这一层比较bug,不过操作起来逻辑上很清晰,无非是crud,至于sql怎么生成的,jdbc template用到的object[]是如何生成的,交给别的类吧
6.说了这么多,关键的一点就是,不要以为上面的代码都要自己去写,no——我按照这个思路做出来个雏形暂时可以达到根据几个xml就可以做action里定义的所有方法了
如果你要问,咦?那页面哪有啊——自动生成啊,反正你把数据库表的每个字段都映射定义了,生成个table/form还有问题啊,切,包括js验证都有了——顺便白一句,我估计,我自己定义的field的属性,应该比jpa的annotation定义的都多…………不过带来的是xml维护的地狱,幸好偶命名的规范些,要不然,一个系统就这几百个xml文件,一行java没有,你上哪去搞去啊
今天晚了,改天看看要不要再写点。 大家来拍砖啊,提点建议最好——毕竟偶是闭门造车啊
- Field.rar (4.5 KB)
- 下载次数: 92
评论
我们用的是BS结构的MVC开发模式,“业务层+Dao层”的模式,某个模块的一个httpRequest过来就把请求定位到该模块的业务层,然后调DAO层操作数据,然后处理结果返回给浏览器端。
这样有一个问题出现了,当模块逐渐增多的时候,我们的业务、Dao操作就会出现一些重复,或者说是相类似的情况,那么作为整个系统来说,这些是可以通过改善设计而瘦身的,可是到目前为止我还没有找到一个比较好的解决方法?希望各位同仁能说说你们是怎么面对这个问题的,谢谢。
1、不断的重构,将类似的结构和通用的方法适度的抽象出来,
成为基础技术架构的一部分,
2、不断的解耦,将系统结构话,横向分层,纵向分模块,提示提取一些常用业务模块,
形成一个稳定、适度的核心业务框架。作为以后类似项目开发的起点和公司的技术资产。
恢常同意.
可以看我最新的博客
“又发明个轮子“。。。。
我们用的是BS结构的MVC开发模式,“业务层+Dao层”的模式,某个模块的一个httpRequest过来就把请求定位到该模块的业务层,然后调DAO层操作数据,然后处理结果返回给浏览器端。
这样有一个问题出现了,当模块逐渐增多的时候,我们的业务、Dao操作就会出现一些重复,或者说是相类似的情况,那么作为整个系统来说,这些是可以通过改善设计而瘦身的,可是到目前为止我还没有找到一个比较好的解决方法?希望各位同仁能说说你们是怎么面对这个问题的,谢谢。
使用泛型可以解决这个问题,增加模块必要增加实体 entity,对于业务逻辑类似的模块,可以做个common service跟common dao,2者都试用泛型。common service 调用common dao,你的新业务逻辑继承common service。这样你就能少些很多代码,业务逻辑发生变化修改也方便。
其实这跟楼主说的抽象出CRUD service和CRUD dao的想法是一样的,少写代码.
我们用的是BS结构的MVC开发模式,“业务层+Dao层”的模式,某个模块的一个httpRequest过来就把请求定位到该模块的业务层,然后调DAO层操作数据,然后处理结果返回给浏览器端。
这样有一个问题出现了,当模块逐渐增多的时候,我们的业务、Dao操作就会出现一些重复,或者说是相类似的情况,那么作为整个系统来说,这些是可以通过改善设计而瘦身的,可是到目前为止我还没有找到一个比较好的解决方法?希望各位同仁能说说你们是怎么面对这个问题的,谢谢。
1、不断的重构,将类似的结构和通用的方法适度的抽象出来,
成为基础技术架构的一部分,
2、不断的解耦,将系统结构话,横向分层,纵向分模块,提示提取一些常用业务模块,
形成一个稳定、适度的核心业务框架。作为以后类似项目开发的起点和公司的技术资产。
我们用的是BS结构的MVC开发模式,“业务层+Dao层”的模式,某个模块的一个httpRequest过来就把请求定位到该模块的业务层,然后调DAO层操作数据,然后处理结果返回给浏览器端。
这样有一个问题出现了,当模块逐渐增多的时候,我们的业务、Dao操作就会出现一些重复,或者说是相类似的情况,那么作为整个系统来说,这些是可以通过改善设计而瘦身的,可是到目前为止我还没有找到一个比较好的解决方法?希望各位同仁能说说你们是怎么面对这个问题的,谢谢。
发表评论
-
通过bean parser实现spring scan groovy文件装载bean
2016-04-28 10:54 2011Spring使用groovy作为bean,官方用了lang标 ... -
只是自己放东西以供下载。。。
2011-10-19 20:32 0-jar E:/Program/node/jstd/JsT ... -
动态语言+约定,剩下的只需要文件系统就够了
2011-09-02 09:54 186最近在工作中一直用jdk1 ... -
jdk6的httpserver小试
2011-07-28 17:04 1690网上一堆例子,个人做一个,有下载,可以用模板的小例子。(Gro ... -
热切推荐对groovy感兴趣看这位老兄的blog
2011-07-08 22:21 1405解除groovy有很久一段时间了,自认为对groovy还是蛮了 ... -
Jdk不同版本编译时候碰到BigDecimal执行错误
2011-07-02 23:46 2233如果不是工作环境遇到,我估计自己肯定不会碰到和去查这样的问题的 ... -
groovy做单元测试(包括对groovy/java测试),如何集成到你现有的java项目中去
2011-06-06 01:43 1572标题党—— 1. 至于如何用groovy写现有java ... -
分析下如何集成QQ登陆到你自己的网站上——Java平台
2011-05-31 19:34 6946目的:如题。。。 准备工作: 1.找一个现成的OAu ... -
发布一个项目——Increx
2011-04-21 18:17 291翻翻以前写的blog的Title, 1. ... -
用Groovy做基于web的自动crud,比你想象得要简单得多
2011-04-18 17:22 1573如果你只是玩过play!或grails里演示crud的demo ... -
Groovy不是这么用的(或者说不一定这么用就是最好的)
2011-04-12 15:46 0一次面试,聊技术涉及到groovy时候,他提到几个问题: ... -
Java求职者——想说服技术主管你这个Javaer比其他Javaer强,难啊
2011-03-31 15:46 500接到一面试电话—— 简单了解点java基础和we ... -
刚阿里电面——被深深的BS了
2011-03-29 14:20 3799RT—— 有好多问题或涉及到的知识点由于基础不牢固—— ... -
基于JQuery和Base的一个WebOS的雏形——配合基于Java的服务端
2011-03-29 00:31 2638有个很模糊的录像,大家感兴趣的,先看下。 自己最近写写 ... -
最近面试时候碰到的算法题目,自己写一下,顺便和大家交流下groovy的语法糖
2011-03-21 13:51 1461题目都比较简单——用什么语言写,都不是重点——笔试中我都是狂省 ... -
Groovy——上了一个当——把String当List用
2011-03-09 16:21 165String str = '20001010' printl ... -
GAE上用H2结合Groovy——外推荐下我自己写的GAE用的框架
2011-02-23 15:46 1047见附件。eclipse工程(需要google sdk的)。 ... -
对于基于java的小型web应用部署方式感到失望。。
2011-01-11 19:51 329总是离不开servlet container和一个http / ... -
利用永中Office实现Word/Excel/PPT PDF转换
2010-12-25 00:28 1001这个思路挺酷的么? 再加上FlexPaper,在互联网 ... -
一些门户或平台网站的数据获取与分析——以淘宝为例
2010-12-24 21:31 3620RT——在大家做网站或GUI的业余时间,可能你会碰到这样的需求 ...
相关推荐
这款插件叫做Find Code for Research Papers,帮你找论文的源码,甚至第三方实现的源码也可以找到,超级方便可以试试看
DllCall Code Generator 好 用的工具帮你使用dll call
反之,如果你有特定的函数类、功能码、访问类型和设备类型,工具也可以帮你生成对应的IOCTL代码。 在实际开发中,正确地构造和解析IOCTL代码是至关重要的,因为错误的代码可能会导致驱动程序无法识别或执行预期的...
Google 工程师 Ryan McDermott 根据 《Clean Code》总结了一份适用于 JavaScript 的软件工程指导准则《Clean Code JavaScript》。希望能帮你写出易读、易复用、易重构的 JavaScript 代码
6. BSIC(Basic Service Identity Code,基本服务标识码):由NCC(Network Color Code,网络色码)和BCC(Base Station Color Code,基站色码)两部分构成,NCC为4,BCC为2时,BSIC为34。 7. GSR4软件版本的硬件...
有需要其他转换器的可以给我留言,我可以帮你破解. Instant C# converts VB code to C# • Instant VB converts C# code to VB • C++ to C# Converter converts C++ code to C# • C++ to VB Converter ...
我们访问网站的时候,本质上访问的是网站所在的 IP 地址,IP 地址一般是由用点分隔开的数字组成,例如但这些数字不方便人们记忆,因而就有了域名,域名使用字符串来
它可以帮你处理底层的编码和解码逻辑,让你可以专注于应用程序的其他核心部分。 总结一下,Python库“manchester_code-1.1.0-py3-none-any.whl”提供了对曼彻斯特编码的便捷支持,适用于Python 3环境。通过这个库,...
标题中的“帮你点缀照片和图片,让它萌起来~~”指的是一个图像编辑软件,这款软件的主要功能是通过添加各种图标或装饰元素,使用户的照片或图片变得更加生动有趣,呈现出萌萌哒的效果。它可能是通过简单的图形界面,...
1. IDE(集成开发环境):如Keil、IAR、Code Composer Studio等,提供代码编辑、编译、调试等功能,便于编写和测试单片机程序。 2. 编程器与仿真器:编程器用于将编译后的程序烧录到单片机中,仿真器则可以在实际...
自动帮你完成头部和尾部闭合标签的同步修改,一个与camelCase代码配合良好的基本拼写检查程序。检查程序的目标是帮助捕获常见的拼写错误,同时保持误报数量较低 VS Code的Azure存储扩展允许您部署静态网站并浏览...
Python 安装完成后,你可以选择集成开发环境(IDE)进行编程,如 Visual Studio Code(VSCode)和 PyCharm。VSCode 是一款轻量级但功能强大的编辑器,支持多种编程语言,通过安装 Python 插件可实现代码高亮、调试等...
No boilerplate code like onSaveInstanceState or onRestoreInstanceState any more. Getting started Just add the @AutoRestore annotation to your fields that need to be saved and restored in Activities, ...
Code Pilot开源Xcode 5插件源码,源码CodePilot,Code Pilot是一个开源的Xcode 5插件,可帮你快速查找项目中的文件、方法以及符号,无需鼠标。Code Pilot使用模糊查询匹配来计算结果列表,并按照相关性进行排序。...
4. **中间代码生成**(Intermediate Code Generation):将源代码转换为更简单的中间表示形式。 5. **优化**(Optimization):改进中间代码,以提高运行效率。 6. **目标代码生成**(Target Code Generation):将...
* 选中 Case-sensitive match,防止一些无关的东西干扰,如果你想它帮你纠正大小写,那就去掉勾。 2. 在 Keyboard short-cuts 中将 Edit->Code complete 的快捷键由 Ctrl+Space 改为 Alt+/,因为前者与中文输入法...
Xcode虽然有模糊匹配的代码提醒,但代码提醒只能帮你写方法名,而代码段还可以帮你替换一些替换的方法实现,或者直接移动光标到方法体内,省去一些光标操作。 一些常用的写法本身语法可能比较复杂,难以记忆,例如...
该插件的使用方法通常是,当你创建了一个新的实体bean类并希望它支持`Parcelable`时,插件会自动帮你生成相关代码。这样,你无需手动编写这些重复且复杂的代码,可以更专注于业务逻辑。具体操作可能需要将插件集成到...
python官方安装包,使用方便,安装快速,帮你开启不一样的code路径
卡路里计算器是作者的一个远古项目,它一个可以帮你简单计算运动消耗的小软件。这个项目的Github地址是:https://github.com/Fantian2008/CaloriesCtor ;Gitcode地址是:...