最近要在一个项目中使用java, 本来是用.net开发的, 可是验收时用户要求用java平台,只好进行移植工作了. 一直使用的是.net开发, JAVA只是关注, 没有深入研究, 等实际应用时才发现自己水平有限, 问题一堆.
把最近碰上的问题做些整理:
使用JAVA平台的问题:
1. 开发工具太多, 什么Eclipse, jbuilder等,各有不同, 让人熟悉就花时间了, 本为以为对JB比较熟悉,又有2006版本了, 就用它吧, 可是才两天, 就发现自己的代码文件中的中文变为乱码了, 当然网上有一堆解决方案, 只是心里不爽, 直接不用了, 改为eclipse了, 操作界面不是很熟悉, 与VS.NET IDE还是有不少区别, 只是用多了自然就熟悉了,
又从网上当了一堆插件, 什么tomcat, xml编辑器, 没有用myeclipse, 虽然支持JSP,以前用过一下, 也不太好用, 其它的就没找到什么好东西了, 时间也不允许, 至少现在可以调度JAVA代码了, JSP的调试再说吧.
2. 开始整的时候,发现自己在WEB开发方面熟悉的是VS的ASPX事件模型, 反而不知道如何处理JSP了, 只好使用以前ASP的模式, 使用form提交, 感觉真是太落伍了, 虽然现在有许多AJAX之类的东西, 也支持客户端事件模型, 实在没时间研究这些东西了. 先做出来再说.
数据库连接类使用了以前jive中的几个类, 支持在xml中配置连接等, 再自己写了一个类, 从XML中读取SQL语句, 差不多能用.
3。在网上搜索了一把,未找到在eclipse中对web service支持比较好的plugin,发现版本都比较低,似乎久未更新了,JB下到是有不错的设计和编译界面,只是JB其它太烂。
字符集问题:
使用java首先就要碰上一个中文字符的显示和处理问题, 这些问题总是很烦, 要对request进行编码才能解决.
既然使用非MS平台, 数据库可能就不会用到mssql server了, 使用mysql, 发现要移植以前的数据还是比较容易, 但mysql的驱动实在不好弄, 刚开始使用纯JDBC的驱动, 结果发现在中文字符的处理上始终有问题, 只好
网上查原因, 发现jdbc驱动的版本太低, 在判断中文字符上有问题, 升级驱动程序, 可以插入和显示了, 但SQL中是中文, 可是进了数据库就是乱码, 试了N遍也不行, 只好改为jdbc-odbc.
但接下来在执行batch sql时又报错了, 说mysql odbc driver 的SQL语法错, 检查了半天, SQL也能在mysql中执行的, 就是不能通过JAVA提交执行. 用的是mysql 5.0.X, 支持unicode 的编码建表. 最后只能采用一个折衷的办法,自己写一个批量执行SQL的类,采用“;”分隔多个SQL,在调用时仍然一行一行的执行,郁闷。
最终的字符集解决办法:
页面上要设置字符集的输出格式,如GBK或GB2312,另外,如果使用统一的包含文件定义输出字符集,还是不行,必须在每个页面中单独定义,也可能是我的INCLUDE方式不对;
数据库连接字符串中也要设置编码;
在传递数据到DB的SQL还要对中文进行编码;
String key = new String(request.getParameter("txtKey").getBytes("ISO8859_1"));
最后还有一个问题是,如果TOMCAT编译JSP文件生成的JAVA文件有乱码,那么在访问的时候页面上总是要报错,什么"delete tokens"之类的,此时要删除掉tomcat\work目录下的中间编译代码才行;
控件及常用库
WEB控件, 网上有一堆各种各样的lib和控件, 但这些东西太浪费时间, 光是上网找就比较花时间了, 下回来试用也有各种各样的问题,
每个控件有自己的特色, 而且每个总是满足了这个,满足不了那个需求, 要都满足, 还是要收费的才行, 毕竟天下没有多少免费的午餐;
主要有几个:
1。数据显示表格控件,应该能支持排序,有缓存机制,能分页,能设置格式,支持ResultSet或ArrayList之类的,还要有导出excel等功能;最好要能简单使用。
2。图表控件,最有名的当然是cewolf/jfreechart,只是要使用它自己定义的DatasetProducer,不能直接使用ResultSet,也是个麻烦事,不过的确是很不错的控件了。
小结
1。经过这次移植,发现JAVA还是有许多很牛的地方,采用hashmap来缓存数据,效率的确很不错,只是用得太多,缺乏管理机制,有点混乱了,下一阶段再重构一下,形成一个管理框架最好;
2。eclipse开发的确很不错,与vs ide差别是比较大,只是使用习惯了之后发现其功能强大,而且可以找些plugin来扩展功能,估计我只是看到了点皮毛而已。
3。在JAVA下开发,使用Javascript太多,还没找到更好解决办法,水平有限;
4。与另一个人一起开发,大家的编程风格和代码不够规范,使用了一些重复的类和方法,这在后期维护是个工作,时间太紧,项目总是这样,就没得多少提高了;
个人水平实在有限,上面只是一面之词,项目月底才结束,有什么变更再补充。