我们可能会有这样的问题,比如:
* 如何让JavaScript 取得 request 中的属性
* JSP 没有执行 JavaScript
* 是否可以用 JS取得JSTL 中的一些属性
看文这篇文章,相信就知道这些问题该如何回答了
- 所谓静态网页,就是指在请求服务器上的网页,服务器不对网页文件作任何的处理,读取文件知乎就直接作为相应来传给浏览器
动态网页就是在服务器响应之前,先根据客户端的请求参数或是实际服务器的状态,以程序的方式动态产生相应的内容,再传给用户,动态网页实际上会经过服务器上的程序处理,类似的技术比如 CGI,PHP,ASP,以及Servlet/JSP
以上是概念说明,未经过服务器端程序处理的纯HTML 网页文件如何包含JS 程序代码,该JS代码会被 浏览器 来执行,而一些介绍文章中把 JS 定义为了动态网页的概念,容易给一些人造成误解
- 一些人分不清楚客户端程序和服务端程序的差别,其实也是对 JS 和JSP的关系分不清楚,由于JSP 中可以编写Java代码,而JSP 文件又可以编写JS代码,而JS 又有一个 Java 的名字的在前面,让一些初学者认为 JS 和 JSP 或是Java 有直接的联系,其实他们之间是没有关系的
- Servlet/JSP 是服务器上的一个技术,客户端通过HTTP 协议和网络传送请求给 Servlet/JSP,服务器上的Servlet/JSP 经过处理知乎再将响应传回给客户端,这一切程序的处理都是在服务器上发生的。
- JS则是执行客户端浏览器中,可以让我们和浏览器沟通,操作浏览器中的网页画面和行为,也就是通过JS来要求浏览器发出请求给服务器,所以在客户端程序和服务器端程序中, Servlet/JSP 和 JS 执行的是不同的内存地址空间,两者无法做直接的互动,必须通过HTTP 来进行沟通
- 所以我们在写JSP 网页中会写一些 JS 的代码,这些JS并不是在服务器上执行的,服务器和处理HTML 标签一样来处理 JS,将这些 JS 原封不动传给浏览器,浏览器收到响应之后再处理JS,JSP 中的 JS代码 其实和 静态的 HTML 标签没什么不同