请选择 进入手机版 | 继续访问电脑版

Java Web Server(3): Ajax

2018-11-9 09:24
15712
我们上节课讲了一下JSP,大家掌握其中的思想就好了。至于JSP的更多知识,现在其实已经没有用了,因为直接使用JSP做web开发已经不会再有人用了。这是古代的编程知识。
关于服务端的知识,我们先暂停一下,从http协议的角度去学习一个前端知识。在前端技术中,有一个非常重要的技术,叫做 ajax。我们先展示一个 ajax 的例子,再去看一下这个技术的实质。
AJAX用例

在很多应用中,我们其实不想去刷新整个网页,比如,一个网页上有很多商品的图片列表,当我们把鼠标移上去,想在网页上弹出一个小框,框里显示了这个商品的详细情况。在这个场景中,我们其实不需要刷新整个网页。但是如何能再向服务端发请求,从而获得某个商品的详细情况呢?
这时候,就出现一种名为Ajax的技术。AJAX 不是新的编程语言,而是一种使用现有标准的新方法。AJAX 是与服务器交换数据并更新部分网页的技术,在不重新加载整个页面的情况下,可以与服务端进行数据交互。
我们还是在 jetty 的 root 目录下,新建一个名为ajax.html的文件:
  1. [/code]注意新建文件的时候,一定要保证文件的编码为UTF-8
  2. 我们来分析一下,这个网页上的 javascript 代码是啥意思。在这个网页上有一个button,当点击这个 button 的时候,就会调用 loadXMLDoc。在这个方法里,创建了一个XMLHttpRequest,通过这个对象的open方法,访问了服务端的 ajax_info.txt,当数据返回的时候,就会调用一个匿名函数,来设置网页内容。注意看一下上面代码中的注释。
  3. 所以我们在服务端再创建一个名为 ajax_info.txt 的文件,文件内容可以随便填写。
  4. Java Web Server(3): Ajax-1.jpg
  5. 点击了以后,就可以看到:
  6. Java Web Server(3): Ajax-2.jpg
  7. [size=5]HTTP报文[/size]
  8. 我们看一下,使用AJAX的时候,浏览器到底干了啥:
  9. [code]
复制代码
嘿,原来还是一个普通的GET报文而已。所以这个东西依旧没有什么特别新的了不起的东西。让我们再串一遍这个过程。客户端收到一个普通的HTML文件,里面有一些javascript代码,这些代码会使得浏览器向服务端再发送一次GET报文,去请求服务端的数据。
机制就是这么个机制,但在这个机制之上,就可以玩出很多花了。比如,服务端其实是可以发送一个 json 给浏览器,浏览器怎么处理这个 json 可就是前端的事情了。浏览器拿到json以后,还可以在网上以各种方式显示出来,这就是客户端的自由了。
从这个角度来说,我们完全可以在一开始的时候只给客户端一张空白的网页,然后使用 ajax 技术从服务端再去拉取。服务端就可以减轻很多生成动态网页的压力。这就是最粗浅的前后端分离。我们把由服务端解释生成最终的 html 内容的方式称为后端渲染,把客户端生成网页的方式称为前端渲染。
我不是前端程序员,我们的课程也不是前端课程,但是做为后端,我们得知道一点儿前端程序员在做的是什么。
今天就先讲到这里。下节课,我们再讲一下,服务端在面对这种变化的时候,其架构是如何演进的。
上一课:Java Web Server(2): JSP
下一课:Java Web Server(4) :Servlet
课程目录:课程目录
分享到 :
0 人收藏

12 个回复

倒序浏览
遥不可及  中级会员 | 2018-11-9 09:24:22
兄弟,您是做哪行的?技术咨询?
菊部有雨  中级会员 | 2018-11-9 09:24:22
老哥jsp真的过时了?我们下学期还有jsp的课……
南城雨落  高级会员 | 2018-11-9 09:24:22
写的很好,,获取到知识的同时也让人看的很舒服。
额,,还有楼上的问题同问:那jsp还有要熟悉的必要吗?
简简单单╰'  高级会员 | 2018-11-9 09:24:22
jsp 基本不用了,至于因为1是各种基于Ajax 的前端框架层出不穷,2是在服务器渲染层面也无法和php,nodejs等竞争
初檬@  高级会员 | 2018-11-9 09:24:22
嗯。过时了。structs崛起以后,mvc框架就彻底把这些老古董作了古。当然,现在structs也过时了。现在掌握spring mvc就够了。但是我希望读者能了解java web的演化过程,所以才把上古时代的技术拉出来讲了一下。
微笑向暖  中级会员 | 2018-11-9 09:24:22
并不是很认同JSP已经过时了,君不见京东的页面都是用JSP写的。虽说JSP中的大部分东西都已经不用了,但是作为JAVA技术栈的一部分,还是有其存在的价值的。很多时候是与基于Ajax的前端框架混搭着用,特别是对于使用代码生成器的一些成熟框架来说,使用JSP会比单纯使用Ajax好很多。
心软是病  限制会员 | 2018-11-9 09:24:22
公司现在用node.js 做前后端分离,作为一个后端开发人员学点node.js,包括现在的react也很热门啊,感觉前端开发都要取代后端开发了
如山中清风  高级会员 | 2018-11-9 09:24:22
我是做虚拟机研发的,一直关注js在智能硬件的应用。我看你对jvm很有研究。很高兴认识你
霜迟.  中级会员 | 2018-11-9 09:24:22
你说得对,有道理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|翁笔

© 2001-2018 Wengbi.com

返回顶部