JSP程序的(de)代碼生成問題解析
JSP是(shì)Java Server Papes(Java服務器系統頁面)的(de)縮寫,它是(shì)由Sun Microsystems公司倡導的(de)、許多公司參與一(yī / yì /yí)起建立的(de)一(yī / yì /yí)種動态網頁技術标準,其在(zài)動态網頁的(de)創建中有強大(dà)而(ér)特殊的(de)功能,就(jiù)是(shì)JavaServer Pages(JSP)是(shì)一(yī / yì /yí)種實現普通靜态HTML和(hé / huò)動态HTML混合編碼的(de)技術。在(zài) Sun正式發布Java server pages之(zhī)後,一(yī / yì /yí)這(zhè)種新的(de)Web應用開發技術很快便引起了(le/liǎo)人(rén)們的(de)關注。Java server pages爲(wéi / wèi)創建高度動态的(de)Web應用提供了(le/liǎo)一(yī / yì /yí)個(gè)獨特的(de)開發環境。網站建設程序Velocity隻是(shì)裝入模闆,将模闆解析一(yī / yì /yí)次,然後存儲爲(wéi / wèi)抽象語法樹。抽象語法樹代表在(zài)内存的(de)模闆,這(zhè)秀色可餐以(yǐ)一(yī / yì /yí)次一(yī / yì /yí)次地(dì / de)重複使用,這(zhè)個(gè)過程隻是(shì)簡單的(de)“編程>解析>運行”。這(zhè)樣做的(de)好處是(shì)顯而(ér)易見的(de)。使用Velocityt模闆将明顯地(dì / de)提高速度,同時(shí)還減少了(le/liǎo)對javac編程器和(hé / huò)其它臨時(shí)目錄的(de)需求。在(zài)Velocity過程中,如果模闆發生了(le/liǎo)變化,存在(zài)緩沖存儲器中的(de)模闆将被最新解析生成的(de)版本替換掉,從而(ér)保證了(le/liǎo)正确性。
Velocity使用方法的(de)另一(yī / yì /yí)個(gè)好處在(zài)于(yú),網站制作實際的(de)模闆數據可以(yǐ)存儲任何地(dì / de)方,包括數據庫和(hé / huò)遠程主機,通過對模闆載入器時(shí)行配置,可以(yǐ)創建一(yī / yì /yí)個(gè)完全個(gè)性化的(de)、滿足自己需要(yào / yāo)的(de)模闆載入器。類似slrurs和(hé / huò)turbine這(zhè)樣的(de)框架軟件都會有很多處理錯誤的(de)恰當方法。即使沒有turbine,Velocity也(yě)可以(yǐ)提供很多種處理的(de)方法以(yǐ),但是(shì),由于(yú)Struts建立在(zài)JSP的(de)基礎上(shàng),它也(yě)繼承了(le/liǎo)一(yī / yì /yí)些與JSP相關的(de)問題。在(zài)下一(yī / yì /yí)節中,我們将時(shí)行詳細讨論。合肥網站建設公司
JSP生成的(de)代碼存在(zài)一(yī / yì /yí)個(gè)主要(yào / yāo)的(de)問題,網站設計程序JSP在(zài)向輸出(chū)流端口寫數據時(shí)發生了(le/liǎo)異常錯誤,JSP沒有辦法捕捉它,除非手工定義特定的(de)錯誤句柄。這(zhè)些都可能導緻異常錯誤的(de)出(chū)現。 JSP在(zài)設計方面還存在(zài)一(yī / yì /yí)個(gè)問題,就(jiù)是(shì)在(zài)JSP頁中,JSP隻能捕捉到(dào)exception類型的(de)錯誤。如果在(zài)JSP頁的(de)代碼中出(chū)現了(le/liǎo)另外一(yī / yì /yí)種錯誤,如out of memory error(内存不(bù)足錯誤),就(jiù)會出(chū)現網頁的(de)錯亂。因爲(wéi / wèi)它是(shì)基于(yú)throw able類型的(de)錯誤,而(ér)不(bù)是(shì)exception類型的(de),因此在(zài)JSP頁中捕捉這(zhè)種錯誤是(shì)非常困難的(de)。