【JSP】什么是JSP?

JSP是个啥
JSP全称Java Server Page,直译就是“运行在服务器端的页面”。上面已经介绍过,我们可以直接在JSP文件里写HTML代码,使用上把它当做HTML文件。而且JSP中HTML/CSS/JS等的写法和HTML文件中的写法是一模一样的。但它毕竟不是HTML,而且本质差了十万八千里。因为我们还可以把Java代码内嵌在JSP页面中,很方便地把动态数据渲染成静态页面。这点,HTML打死都做不到。当有人请求JSP时,服务器内部会经历一次动态资源(JSP)到静态资源(HTML)的转化,服务器会自动帮我们把JSP中的HTML片段和数据拼接成静态资源响应给浏览器。也就是说JSP运行在服务器端,但最终发给客户端的都已经是转换好的HTML静态页面(在响应体里)。服务器并没有把JSP文件发给浏览器(假装重要的事情已经说3遍)。
即:JSP = HTML+Java片段(各种标签本质上还是Java片段)
记住,1.JSP是服务器端用来将动态页面转化为静态页面的。2.浏览器只能解析静态页面
所谓的“JSP和HTML相似”只是JSP给我们的表面印象。我们还要继续往下挖一挖。实际上,JSP和HTML差远了。JSP本质是一个Java类(Servlet),是在服务器混的,只不过它输出结果是HTML。蜜蜂产出蜂蜜,但是蜜蜂不是蜂蜜啊!在揭开JSP真身之前,我们先来复习一下什么是Servlet。
 

而index_jsp.java这个类继承了HttpJspBase,而HttpJspBase间接实现了Servlet接口。所以可以说,index.jsp被翻译后的Java类也是一个Servlet,所以SP本质也是一个Servlet.
绕了这么一大圈,我们终于明白:
原来,为了不让Java程序员一行行复制HTML代码到Servlet里,SUN公司干脆让Java程序员直
接把HTML写在了Servlet里!但是毕竟SUN还没有那么明目张胆,好歹让这个Servlet伪装了一
把,打扮成JSP,然后跟程序员说:看,我搞了个JSP,这家伙可牛逼了,你能在上面同时写
HTML和Java代码哦。得了吧,等你写完JSP,回头访问时,Tomcat就把这个JSP翻译成
Servlet,原先写在JSP里的HTML代码就自动放在了out.println()里啦!相当于程序帮我做了“逐
行复制HTML代码到Servlet”这一步。(想起来手就麻! )
 


所以,大家千万别把EL表达式想太难,记个语法,知道怎么用就行了。至于它怎么变成Java代码
的,需要我们操心吗?
最后还要提醒一下EL表达式这些标签是在何时何地起作用的。很多人误以为EL表达式可以在浏览器
起作用。根本原因还是对JSP不了解。JSP是服务器端的,所有操作必须在响应给浏览器之前做完。
这些标签,会在JSP文件编译成Servlet时,自动转化为Java代码,然后对数据做处理。所以本质上
和你在JSP页面写的<%%>之类的Java片段一样。它负责从变量(不确定的数)中取出数据,变成
静态数据后(确定的数)贴在薄薄的一张HTML静态页面上。
想象一下,变量还未取出来之前,数据是立体的,圆鼓鼓的,而HTML静态页面则薄如一张纸。我
们无法在二维面上放入三维物质。而EL表达式从变量取出来的数据则是一个常量,是个字符串一样
的东西,可以轻轻地“贴”在HTML里。
至此,我们明白,JSP是立体的机器,在服务器内部,在服务器其他“同僚”的帮助下,生产一张张
HTML静态页面让http带回去给浏览器显示。就像吐钞机与钞票的关系。
 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值