成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析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頁面翻譯過程的簡單探討,更加詳細的細節可以參考tomcat的源代碼,了解這些原理對于學習JSP來說,是非常重要的,能大大的提高學習的效率。

【編輯推薦】

  1. JSP開發環境的搭建
  2. 簡單介紹JSP環境配置
  3. JSP、ASP和PHP安全編程
  4. 整合Apache中JSP和PHP
  5. JSP和Servlet應用的安全問題
責任編輯:佚名 來源: IT168
相關推薦

2009-07-14 15:42:38

MyEclipse開發

2009-07-03 17:41:47

JavaBean Se

2009-07-14 16:25:04

MyEclipse開發

2009-07-14 16:07:46

MyEclipse開發

2009-07-14 10:47:47

MyEclipse J

2009-07-06 13:52:56

編寫JSP Tag

2009-06-29 17:39:31

JSP設計模式

2009-07-01 18:20:29

JSP的優勢

2009-06-24 09:12:26

ASP.NET頁面請求

2009-07-02 11:34:42

JSP指令JSP開發

2009-07-03 09:08:23

JSP標記學習筆記

2009-07-03 09:08:23

JSP標記學習筆記

2009-07-06 14:05:11

JSP服務器

2009-07-06 17:11:38

Servlet文件上傳

2009-03-17 16:18:51

JspActionStruts

2009-07-02 10:51:21

腳本編程JSP開發

2011-04-13 15:01:39

2020-08-05 08:21:41

Webpack

2009-07-06 12:32:26

JSP引擎

2020-12-09 05:24:28

SQL翻譯器程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美色欧美亚洲另类七区 | 亚洲欧美中文日韩在线v日本 | 亚洲欧美激情国产综合久久久 | 日本黄色片免费在线观看 | 狠狠爱一区二区三区 | 日韩在线看片 | 欧美日本亚洲 | 午夜精品一区二区三区免费视频 | 四虎最新视频 | 日韩视频一区二区三区 | 污污免费网站 | 人人干在线视频 | 亚洲三级av| 国产91久久久久久久免费 | 久久人爽爽人爽爽 | 97伦理电影 | 日本黄色影片在线观看 | 精品久久久久久亚洲综合网站 | 九九九久久国产免费 | 自拍在线 | 日韩久久久久 | 国产伦精品一区二区三区高清 | 99在线免费观看视频 | 国产精品久久久久久久岛一牛影视 | 在线一区二区三区 | 成人免费视频网站在线看 | 亚洲视频在线观看 | 欧美日韩一二三区 | 在线āv视频 | 国产一区免费 | 色婷婷综合网 | 91视频91| 一区二区电影网 | 国产精品 亚洲一区 | 一级毛片免费 | 日本成人午夜影院 | 可以免费看的毛片 | 亚洲欧美一区二区三区在线 | 国产高清一区二区三区 | 国产乱码精品一区二区三区忘忧草 | 国产精品久久 |