最近要在一個項目中使用java, 本來是用.net開發(fā)的, 可是驗收時用戶要求用java平臺,只好進(jìn)行移植工作了. 一直使用的是.net開發(fā), JAVA只是關(guān)注, 沒有深入研究, 等實際應(yīng)用時才發(fā)現(xiàn)自己水平有限, 問題一堆.
把最近碰上的問題做些整理:
使用JAVA平臺的問題:
1. 開發(fā)工具太多, 什么Eclipse, jbuilder等,各有不同, 讓人熟悉就花時間了, 本為以為對JB比較熟悉,又有2006版本了, 就用它吧, 可是才兩天, 就發(fā)現(xiàn)自己的代碼文件中的中文變?yōu)閬y碼了, 當(dāng)然網(wǎng)上有一堆解決方案, 只是心里不爽, 直接不用了, 改為eclipse了, 操作界面不是很熟悉, 與VS.NET IDE還是有不少區(qū)別, 只是用多了自然就熟悉了,
又從網(wǎng)上當(dāng)了一堆插件, 什么tomcat, xml編輯器, 沒有用myeclipse, 雖然支持JSP,以前用過一下, 也不太好用, 其它的就沒找到什么好東西了, 時間也不允許, 至少現(xiàn)在可以調(diào)度JAVA代碼了, JSP的調(diào)試再說吧.
2. 開始整的時候,發(fā)現(xiàn)自己在WEB開發(fā)方面熟悉的是VS的ASPX事件模型, 反而不知道如何處理JSP了, 只好使用以前ASP的模式, 使用form提交, 感覺真是太落伍了, 雖然現(xiàn)在有許多AJAX之類的東西, 也支持客戶端事件模型, 實在沒時間研究這些東西了. 先做出來再說.
數(shù)據(jù)庫連接類使用了以前jive中的幾個類, 支持在xml中配置連接等, 再自己寫了一個類, 從XML中讀取SQL語句, 差不多能用.
3。在網(wǎng)上搜索了一把,未找到在eclipse中對web service支持比較好的plugin,發(fā)現(xiàn)版本都比較低,似乎久未更新了,JB下到是有不錯的設(shè)計和編譯界面,只是JB其它太爛。
字符集問題:
使用java首先就要碰上一個中文字符的顯示和處理問題, 這些問題總是很煩, 要對request進(jìn)行編碼才能解決.
既然使用非MS平臺, 數(shù)據(jù)庫可能就不會用到mssql server了, 使用mysql, 發(fā)現(xiàn)要移植以前的數(shù)據(jù)還是比較容易, 但mysql的驅(qū)動實在不好弄, 剛開始使用純JDBC的驅(qū)動, 結(jié)果發(fā)現(xiàn)在中文字符的處理上始終有問題, 只好
網(wǎng)上查原因, 發(fā)現(xiàn)jdbc驅(qū)動的版本太低, 在判斷中文字符上有問題, 升級驅(qū)動程序, 可以插入和顯示了, 但SQL中是中文, 可是進(jìn)了數(shù)據(jù)庫就是亂碼, 試了N遍也不行, 只好改為jdbc-odbc.
但接下來在執(zhí)行batch sql時又報錯了, 說mysql odbc driver 的SQL語法錯, 檢查了半天, SQL也能在mysql中執(zhí)行的, 就是不能通過JAVA提交執(zhí)行. 用的是mysql 5.0.X, 支持unicode 的編碼建表. 最后只能采用一個折衷的辦法,自己寫一個批量執(zhí)行SQL的類,采用“;”分隔多個SQL,在調(diào)用時仍然一行一行的執(zhí)行,郁悶。
最終的字符集解決辦法:
頁面上要設(shè)置字符集的輸出格式,如GBK或GB2312,另外,如果使用統(tǒng)一的包含文件定義輸出字符集,還是不行,必須在每個頁面中單獨定義,也可能是我的INCLUDE方式不對;
數(shù)據(jù)庫連接字符串中也要設(shè)置編碼;
在傳遞數(shù)據(jù)到DB的SQL還要對中文進(jìn)行編碼;
String key = new String(request.getParameter("txtKey").getBytes("ISO8859_1"));
最后還有一個問題是,如果TOMCAT編譯JSP文件生成的JAVA文件有亂碼,那么在訪問的時候頁面上總是要報錯,什么"delete tokens"之類的,此時要刪除掉tomcat\work目錄下的中間編譯代碼才行;
控件及常用庫
WEB控件, 網(wǎng)上有一堆各種各樣的lib和控件, 但這些東西太浪費時間, 光是上網(wǎng)找就比較花時間了, 下回來試用也有各種各樣的問題,
每個控件有自己的特色, 而且每個總是滿足了這個,滿足不了那個需求, 要都滿足, 還是要收費的才行, 畢竟天下沒有多少免費的午餐;
主要有幾個:
1。數(shù)據(jù)顯示表格控件,應(yīng)該能支持排序,有緩存機(jī)制,能分頁,能設(shè)置格式,支持ResultSet或ArrayList之類的,還要有導(dǎo)出excel等功能;最好要能簡單使用。
2。圖表控件,最有名的當(dāng)然是cewolf/jfreechart,只是要使用它自己定義的DatasetProducer,不能直接使用ResultSet,也是個麻煩事,不過的確是很不錯的控件了。
小結(jié)
1。經(jīng)過這次移植,發(fā)現(xiàn)JAVA還是有許多很牛的地方,采用hashmap來緩存數(shù)據(jù),效率的確很不錯,只是用得太多,缺乏管理機(jī)制,有點混亂了,下一階段再重構(gòu)一下,形成一個管理框架最好;
2。eclipse開發(fā)的確很不錯,與vs ide差別是比較大,只是使用習(xí)慣了之后發(fā)現(xiàn)其功能強(qiáng)大,而且可以找些plugin來擴(kuò)展功能,估計我只是看到了點皮毛而已。
3。在JAVA下開發(fā),使用Javascript太多,還沒找到更好解決辦法,水平有限;
4。與另一個人一起開發(fā),大家的編程風(fēng)格和代碼不夠規(guī)范,使用了一些重復(fù)的類和方法,這在后期維護(hù)是個工作,時間太緊,項目總是這樣,就沒得多少提高了;
個人水平實在有限,上面只是一面之詞,項目月底才結(jié)束,有什么變更再補充。