澹zany
JSP已經是一種淘汰的技術,故而使用少,目前存在的JSP網站主要以老項目居多,銀行,電信等行業,現在開發提倡前後端分離,JSP技術做不到前後端分離.
JSP淘汰的主要原因:
1.JSP
的頁面既可以寫Java代碼,又可以寫Java後端代碼,這個聽起來很高端,其實就是一個垃圾的設計,前端代碼都已經夠多的了,在往裡面添加Java代碼,看起來很難受,缺乏邏輯性,影響開發.2.JSP
的本質還是一個Servlet,運行還得經過編譯為一個Servlet,故而在效率上比不過靜態化的Html頁面(直接Ajax等前後端異步交互處理),在資源消耗上JSP相比較Html頁面消耗資源要多上許多.3.JSP
是一個動態頁面,頁面內容不可控,影響搜索引擎SEO優化,在網站排名上搜索引擎有限排Html今天太頁面,其次排JSP(動態不可控,可能會出現色情,暴力等不適內容),流量和廣告是網站生存的根本,故而大部分網站淘汰了JSP技術改用HTML靜態頁面.4.JSP
頁面混亂,前端後端代碼一起寫很亂,不能進行前後端分離開發,不符合目前網站開發的主要趨勢與潮流.BigDataKer
以前,jsp,asp,aspx等很流行,那是因為當時前端網頁與後端代碼混合開發。HTML只負責靜態網頁,其他的腳本負責實現動態網頁。對於動態網頁,寫幾行HTML,再插幾句ASP、JSP代碼,然後再寫幾行HTML,再寫幾行jsp,裡面還打印幾行HTML內容……很難閱讀,也很難調試。寫一個網頁既要懂網頁設計:字體、顏色、佈局、動畫,又要懂代碼編程、數據庫、業務邏輯。那時開發網站的,基本都是“全棧工程師”。
現在,有了各種前段框架(JQuery,Ajax,Angular,Vue,Bootstrap,React,……),前後端代碼分開開發。前端使用HTML和js來完成各種複雜的動態效果,重新刷新和加載後端數據,而不需要向後端索要整個網頁內容。前端負責html、css、js,主要是美編、設計、圖片處理、js程序員進行開發。而後端只負責業務及數據處理,各種語言都能實現,以java、.net、php、python等語言為主。這些後端數據URL可以自己定義後綴名,只要後端增加一個路由解析就可以了。所以,呈現在瀏覽器上的URL基本都是HTML後綴的。但是,如果調試的話就會發現有很多內部數據交互的URL並不是HTML後綴的。
RaymondIT
提問的你,應該是一個很注意細節的人,作為一個不是行業內的你,能發現這個問題,一來可以說明你的年紀應該是30+以上,那麼現在我來回答你的問題,這是一個涉及到,web開發的一個變革,在2005年的時候,谷歌公司出了一個技術叫ajax,核心技術是XMLhttprequest這個東西,你可能並不知道,但是百度一下,大概也會得到一些答案,這個東西可以讓靜態網頁和服務器進行數據交互,在這個之前,我們在做開發的時候必須是在使用服務端腳本需要進行數據交互,使用數據頁面的渲染重載,但是這個東西在當時出現了,國內還是延後了,只有當時的大公司在用,大概在2010年之後,國內中小型公司,加上各類人才的崛起,慢慢的開始使用!下面省略一萬字加,因為靠打字實在是說不清楚,但是有一天得明確,看不到了絕不是技術落後,只是普通用戶看不到了,但是在普通用戶看不到的地方,這些技術,比如java一直處於開發語言排名的前三位,如果真的想要知道,這個地方的回答不能給你答案,你需要找一個真正專業的人來給你解答,至少是你的朋友或是你朋友的朋友,是這個行業內的人!
布衣143358545
這是個好問題。
首先現代動態網站在真正訪問網頁前會經過DNS、負載均衡器(nginx、apache)才會真正到達後端的網頁服務或api服務,nginx可以對url進行處理和分發,不管以什麼結尾的url都可解析後進行轉發,所以以html還是jsp結尾不重要。
其次,最好不要以jsp為結尾,因為這會暴露後端的技術棧,容易被人有針對性的進行攻擊。
再次,已html為結尾可以留一個口子,方便對網站進行靜態化優化,如秒殺或大促時需要對大流量網頁進行優化,這時可以將網頁託管到CDN進行加速。
最後,其實以html為結尾只是一個比較通用的方案,最好是直接以路徑的方式暴露服務路徑(如
https://www.xxx.com/path/page
),不加任何結尾,通過負載均衡器來進行分發,這樣設計的擴展性更好,方便將網頁和api進行統一處理,如接入網關服務、統一限流等。Java互聯網架構
這個問題其實很好,其實,如果你弄明白了為啥,能幫助你更好的理解web。
談為什麼之前,我們先簡單說一http工作的原理。當你在瀏覽器中輸入網址的時候,實際上相當於輸入了一條命令,格式如下。
協議://主機名[:端口] +參數
這個命令的意思是。用標註的協議所指定的方法,去鏈接主機的相應端口,參數是參數。
比如,當你輸入http://www.google.com/ 的時候,實際是告訴瀏覽器用http的get 方法,去訪問www.google.com主機的80端口,參數是"/\
shawn25
關於這個問題,我談談自己的理解,如果有不對的地方,歡迎大家留言指正。
首先,你看到的結尾不一定是真的。
如果URL中是叫index.html就一定和jsp沒有關係麼?不一定的:
首先,這個地址大家一定很常見到吧:'http://localhost:8080/index.jsp'。學名叫做URL,統一資源定位符。【資源】兩個字圈起來,知識點,後面要考。
我們實際的代碼中,是有index.jsp這個文件的。但是,要注意(敲黑板),URL中的index.jsp是資源,代碼中的index.jsp是文件,不是一個概念,兩者不能劃等號。
大家應該對JSP都很瞭解了,JSP文件需要放到Servlet容器才能運行,servlet容器接到URL為“index.jsp”的請求時,容器會按照默認的方式去尋找“index.jsp”這個文件。這裡的映射是可以自定義的,也就是說,我們修改了映射之後,可以做到讓“index.html”去調用“index.jsp”文件,另外一方面,也有可能URL中帶有JSP,實際上沒有用到JSP。
不過話說回來,JSP用的卻是少了。
企業級的老項目,還是有用JSP的,畢竟頁面中嵌入Java代碼還是很方便的;不過隨著業務的複雜,如果將業務邏輯寫到JSP中是非常難維護的;
後來慢慢流行MVC的架構,JSP成了其中的View;
現在更多的企業開始使用分佈式的架構,進行前後臺的分離,前端頁面完全是靜態頁面,通過接口調用後臺服務獲得數據,因此也減少了JSP的使用;
而且對於互聯網的網站,靜態頁面更有利於SEO,更容易被搜索引擎收錄。
我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。
會點代碼的大叔
首先,html結尾的頁面是靜態地址,而jsp結尾的頁面代表的動態頁面地址。作為一個個人站長,平時主要涉及的就是php開發的網站,哪怕使用的PHP語言開發的網站,真正展示出來的網址也不一定是php結尾的,如圖片所示樣例就是以html來結尾。
1、為了SEO優化
所謂的html頁面即靜態頁面,搜索引擎偏愛靜態花的頁面,因此大部分的網站為了優化網站收錄,更多的偏向於使用html結尾。
2、如何定義網頁的地址以html結尾呢?
其實很簡單,比如以PHP為例,只需要定義服務器開啟偽靜態功能,再自定義
.htaccess
文件即可,如下為一個自定義的偽靜態文件。<ifmodule>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
IT漫話
簡單回答:
一、安全原因
現在很多站長為了保護網站安全,都是採用的前臺靜態,後臺動態的方式。html頁面即靜態的,基本上是html+CSS+JS代碼,這種網站代碼編寫時,很少有安全漏洞。後臺採用JSP、PHP、ASP或.NET等等,即動態程序,通過這些動態程序,管理網站內容,並將網站頁面轉換成靜態文件,在前臺發佈。由於動態代碼編寫時,很容易產業程序漏洞,黑客利用程序漏洞可攻擊網站。因此,站長就會將後臺文件放在用戶接觸不到的服務器上。一般訪問的用戶,只能看到前臺html文件。所以就產生了題主的疑問了。
二、訪問速度原因。
由於訪問html靜態文件時,代碼是什麼內容,瀏覽器就解析並顯示什麼內容,不存在數據庫的讀取。所以訪問數據就相對較快。而動態文件,用戶訪問是,服務器需要讀取數據庫內容,根據程序文件將相關數據轉換成html代碼,瀏覽器再解析並顯示。這樣訪問速度就相對較慢。
互聯網運營人燈塔
因為現在已經前後端分離了,最早的時候程序員開發一個頁面都是寫在java代碼裡面,後來隨著網頁的複雜化,這樣的頁面編寫方式不止代碼書寫麻煩,且後期維護閱讀不變,另一個工程量巨大,後來才用的JSP專門做view層的開發,也就是說JSP本質上就是一個servelt,也就是一個java類,你可以看他發佈到Tomcat上時被編譯成了一個class
Mr林0
jsp基本已經淘汰,目前大廠開發大多是前後端分離,前端只關心UI設計,後端開發者給API接口,這類的URL後綴基本都是HTML,也可以不需要後綴。小型的開發一般會使用PHP,node.
js,Python,go等做全棧開發,這類開發其實應該叫做URL加參數,並不一定需要後綴,或者可以說任意後綴,根據web框架路由系統分發不同的資源。總之現在後綴不是必須的。