日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jsp文件能转换html吗,html怎么转换成jsp

發布時間:2023/12/2 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsp文件能转换html吗,html怎么转换成jsp 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

public class My$jsp extends HttpJspBase { static {} public date$jsp() {} private static boolean _jspx_inited = false; public final void _jspx_init() throws org.apache.jasper.runtime.JspException {}; public void _JSP pageservice(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { JspFactory _jspxFactory = null; PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; String _value = null; try { if (_jspx_inited == false) { synchronized (this) { if (_jspx_inited == false) { _jspx_init(); _jspx_inited = true; } } } _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html;charset=ISO-8859-1"); pageContext = _jspxFactory.getPageContext(this, request, response, "", true, 8192, true); application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); // HTML // begin [file="/date.jsp";from=(0,0);to=(7,6)] out.write("\r\n\r\n\r\n" + "\r\n\r\n\r\n" + "The date is\r\n"); // end // begin [file="/date.jsp";from=(7,8);to=(7,57)] out.println((new java.util.Date()).toString()); // end // HTML // begin [file="/date.jsp";from=(7,59);to=(10,7)] out.write("\r\n \r\n \r\n"); // end } catch (Throwable t) { if (out != null && out.getBufferSize() != 0) { out.clearBuffer(); } if (pageContext != null) { pageContext.handlePageException(t); } } finally { if (_jspxFactory != null) { _jspxFactory.releasePageContext(pageContext); } } } }

我們可以清楚地看到,這里面最重要的函數就是pageservice,web容器在編譯好一個JSP類以后,

就申請這個類的對象,并且直接調用pageservice來獲得Response,最后返回給客戶。

作為細節,我們可以總結如下:

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

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

這樣的代碼被轉換成什么了?

這樣的代碼被直接轉成Java代碼放到pageservice函數里面。

這樣的代碼被轉換成什么了?

這樣的代碼被翻譯成成員函數和成員變量,也就是說,這些聲明在JSP的生命周期內都是存在的。

HTML代碼呢?

html代碼直接被寫到PrintWriter里面回饋給用戶。非常的直接

為什么JSP頁面有那么多省寫方式,比如說session , out , page , context之類。

這都是在pageservice里面定義的臨時變量,具體的初始化可以參看上面的例子代碼,每一次調用JSP頁面,這些變量都會被重新初始化一次。當然我們也可以方便的聲明自己的變量。

省寫方式 這么理解? 這種省寫方式調用doSomething所得到的Object的toString(),然后直接寫到out里面。相當于:

out.print(object.doSomethiing().toString())

JavaBean 里面的scope定義了作用域范圍,這個范圍在這里的意思是?

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

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

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

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

總結

以上是生活随笔為你收集整理的jsp文件能转换html吗,html怎么转换成jsp的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。