曾經(jīng)風光無限的 JSP,為什么現(xiàn)在很少有人使用了?(曾經(jīng)風光無限的 jsp,為什么現(xiàn)在很少有人使用了呢)

曾經(jīng)風光無限的 JSP,為什么現(xiàn)在很少有人使用了?(曾經(jīng)風光無限的 jsp,為什么現(xiàn)在很少有人使用了呢)

來源 | 愚公要移山(ID:fdd_sxu_nwpu)

jsp技術作為曾經(jīng)一度火爆的技術,在最近幾年確實使用率越來越低了,這篇文章帶你一塊探究一下jsp的從生到死。

曾經(jīng)風光無限的 JSP,為什么現(xiàn)在很少有人使用了?(曾經(jīng)風光無限的 jsp,為什么現(xiàn)在很少有人使用了呢)

jsp技術的誕生

在很久很久以前,那時候我們的開發(fā)都是通過servlet來完成的,這個servlet是什么呢?我們先來認識一下:

servlet用Java語言編寫的服務器端程序。主要功能是和瀏覽器進行交互,生成頁面展示。

長下面這個樣子:

public class HelloWorld extends HttpServlet { public void doGet(HttpServletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter; out.println("<html>"); out.println("<head>"); out.println("<title>Hello World</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } }

我們可以看到前端所展示的頁面,需要我們servlet去一個標簽一個標簽去生成,如果一個頁面超級復雜,動不動幾千行代碼,那這個servlet效率也就太低了。而且整個servlet代碼也會十分臃腫而且可讀性非常差。

這時候怎么辦呢?sun公司很早就意識到了這個問題,于是便倡導很多公司一塊來創(chuàng)建了一種能夠動態(tài)生成html的新技術,不久之后jsp便誕生了。有效率的解決了上面servlet所出現(xiàn)的問題。

曾經(jīng)風光無限的 JSP,為什么現(xiàn)在很少有人使用了?(曾經(jīng)風光無限的 jsp,為什么現(xiàn)在很少有人使用了呢)

jsp的發(fā)展

既然jsp技術能夠解決剛剛servlet代碼里面所出現(xiàn)的技術,我們來看一下是如何解決的:在這里我們舉一個小例子,就是前端jsp向服務器servlet發(fā)送請求圖書頁面的功能。

首先我們看一下servlet:

public class List_book extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //聲明一個ArrayList.用來存放Book類中的數(shù)據(jù) ArrayList<Book> list = new ArrayList<Book>; for(int i=0;i<10;i ){ Book book = new Book; book.setName(res.getString("name" i)); book.setAuthor(res.getString("author" i)); list.add(book); } //將list數(shù)據(jù)發(fā)送到.jap文件中 request.getRequestDispatcher("ListBook.jsp").forward(request, response); } }

我們會發(fā)現(xiàn),現(xiàn)在的servlet沒有一點html代碼了。我們只需要把數(shù)據(jù)交給jsp。此時我們的頁面展示就交給jsp來做了?,F(xiàn)在我們來看一下jsp長什么樣子:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath;%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="description" content="This is my page"> <script></script> </head> <body> <% ArrayList list = (ArrayList) request.getAttribute("list"); %> <h2 align = "center">圖書列表</h2> <table border = 1px align = "center"> <tr><th>圖書名稱</th><th>圖書作者</th></tr> <!-- 繼續(xù)使用jsp語句 循環(huán)放入存放于list中的Book實體類中的數(shù)據(jù) --> <% for(int i = 0;i<list.size;i ){ Book book =(Book) list.get(i);%> <tr><th><%=book.getName %></th><th><%=book.getAuthor%></th><tr> } %> </table> </body> </html>

這就是jsp,我們可以在html頁面中寫一些java代碼。對于我們程序員來說,在開發(fā)當中靜態(tài)的頁面我們只需要用html和css寫一些標簽來展示即可,對于那些動態(tài)的部分我們就可以使用java代碼。

那么jsp和servlet是不是就是這種協(xié)作的關系,本質上有什么區(qū)別呢?

其實jsp只是servlet的一種特殊形式,每一個jsp頁面就是一個servlet實例,通俗一點的話來說:jsp就是servlet,只不過servlet把一些業(yè)務功能剝離開來交給了或者是形成了jsp。明白了吧。在我們的項目編譯的時候就是把jsp編譯成了servlet。

你們會發(fā)現(xiàn),這樣做其實挺好的,市場也驗證了一切,很快jsp技術流行開來,可是隨著時間的流逝,業(yè)務越來越復雜,jsp也開始跟不上時代了。

曾經(jīng)風光無限的 JSP,為什么現(xiàn)在很少有人使用了?(曾經(jīng)風光無限的 jsp,為什么現(xiàn)在很少有人使用了呢)

jsp的危機

我們先看一個對話場景:

java程序員:終于寫完了功能,是時候在界面上展示了。

前端程序員:你功能寫完了,我沒有數(shù)據(jù),在頁面什么沒法展示呀

java程序員:數(shù)據(jù)我寫好了,你在jsp中調(diào)用XX方法就能獲取了,

前端程序員:我已經(jīng)在jsp中寫好了這個方法,你為什么自己寫了?

于是乎,無窮無盡的爭吵還在繼續(xù)當中。

這就是jsp的弊端,為什么呢?我們可以來總結一下:

(1)動態(tài)和靜態(tài)資源放在一起,一旦服務器出現(xiàn)狀況,前后臺一起玩完,用戶體驗極差。

(2)一旦jsp出現(xiàn)了問題,就需要前端后端發(fā)開人員一塊來分析解決,效率低。

(3)jsp無法使用nginx等。

(4)jsp頁面復雜,難以修改。

(5)第一次加載jsp需要編譯成servlet,時間久,而且業(yè)務量大的時候,jsp負擔太大。

(6)jsp對于開發(fā)人員簡直就是一個揮之不去的痛,太難了?。。?/p>

鑒于以上缺點,于是另外一套機制橫空出世了,這就是前后端分離。什么是前后端分離呢?

前后端分離其實就是后端工程師只關注于后端頁面的開發(fā),不再處理前端問題。前端工程師只關注于自己的頁面開發(fā)。需要數(shù)據(jù)交互的時候,兩者會有一份接口文檔。

就這樣這種思想架構很快的流行開來,這也就是為什么jsp落寞的真正原因。從此java從jsp轉向了restful結構,springMCV也開始流行開來,并逐漸占領了市場。前后端分離有什么優(yōu)點呢?我們來總結一下:

(1)動態(tài)和靜態(tài)資源分開存儲。

(2)出現(xiàn)bug能很快定位是前端還是后端。

(3)支持nginx。在高并發(fā)狀態(tài)下極其優(yōu)秀。

(4)直接請求頁面,不用編譯,速度效率都提上來了。

(5)從此前端和后端是相親相愛的一家人了!?。?!

jsp的落幕

又隨著時間的推移,jsp的時代基本上一去不復返了,因為我們又走入了移動互聯(lián)時代,這時候的客戶端可不是前端頁面了,還包括手機、汽車、電視等等各種設備,這種情況下,前后端必須要分離了。jsp基本上徹底告別了它的舞臺。

曾經(jīng)風光無限的 JSP,為什么現(xiàn)在很少有人使用了?(曾經(jīng)風光無限的 jsp,為什么現(xiàn)在很少有人使用了呢)曾經(jīng)風光無限的 JSP,為什么現(xiàn)在很少有人使用了?(曾經(jīng)風光無限的 jsp,為什么現(xiàn)在很少有人使用了呢)

相關新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部