一個靜態的html文件中含有#和$等符號用來渲染后臺數據的velocity語法,有人知道靜態頁面中這些velocity語法對應生成的代碼在哪里嗎?想看下對應的java代碼。
2 回答

開滿天機
TA貢獻1786條經驗 獲得超13個贊
velocity生成的是語法樹,沒有java代碼
JSP文件實際上執行的是JSP對應的Java類,簡單地說就是將JSP的HTML轉化成out.write輸出,而JSP中的Java代碼直接復制到翻譯后的Java類中。最終執行的是翻譯后的Java類,而Velocity是按照語法規則解析成一棵語法樹,然后執行這棵語法樹來渲染出結果。所以它們有如下這些區別。 執行方式不一樣:JSP是編譯執行,而Velocity是解釋執行。如果JSP文件被修改了,那么對應的Java類也會被重新編譯,而Velocity卻不需要,只是會重新生成一棵語法樹。 執行效率不同:從兩者的執行方式不同可以看出,它們的執行效率不一樣,從理論上來說,編譯執行的效率明顯好于解釋執行,一個很明顯的例子在JSP中方法調用是直接執行的,而Velocity的方法調用是反射執行的,JSP的效率會明顯好于Velocity。當然如果JSP中有語法JSTL,語法標簽的執行要看該標簽的實現復雜度。 需要的環境支持不一樣:JSP的執行必須要有Servlet的運行環境,也就是需要ServletContext、HttpServletRequest和HttpServletResponse類。而要渲染Velocity完全不需要其他環境類的支持,直接給定Velocity模板就可以渲染出結果。所以Velocity不只應用在Servlet環境中。
添加回答
舉報
0/150
提交
取消