jsp运行原理:
服务器----运行jsp代码(不会对javascript代码进行处理)--->>html----发送到客户端(如IE)---IE解析HTML代码并显示(运行并处理html代码中的javascript代码)--->>浏览者看到的页面
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个Servlet。而这个引擎本身也是一个Servlet。JSP的运行过程如下所示:
(1)JSP引擎先把该JSP文件转换成一个Java源文件(Servlet),在转换时如果发现JSP文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息。
(2)如果转换成功,JSP引擎用javac把该Java源文件编译成相应的class文件。
(3)创建一个该Servlet(JSP页面的转换结果)的实例,该Servlet的jspInit()方法被执行,jspInit()方法在Servlet的生命周期中只被执行一次。
(4)jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量及响应时间。但不过也应该注意多线程的编程限制,由于该Servlet始终驻于内存,所以响应是非常快的。
(5)如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的Servlet,并继续上述处理过程。
(6)虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延 迟。此外,在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将Servlet从内存中移去。当这种情况发生时jspDestroy()方法首先被调用。
(7)然后Servlet实例便被标记加入“垃圾收集”处理。可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。
、、、、、、、、、、、、、、、、、、、、、、、、、、
Document对象:JavaScript中的Window对象代表的是一个浏览器的窗口,而Window对象下的Document子对象所代表的是加载在浏览器窗口中的文档。使用Document可以对浏览器窗口中的文档进行操作。
DOM:文档对象模型:是用来表示文档和访问,操作构成文档的元素的应用程序的接口(API)。他的核心接口中也有document接口,但是和Window下的document是不同的,但是他可以兼容Window下的document接口。
DOM关于节点的规定如下:(1)整个HTML文档是一个文档(Document)节点;(2)在HTML文档中,每个HTML标签都是一个元素(ELEMENT)节点;(3)包含在HTML标签之间的文本是文本(Text)节点;(4)每一个HTML属性都是(Attr)节点;(5)HTML中的注释属于注释(Comment)节点。
Html中JavaScript代码的执行顺序:在默认情况下,浏览器会按照Html和JavaScript出现的先后顺序执行代码,当遇到JavaScript代码时候,浏览器会停下当前的html文档的解析调用JavaScript解析器解析JavaScript代码;但是可以通过defer属性改变解析顺序,挡在<script>标签中加上了defer属性后,浏览器会先解析html源码,当解析加载完成后,再调用JavaScript解析器解析JavaScript源码。