在介绍JSP之前,必须要先来聊聊英雄们的故事。
1987年9月14日21时07分,有人从北京向海外发出了中国第一封电子邮件。邮件内容为“Across the GreatWall we can reach every corner in the world(越过长城,走向世界)”,这预示着,互联网时代悄然叩响了中国的大门。
让我们将目光从中国转向海外。上世纪的90年代,当时的互联网还是天地初开、一片混沌。而1995年以及随后的一年,可谓群雄逐鹿风起云涌,注定不平凡。而当时,我还在家里玩泥巴。
1995年5月,SUN公司发布了Java。名字取得很随意,据说是因为那群创始人当时正好在咖啡店激烈讨论取什么名字。其中有一个人望着手中的咖啡突然灵机一动:卧槽,就叫Java吧。这就好比农村生娃,老爹一看,卧槽,这孩子骨骼惊奇,面相清秀,就叫...二狗子吧,的感觉一样一样的。几乎同年,也不知道稍早还是稍晚,反正不重要,PHP也发布了。当时的人们还不知道,它将被黑为“世界上最好的语言”。次年,一个叫布兰登·艾奇(Brendan Eich,1961年~)的技术员,应老板要求花了10+天,借鉴几大语言的优秀特性(包括Java),写出了LiveScript。而为了在发布时蹭Java热度扩大宣传,不惜改名JavaScript。所谓慢工出细活,所以...JavaScript只写了10多天,自然是...好在后来也挽救回来了,现在好歹是GitHub提交量最多的语言,而前端这几年也是火得不行。
我们知道,浏览器能通过解析html语句渲染出页面。比如:
JSP全称Java Server Page,直译就是“运行在服务器端的页面”。上面已经介绍过,我们可以直接在JSP文件里写HTML代码,使用上把它当做HTML文件。而且JSP中HTML/CSS/JS等的写法和HTML文件中的写法是一模一样的。但它毕竟不是HTML,而且本质差了十万八千里。因为我们还可以把Java代码内嵌在JSP页面中,很方便地把动态数据渲染成静态页面。这一点,HTML打死都做不到。
当有人请求JSP时,服务器内部会经历一次动态资源(JSP)到静态资源(HTML)的转化,服务器会自动帮我们把JSP中的HTML片段和数据拼接成静态资源响应给浏览器。也就是说JSP是运行在服务器端,但最终发给客户端的都已经是转换好的HTML静态页面(在响应体里)。
即:JSP = HTML + Java片段(各种标签本质上还是Java片段)
其实我对前端也不是很熟悉,只能给个大致的图。我至今没搞明白怎么才叫“前后端分离”。不用JSP,改用HTML+AJAX就是前端分离吗?好像也不完全是。以后有更深的体会时,有机会再和大家聊聊这个问题,挺有意思的。
对了,顺便说一句,初学者朋友是不是听说JSP被淘汰了,犹豫要不要学?别闹了,不学JSP你都没法学其他的模板技术。而且,你可能觉得很新奇的freemarker,其实学过JSP的话,要上手只要几小时。所以,还是有什么学什么,学好才是关键。
再强调一点,虽然我们在浏览器地址栏输入localhost:8080/xxx/xxx.jsp,就显示出了当前页面,但那不是JSP页面,而是HTML页面。服务器并没有直接把JSP文件从服务端扔到客户端!JSP是Java Server Page,是服务器端的东西。服务器的东西永远不可能直接在浏览器运行。浏览器只能接受静态页面。