為什麼現在大多數網站是html結尾,很少見以jsp結尾?

澹zany


這是個好問題。

首先現代動態網站在真正訪問網頁前會經過DNS、負載均衡器(nginx、apache)才會真正到達後端的網頁服務或api服務,nginx可以對url進行處理和分發,不管以什麼結尾的url都可解析後進行轉發,所以以html還是jsp結尾不重要。


其次,最好不要以jsp為結尾,因為這會暴露後端的技術棧,容易被人有針對性的進行攻擊。


再次,已html為結尾可以留一個口子,方便對網站進行靜態化優化,如秒殺或大促時需要對大流量網頁進行優化,這時可以將網頁託管到CDN進行加速。


最後,其實以html為結尾只是一個比較通用的方案,最好是直接以路徑的方式暴露服務路徑(如

https://www.xxx.com/path/page

),不加任何結尾,通過負載均衡器來進行分發,這樣設計的擴展性更好,方便將網頁和api進行統一處理,如接入網關服務、統一限流等。

Java互聯網架構


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


提問的你,應該是一個很注意細節的人,作為一個不是行業內的你,能發現這個問題,一來可以說明你的年紀應該是30+以上,那麼現在我來回答你的問題,這是一個涉及到,web開發的一個變革,在2005年的時候,谷歌公司出了一個技術叫ajax,核心技術是XMLhttprequest這個東西,你可能並不知道,但是百度一下,大概也會得到一些答案,這個東西可以讓靜態網頁和服務器進行數據交互,在這個之前,我們在做開發的時候必須是在使用服務端腳本需要進行數據交互,使用數據頁面的渲染重載,但是這個東西在當時出現了,國內還是延後了,只有當時的大公司在用,大概在2010年之後,國內中小型公司,加上各類人才的崛起,慢慢的開始使用!下面省略一萬字加,因為靠打字實在是說不清楚,但是有一天得明確,看不到了絕不是技術落後,只是普通用戶看不到了,但是在普通用戶看不到的地方,這些技術,比如java一直處於開發語言排名的前三位,如果真的想要知道,這個地方的回答不能給你答案,你需要找一個真正專業的人來給你解答,至少是你的朋友或是你朋友的朋友,是這個行業內的人!


布衣143358545


以前,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


這個問題其實很好,其實,如果你弄明白了為啥,能幫助你更好的理解web。

談為什麼之前,我們先簡單說一http工作的原理。當你在瀏覽器中輸入網址的時候,實際上相當於輸入了一條命令,格式如下。

協議://主機名[:端口] +參數

這個命令的意思是。用標註的協議所指定的方法,去鏈接主機的相應端口,參數是參數。

比如,當你輸入http://www.google.com/ 的時候,實際是告訴瀏覽器用http的get 方法,去訪問www.google.com主機的80端口,參數是"/\

shawn25


簡單回答:

一、安全原因

現在很多站長為了保護網站安全,都是採用的前臺靜態,後臺動態的方式。html頁面即靜態的,基本上是html+CSS+JS代碼,這種網站代碼編寫時,很少有安全漏洞。後臺採用JSP、PHP、ASP或.NET等等,即動態程序,通過這些動態程序,管理網站內容,並將網站頁面轉換成靜態文件,在前臺發佈。由於動態代碼編寫時,很容易產業程序漏洞,黑客利用程序漏洞可攻擊網站。因此,站長就會將後臺文件放在用戶接觸不到的服務器上。一般訪問的用戶,只能看到前臺html文件。所以就產生了題主的疑問了。

二、訪問速度原因。

由於訪問html靜態文件時,代碼是什麼內容,瀏覽器就解析並顯示什麼內容,不存在數據庫的讀取。所以訪問數據就相對較快。而動態文件,用戶訪問是,服務器需要讀取數據庫內容,根據程序文件將相關數據轉換成html代碼,瀏覽器再解析並顯示。這樣訪問速度就相對較慢。


互聯網運營人燈塔


關於這個問題,我談談自己的理解,如果有不對的地方,歡迎大家留言指正。


首先,你看到的結尾不一定是真的。

如果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

文件即可,如下為一個自定義的偽靜態文件。

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]


IT漫話


網頁分為動態網頁和靜態網頁。

靜態網頁默認後綴是html,動態網頁後綴則根據編程語言來確定的,如Java語言的後綴為jsp,ASP語言的後綴為asp,PHP語言的後綴為php,Python語言的後綴為php等。

動態語言編寫的文件後綴僅僅是約定俗成的規定,但並不是強制的,這是因為所有動態語言編寫的文件都需要靠解析器去解析成HTML,而解析器對於後綴並沒有強制規定。

現在部署動態網站一般都是Web服務器+CGI協議+動態語言解析器的,因而很多時候為了SEO、安全等方面考慮,會通過Web服務器rewrite來做出偽靜態,通俗的說就是把動態語言開發的網頁偽裝成純靜態網頁。

使用偽靜態部署後,後綴就可以隨意編寫啦,因為靠的就是Web服務器將該rewrite規則解析成最終的文件傳遞給動態語言解析器的。

總結一下,用偽靜態方式把動態語言文件隱藏起來有利於SEO以及服務器安全。因而網頁後綴可以為任何字符串,一般都直接寫成HTML或者乾脆不帶後綴。


web架構師自我修煉


我還是挺懷念jsp、asp的,前後端在一個頁面裡面,修改起來方便啊,看到jsp就是源代碼,隨時可以修改,不用編譯


分享到:


相關文章: