中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JSP頁面翻譯的原理是什么

發布時間:2021-07-14 15:10:48 來源:億速云 閱讀:105 作者:chen 欄目:編程語言

這篇文章主要介紹“JSP頁面翻譯的原理是什么”,在日常操作中,相信很多人在JSP頁面翻譯的原理是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JSP頁面翻譯的原理是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

眾所周知,每一個JSP頁面都會被Web容器編譯成一個Java類,供Web容器調用,并且生成HTML葉面回饋給用戶。而了解其中的變異方法和規則,對我們學習JSP是非常有好處的,可以說學習好了這個編譯原理,就已經學習好了大部分的JSP知識,剩下的工作就只剩下熟記一些tablib和反復應用以使自己更加熟練而已了。

先來看一下JSP頁面所對應的Class的基本結構。每一個JSP頁面都會被編譯成成如下的格式樣子,先給一個大致的印象,詳細的說明在后面

這里面最重要的函數就是pageservice,web容器在編譯好一個JSP類以后,就申請這個類的對象,并且直接調用pageservice來獲得Response,最后返回給客戶。作為細節,我們可以總結如下:

1.所有的JSP頁面翻譯出來的class,都從HttpJspBase繼承,并且命名為PageName$jsp。

2.在第一次調用pageservice函數的時候,該class會進行一次初始化,而這個初始化函數是_jspx_init,如果我們想,我們還可以自定義這個函數,來實現JSP頁面的初始化。

3.<% %> 這樣的代碼被轉換成什么了?
這樣的代碼被直接轉成Java代碼放到pageservice函數里面。

4.<%! %> 這樣的代碼被轉換成什么了?
這樣的代碼被翻譯成成員函數和成員變量,也就是說,這些聲明在JSP的生命周期內都是存在的。

5.HTML代碼呢?
html代碼直接被寫到PrintWriter里面回饋給用戶,非常的直接。

6.為什么JSP頁面翻譯有那么多省寫方式,比如說session , out , page , context之類。
這都是在pageservice里面定義的臨時變量,具體的初始化可以參看上面的例子代碼,每一次調用JSP頁面,這些變量都會被重新初始化一次。當然我們也可以方便的聲明自己的變量。

7.省寫方式<%= object.doSomething()%> 這么理解?
這種省寫方式調用doSomething所得到的Object的toString(),然后直接寫到out里面。相當于:
out.print(object.doSomethiing().toString())

8.JavaBean 里面的scope定義了作用域范圍,這個范圍在這里的意思是?
這是Bean對象句柄保存的地方的意思。我們可以想象一下,一個page范圍的Bean只是pageservice里面的一個局部變量,當一次處理結束后,這個變量就會被Java虛擬機回收。而session變量。而request級別的Bean就應該是JSP頁面的成員變量。而session和 application則不能在JSP頁面class里面保存,而應該保存在JSP頁面的調用對象里面。

9.關于<%@ page %>命令,這個就太簡單了,只是一個一個的對應為response.setContentType()的語句而已。

10.關于JSP頁面翻譯轉向問題。這個語句被翻譯為getServletContext().getRequestDispatcher("/List.jsp").forward(req, res);語句。

11.<%@ include file="included.jsp" %> 遇到這個語句,JSP翻譯器就會把這個文件的代碼和現在文件的代碼混合然后一起編譯,生成JSP類。這個方法很好,可以讓我們統一文檔的樣式,比如說吧 header寫成一個文件,,而把footer也寫成一個JSP ,并且在index.html里面把這兩個文件包含近來,這樣,不管Content怎么變,上下樣式都不會變,有利于樣式的統一。

到此,關于“JSP頁面翻譯的原理是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jsp
AI

临海市| 襄垣县| 抚州市| 拉萨市| 正安县| 上林县| 鹤壁市| 万山特区| 宜昌市| 龙泉市| 麻栗坡县| 广丰县| 阿坝| 章丘市| 黄陵县| 德阳市| 南京市| 中超| 昌都县| 平山县| 南乐县| 寻甸| 耿马| 调兵山市| 鄢陵县| 钦州市| 安宁市| 新源县| 海城市| 忻州市| 赤峰市| 林芝县| 华蓥市| 孝昌县| 宜都市| 进贤县| 全椒县| 白水县| 宜城市| 晋城| 榕江县|