SP全稱Java Server Pages,它來提供JavaWeb編程的前端頁面展示,使用Jsp標簽在html代碼中加入java代碼,標簽通常以<%開頭以%>結束。
JSP是一種Java servlet,主要用于實現Java web應用程序的用戶界面部分。
JSP通過網頁表單獲取用戶輸入數據、訪問數據庫及其他數據源,然后動態地創建網頁。
JSP標簽有多種功能,比如訪問數據庫、記錄用戶選擇信息、訪問JavaBeans組件等,還可以在不同的網頁中傳遞控制信息和共享信息。
JSP的優勢:
與ASP相比:JSP有兩大優勢。首先,動態部分用Java編寫,而不是VB或其他MS專用語言,所以更加強大與易用。第二點就是JSP易于移植到非MS平臺上。
與純 Servlets相比:JSP可以很方便的編寫或者修改HTML網頁而不用去面對大量的println語句。
與SSI相比:SSI無法使用表單數據、無法進行數據庫鏈接。
與JavaScript相比:雖然JavaScript可以在客戶端動態生成HTML,但是很難與服務器交互,因此不能提供復雜的服務,比如訪問數據庫和圖像處理等等。
與靜態HTML相比:靜態HTML不包含動態信息。
JSP 結構:
jsp結構
JSP 生命周期:
以下是JSP生命周期中所走過的幾個階段:
編譯階段:
servlet容器編譯servlet源文件,生成servlet類
初始化階段:
加載與JSP對應的servlet類,創建其實例,并調用它的初始化方法
執行階段:
調用與JSP對應的servlet實例的服務方法
銷毀階段:
調用與JSP對應的servlet實例的銷毀方法,然后銷毀servlet實例
很明顯,JSP生命周期的四個主要階段和servlet生命周期非常相似,下面給出圖示:
JSP 語法:
腳本程序
腳本程序可以包含任意量的Java語句、變量、方法或表達式,只要它們在腳本語言中是有效的。
腳本程序的語法格式:
<% 代碼片段 %>
或者,您也可以編寫與其等價的XML語句,就像下面這樣:
<jsp:scriptlet> 代碼片段</jsp:scriptlet>
任何文本、HTML標簽、JSP元素必須寫在腳本程序的外面。
JSP聲明:
一個聲明語句可以聲明一個或多個變量、方法,供后面的Java代碼使用。在JSP文件中,您必須先聲明這些變量和方法然后才能使用它們。
JSP聲明的語法格式:
JSP表達式:
一個JSP表達式中包含的腳本語言表達式,先被轉化成String,然后插入到表達式出現的地方。
由于表達式的值會被轉化成String,所以您可以在一個文本行中使用表達式而不用去管它是否是HTML標簽。
表達式元素中可以包含任何符合Java語言規范的表達式,但是不能使用分號來結束表達式。
JSP表達式的語法格式:
程序示例:
JSP注釋:
JSP注釋主要有兩個作用:為代碼作注釋以及將某段代碼注釋掉。
JSP注釋的語法格式:
<%-- 這里可以填寫 JSP 注釋 --%>
程序示例:
不同情況下使用注釋的語法規則:
語法 | 描述 |
<%-- 注釋 --%> | JSP注釋,注釋內容不會被發送至瀏覽器甚至不會被編譯 |
<!-- 注釋 --> | HTML注釋,通過瀏覽器查看網頁源代碼時可以看見注釋內容 |
<\% | 代表靜態 <%常量 |
%\> | 代表靜態 %> 常量 |
\' | 在屬性中使用的單引號 |
\" | 在屬性中使用的雙引號 |
JSP指令:
JSP指令用來設置與整個JSP頁面相關的屬性。
JSP指令語法格式:
<%@ directive attribute="value" %>
這里有三種指令標簽:
指令 | 描述 |
<%@ page ... %> | 定義頁面的依賴屬性,比如腳本語言、error頁面、緩存需求等等 |
<%@ include ... %> | 包含其他文件 |
<%@ taglib ... %> | 引入標簽庫的定義,可以是自定義標簽 |
JSP行為:
JSP行為標簽使用XML語法結構來控制servlet引擎。它能夠動態插入一個文件,重用JavaBean組件,引導用戶去另一個頁面,為Java插件產生相關的HTML等等。
行為標簽只有一種語法格式,它嚴格遵守XML標準:
<jsp:action_name attribute="value" />
行為標簽基本上是一些預先就定義好的函數,下表羅列出了一些可用的JSP行為標簽::
語法 | 描述 |
jsp:include | 用于在當前頁面中包含靜態或動態資源 |
jsp:useBean | 尋找和初始化一個JavaBean組件 |
jsp:setProperty | 設置 JavaBean組件的值 |
jsp:getProperty | 將 JavaBean組件的值插入到 output中 |
jsp:forward | 從一個JSP文件向另一個文件傳遞一個包含用戶請求的request對象 |
jsp:plugin | 用于在生成的HTML頁面中包含Applet和JavaBean對象 |
jsp:element | 動態創建一個XML元素 |
jsp:attribute | 定義動態創建的XML元素的屬性 |
jsp:body | 定義動態創建的XML元素的主體 |
jsp:text | 用于封裝模板數據 |
JSP隱含對象:
JSP支持九個自動定義的變量,江湖人稱隱含對象。這九個隱含對象的簡介見下表:
對象 | 描述 |
request | HttpServletRequest類的實例 |
response | HttpServletResponse類的實例 |
out | PrintWriter類的實例,用于把結果輸出至網頁上 |
session | HttpSession類的實例 |
application | ServletContext類的實例,與應用上下文有關 |
config | ServletConfig類的實例 |
pageContext | PageContext類的實例,提供對JSP頁面所有對象以及命名空間的訪問 |
page | 類似于Java類中的this關鍵字 |
Exception | Exception類的對象,代表發生錯誤的JSP頁面中對應的異常對象 |
控制流語句:
JSP提供對Java語言的全面支持。您可以在JSP程序中使用Java API甚至建立Java代碼塊,包括判斷語句和循環語句等等。
判斷語句
If…else塊,請看下面這個例子:
現在來看看switch…case塊,與if…else塊有很大的不同,它使用out.println(),并且整個都裝在腳本程序的標簽中,就像下面這樣:
循環語句
在JSP程序中可以使用Java的三個基本循環類型:for,while,和 do…while。
讓我們來看看for循環的例子:
將上例改用while循環來寫:
E瀏覽器,將在6月16日正式退役。
5月15日,微軟旗下的Edge瀏覽器以繼任者的身份宣布了這則消息,引起極大熱議:
這款誕生于1995年,市場占有率一度達到95%,卻在不久之后因為安全風險、兼容性差、速度太慢等問題失去了用戶青睞,甚至淪為了表情包大戶的瀏覽器,居然真的離開我們了?
圖源網絡
事實上,微軟官方在去年就已經正式宣布:自2022年6月15日起,微軟將停止對IE瀏覽器進行更新和維護,Edge瀏覽器則會接過這一棒。
公告里表示,用戶可以將IE瀏覽器中的數據直接遷移到Edge瀏覽器中,對于一些遺留了大量基于IE的應用程序,無法立刻進行遷移的企業,微軟Edge也將提供一種Internet Explorer模式,至少能支持到2029年。
圖源微軟官網
今天,就讓我們走進這個被戲稱為是“傳奇垃圾”的瀏覽器,再看一遍它的27年。
IE瀏覽器:曾經的瀏覽器王者
時間回到1995年,微軟推出了Windows 9x系列的第一代產品,Windows 95操作系統,而其互聯網連接工具包中,出現了一個名叫Internet Explorer的軟件包。
當時的IE瀏覽器還是這樣一個非常簡單的圖形化瀏覽器:
圖源網絡
剛出生的IE瀏覽器并沒有一飛沖天,而是與占當年瀏覽器市場份額90%的另一家瀏覽器,網景(Netscape)你爭我奪地開始更新,打響了一場瀏覽器之戰。
瀏覽器作為整個英特網的入口,其重要性不言而喻,而微軟不可能不明白這個道理,于是它放了個“狠招”:把IE瀏覽器作為Windows系統的內置瀏覽器,捆綁銷售。
自1985年以來,微軟就手握操作系統主導地位,因此這一招可謂是效果驚人,自此之后IE瀏覽器的市場占有率就節節攀升,到2003年IE6的版本時,甚至達到了95%。
圖源維基百科
這種恐怖的占有率產生的影響是巨大的,當時有不少官方機構,如銀行、學校等都會基于IE瀏覽器搭建自己的官方平臺,有很多還沿用到了今天。
但一度壟斷的市場地位,同時也使得IE瀏覽器的維護和更新速度非常緩慢。
這不僅導致了層出不窮的安全漏洞,如卡死、啟動慢,也使得開發者們叫苦連天——為了適應這款不支持新的網頁開發模式,卻幾乎是市場唯一的瀏覽器,他們必須得額外增加不少兼容性代碼。
圖源網絡
2006年,新推出的Vista系統遭遇了“一片狼藉”的討伐,連帶著預裝的IE7也同時失敗。
而這時,瀏覽器市場已經開始百花齊放。
2002年由Mozilla社群創建的火狐瀏覽器(Firefox),以其速度、安全性及擴展組件而受稱贊,首次發布后的9個月內下載量超過6000萬。由于網景(Netscape)被收購前創建了Mozilla社群,火狐瀏覽器還被認為是網景瀏覽器的精神續作。
2003年1月,Safari被引入Mac OS X Panther,這是蘋果公司開發的一款圖形瀏覽器,依托逐漸崛起的蘋果公司,它開始走起了如同IE一樣的道路:依托本公司廣受歡迎的設備和操作系統,穩健地收割用戶。
2008年由谷歌開發的Chrome瀏覽器,更稱得上是橫空出世——外觀簡潔、插件豐富,其代碼更是全部開源,現在國內流行的360、UC、QQ等瀏覽器,可以說都是基于谷歌的Chromium項目進行開發的。
內憂外患之下,微軟在2009年推出的IE8更像是一種垂死掙扎,雖然修復了不少弊端,比如改善了對網絡開發人員的CSS支持,增加了隱私瀏覽等新功能。但此時,大多數開發者和用戶都已經轉向了其他瀏覽器。
圖源維基共享資源(Wikimedia Commons)
2012年,Chrome市場占有率首次超越了IE。
2013,IE11成為了微軟最后推出的一個IE版本。
而在2015年5月30日,隨著Edge瀏覽器的正式亮相,IE瀏覽器開始正式從微軟內部剝離。
從輝煌一時到落幕
新的Edge瀏覽器內置微軟開發的EdgeHTML引擎, 宣稱比IE瀏覽器更快、更安全、更現代,也能解決老網站、遺留網站和應用程序的兼容性問題。
但這時的瀏覽器市場已經被幾位后來者牢牢占據了頭號交椅,Edge只能占據極小的一塊份額,人氣低迷。而作為前輩的IE瀏覽器,現在已經淪落成了一款“唯一功能就是下載其他瀏覽器”的瀏覽器,梗圖無數。
圖源網絡
比如,推特上就有這么一個帳號,故意播報一些已經過時多年的舊聞,在玩梗嘲笑IE瀏覽器速度的同時,發揮著類似于懷舊bot的作用:
民間嘲諷不斷,微軟官方也在加速IE的退休過程。
2016年,微軟宣布停止對IE8、9、10的支持,并且建議用戶升級到IE11或者改用Edge瀏覽器。
2020年11月30日起,Microsoft Teams停止對IE11的支援。
2021年5月19日,微軟正式宣布IE瀏覽器退休時間。直到今天,Edge瀏覽器在“前輩離職”的前一個月,最后送了它一程。
而平時黑起IE紛紛玩梗玩到飛起的用戶們,在這時也都難得地發出了不少感嘆。畢竟,這款瀏覽器不僅承載了不少回憶,在當時的時代中也算是做出了不少技術創新:
比如1996年的IE3是第一個實現CSS(層疊樣式表)的瀏覽器,還引入了Java applet和ActiveX控件;IE4引入了一個渲染引擎,成為一個可以在其他應用程序中使用的可嵌入組件;IE5則在JavaScript中引入了XMLHttpRequest特性,這一特性構成了我們現在使用的每個Web應用程序背后的底層技術......
而技術不斷革新的互聯網,最終淘汰了曾經輝煌一時的IE瀏覽器。最終留下的,就只有一份時代的回憶了。
圖源網絡
采寫:南都見習記者楊博雯
ava與JavaScript是好多初學者容易弄混的一個概念。要明白java與JavaScript的區別,首要了解的是二者的定義,那么什么是Java呢?Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。那么什么是JavaScript呢?JavaScript是一種解釋性的,基于對象的腳本語言。
當我們知道了二者的定義之后,接下來就要講二者的區別了。
1、部署環境的區別:
Java理論上是可以部署在任何環境的。
JavaScript卻只能局限于web瀏覽器。
2、基于對象和面向對象:
Java是面向對象的語言,所以當我們在開發程序時必須要先設計對象。
JavaScript是一種腳本語言,它是基于對象和事件驅動的編程語言,并且其本身也具有非常豐富的內部對象可以供使用。
3、解釋和編譯:
Java的源代碼在傳遞到客戶端執行之前是需要先經過編譯才行。
JavaScript的定義是一種解釋性的變成語言,因此其源代碼是無需經過編譯的,只需要將文本格式的字符發給瀏覽器解釋執行即可。
4、代碼格式不一樣:
Java是一種與HTML無關的格式,必須像HTML中引用外媒體那樣進行裝載,代碼以字節代碼形式保存在獨立的文檔中。
JavaScript代碼是一種文本地府個事,可直接嵌入html文檔,可動態加載。
5、在HTML中簽入方式不同:
在HTML中,Java使用<applet>......</applet>來標識。
在HTML中,JavaScript使用<script>......</script>來標識。
6、靜態聯編和動態聯編:
Java采用靜態聯編,即Java的對象引用必須在編譯時進行,以使編譯器能夠實現強類型檢查。
JavaScript采用動態聯編,即JavaScript的對象引用在運行時進行檢查,如不經編譯,則無法實現對象引用的檢查。
7、語言性質:
Java是高級程序語言,對變量檢查要求嚴格。
JavaScript是簡單的解釋性腳本語言,對變量的要求不是很嚴格。
8、作用用途:
Java用以開發軟件、手機、游戲等等。
JavaScript多用于網頁或類似于網頁的編程、可用于服務器或者客戶端。
9、工作原理:
Java開發的產品需要編譯成二進制代碼后直接在系統平臺級別上運行的,速度和效率高。
JavaScript多由瀏覽器逐級進行解釋執行,所以速度和效率很慢
*請認真填寫需求信息,我們會在24小時內與您取得聯系。