曾经风光无限的jsp技术,为什么现在很少有人用了呢?

jsp技术作为曾经一度火爆的技术,在最近几年确实使用率越来越低了,这篇文章带你一块探究一下jsp的从生到死。

一、jsp技术的诞生

在很久很久以前,那时候我们的开发都是通过servlet来完成的,这个servlet是什么呢?我们先来认识一下:

servlet用Java语言编写的服务器端程序。主要功能是和浏览器进行交互,生成页面展示。

1-servlet.jpg

长下面这个样子:

   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公司很早就意识到了这个问题,于是便倡导很多公司一块来创建了一种能够动态生成html的新技术,不久之后jsp便诞生了。有效率的解决了上面servlet所出现的问题

2-jsp.jpg

二、jsp的发展

既然jsp技术能够解决刚刚servlet代码里面所出现的技术,我们来看一下是如何解决的:在这里我们举一个小例子,就是前端jsp向服务器servlet发送请求图书页面的功能。

首先我们看一下servlet:

public class List_book extends HttpServlet {          
     public void doGet(HttpServletRequest request, HttpServletResponse response)  
             throws ServletException, IOException {  
        //声明一个ArrayList.用来存放Book类中的数据  
         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数据发送到.jap文件中  
         request.getRequestDispatcher("ListBook.jsp").forward(request, response);  
     }  
}  

我们会发现,现在的servlet没有一点html代码了。我们只需要把数据交给jsp。此时我们的页面展示就交给jsp来做了。现在我们来看一下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>    
            <!-- 继续使用jsp语句 循环放入存放于list中的Book实体类中的数据 -->     
            <%              
             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代码。对于我们程序员来说,在开发当中静态的页面我们只需要用html和css写一些标签来展示即可,对于那些动态的部分我们就可以使用java代码。

那么jsp和servlet是不是就是这种协作的关系,本质上有什么区别呢?

其实jsp只是servlet的一种特殊形式,每一个jsp页面就是一个servlet实例,通俗一点的话来说:jsp就是servlet,只不过servlet把一些业务功能剥离开来交给了或者是形成了jsp。明白了吧。在我们的项目编译的时候就是把jsp编译成了servlet。

你们会发现,这样做其实挺好的,市场也验证了一切,很快jsp技术流行开来,可是随着时间的流逝,业务越来越复杂,jsp也开始跟不上时代了。
三、jsp的危机

我们先看一个对话场景:

java程序员:终于写完了功能,是时候在界面上展示了。
前端程序员:你功能写完了,我没有数据,在页面什么没法展示呀
java程序员:数据我写好了,你在jsp中调用XX方法就能获取了,
前端程序员:我已经在jsp中写好了这个方法,你为什么自己写了?
于是乎,无穷无尽的争吵还在继续当中。

这就是jsp的弊端,为什么呢?我们可以来总结一下:

(1)动态和静态资源放在一起,一旦服务器出现状况,前后台一起玩完,用户体验极差。

(2)一旦jsp出现了问题,就需要前端后端发开人员一块来分析解决,效率低。

(3)jsp无法使用nginx等。

(4)jsp页面复杂,难以修改。

(5)第一次加载jsp需要编译成servlet,时间久,而且业务量大的时候,jsp负担太大。

(6)jsp对于开发人员简直就是一个挥之不去的痛,太难了!!!


3-前后端分离.jpeg

鉴于以上缺点,于是另外一套机制横空出世了,这就是前后端分离。什么是前后端分离呢?

前后端分离其实就是后端工程师只关注于后端页面的开发,不再处理前端问题。前端工程师只关注于自己的页面开发。需要数据交互的时候,两者会有一份接口文档。


5-前后端分离.jpg

就这样这种思想架构很快的流行开来,这也就是为什么jsp落寞的真正原因。从此java从jsp转向了restful结构,springMCV也开始流行开来,并逐渐占领了市场。前后端分离有什么优点呢?我们来总结一下:

(1)动态和静态资源分开存储。

(2)出现bug能很快定位是前端还是后端。

(3)支持nginx。在高并发状态下极其优秀。

(4)直接请求页面,不用编译,速度效率都提上来了。

(5)从此前端和后端是相亲相爱的一家人了!!!!

四、jsp的落幕

又随着时间的推移,jsp的时代基本上一去不复返了,因为我们又走入了移动互联时代,这时候的客户端可不是前端页面了,还包括手机、汽车、电视等等各种设备,这种情况下,前后端必须要分离了。jsp基本上彻底告别了它的舞台。


4-移动互联.jpg

技术总是在不断地发展和完善,只有技术的革新才会带来社会的进步。


默认标题_方形二维码_2019.08.16.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容