JSP是什么
JSP与ASP、PHP类似都是动态网页技术,全称为JAVA SERVER PAGES。它是由SUN公司(以给ORACLE收购)提出且由多家公司共同设计出的一种技术,其本质是SERVLET。它在传统的HTML页面内插入JAVA语言和TAGS形成JSP文件,文件的扩展名为.jsp。JSP将网页逻辑与设计进行分离,支持组件的重用,提高开发效率。
构成元素
JSP中既有HMTL相关的静态内容还有JAVA程序片断和JSTL,大致可分成以下几部分。
1.静态内容
静态内容包含HTML、CSS、JAVASCRIPT,起到页面布局和内容的展示。
2.JSP指令
指令共有三条,容器安指令的设置对JSP文件进行转译成对应Servlet 。
3.JSP脚本
脚本由JAVA语句构成,可以定义变量编写执行逻辑。
4.动作
通过JSP动作可以调用WEB容器内在功能的一组XML标签。
5.自定标签库
为了规避JSP文件成分构成复杂问题尽可能统一编写格式,采用类似HTML方式的标签实现原本的JAVA逻辑。可使用内置的JSTL(标准标签存),还可以自定义标签库,实现个性的需求。
工作原理
客户端第一次对JSP文件请求时,容器会对JSP页面进行处理。首先对JSP文件转译成JAVA文件,接着将JAVA文件编译成CALSS文件,最后执行CALSS文件向客户端作出响应。以后请求同一JSP页面,容器会直接执行CLASS文件,所以第一次请求JSP时速度会比较慢。
JSP引擎会将JSP中的静态内容与动态内容分离,静态内容直接输出,动态内容转译成JAVA语句,最终生成一个的JAVA文件。生成类的父类是HttpJspPage,有初始化、销毁等方法,service()是JSP的核心方法。有学过Servlet的同学(没学过小伙伴,请参考小傅老师的Servlet系列文章)对这些方法一定很熟悉。是的,转义出来的类其本质就是一个Servlet。
在转义或编译的过程出现错误,JSP引擎会中止运行,直至修改JSP正确后方可执行。
下面二张图片展示了对应的流程,小伙们细细体会下。
l转义和编译流程
l执行流程