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