本人有10年使用ASP.NET的经验,在2007年时,有三个月的Java使用经验,主要是做Swing的东西,
当时感觉MyEclipse真不好用,Java和C#的语法差不多,但是Java对通用编程比C#好多了。
由于需要,今年(2013)2月份开始,重拾Java,主要用来做Web程序。
目标:尽快掌握Java Web开发的相关知识及各项技能
l 根据ASP.NET的使用经验,首先囫囵吞枣的对Java各项技术进行了解,做出一个简单的Web项目,然后在此基础上进一步学习。
l 编辑器,JDK等根据主流选择MyEclipse8.7和JDK1.6,这样出错容易解决。
l 在周围找对JAVA比较熟悉的高手,多多请教。
以前使用ASP.NET中的Castle Monorail写项目,感觉Castle Monorail的布局(layout--类似于模板页),自定义控件(component)、VTL很好用,所以希望在Java中找到相应的技术。
根据高手的推荐,编辑器暂时选择MyEclipse8.7,JDK选择1.6,WebService选择CXF,数据库访问使用Mybatis3.1.1,Spring使用Spring3.1,
MVC框架使用Spring,模板技术使用Freemarker,脚本库使用JQuery1.7.2和easy ui。
数据库访问有推荐使用Hibernate,MVC框架有推荐Structs的,脚本库有推荐使用EXT,模板语言自己使用过VTL,WebService有推荐使用atis的,都没有采用。
如果有通知时,如何通知到前台页面。选项有WebSocket(HTML5.0),页面轮询访问,OCX控件,消息中间件(例如MQ),但是至今没有一个好的办法(可能一般Web也不需要这样处理,但是有些比较复杂的页面确实需要)。
1)程序分为通用层(异常,业务对象,数据合法性验证)、数据访问层(数据库访问、WebService),逻辑层,控制层和页面层。
2)所有错误信息由异常统一爆出,异常分为逻辑异常,数据库异常,数据验证异常和其他异常(根据实际需要增减),由控制层统一捕捉,并输出到展示层(页面层)。
3)数据访问层包括访问数据库、访问第三方WebService,访问消息中间件以及其他。
4)逻辑层处理业务逻辑及数据库事务,并对输入数据的合法性进行验证(此处验证最好和页面的js验证一致---此处和前台页面最好都使用通用层的数据合法性验证部分进行验证)。
5)控制层由页面的action和WebService组成,控制层负责在展示层和逻辑层之间进行数据转换,异常捕捉,页面跳转。
6)有一类特殊的WebService,直接访问数据库,这些WebService的目的是代理数据库的访问,使调用客户端不直接访问数据库,屏蔽数据库差异。
7)展示层暂时主要考虑了Web页面,使用taglib和easy ui显示信息,使用FreeMark进行模板生成,
使用FreeMark的宏实现布局功能(类似于模板页)及自定义控件功能。
8)前台页面和后台逻辑使用同一套规则对输入数据进行合法性验证。
前台页面和后台逻辑如何使用同一套规则对输入数据进行合法性验证?
当前的想法是通用层的数据合法性验证部分返回的错误信息(数据合法性异常)包含错误内容以及关联属性,当出错时,页面可以根据关联属性定位出错HTML元素。
最开始我打算在控制层使用AOP进行异常统一处理,根据高手的建议,换为使用过滤器进行异常处理。
这是我画出的心目中的结构图,没有什么东西,只是表达了我的想法。曾经被同事讥笑为为了技术而技术,用的四不像,采纳了他的一些建议。