简介
概述:JSP(Java Server Page)简单的说是一种动态网页技术,它通过在HTML网页中嵌入能够生成动态内容的程序代码,来实现静态内容和动态内容在最终呈现给客户端的统一。也就是说在HTML页中可以存在着JavaBean,JDBC对象,EJB等对象方便的访问和产生动态内容。背景:JSP之前主要使用的是CGI(Common Gateway Interface)技术实现的动态网站的开发。但是由于CGI本身功能比较小,无法满足越来越趋于复杂的Web应用。于是就导致了新的技术的产生,JSP只是其中的一种。
优点:
①一次编写,随处运行:基于Java语言
②可重用组件技术:我的理解就是可以方便的引入封装好的应用③高效率和安全性:JSP被执行之前会先编译成字节码,然后由Java虚拟机解释执行。因此JSP可以存储于对外透明的目录下。
④标签简化页面开发
原理
之前提到过JSP和Servlet的关系很密切的,其实Sun公司先发展的Servlet,但是Servlet使用过的人应该知道它在也逻辑上的处理没的说的,但是在输出上就比较麻烦,因为它是面向CGI的。如果看过之前一篇博客的Servlet的原理的话,就会发现这两张图差别不是太大。那是因为实际上JSP是为了优化Servlet是输出问题的,因此实际上JSP也是Servlet,只是比较特别。它只有在运行的时候才被编译为Servlet Class文件。
基于JSP和Servlet的关系,应该很好理解JSP文件只有一次编译,然后存储到一个不对外开放的目录下(Tomcat/Work)。平时这个路径下是空的,只有访问过JSP文件之后,它才会存在.class文件。如题的运行原理,如下图:
页面构成
模板元素:主要包括静态的HTML或者XML内容,即一个HTML框架。注释:JSP页面的注释有两种,一种是HTML注释也叫显示注释,需要注意的是这种注释可以带有表达式。另一种是JSP隐藏注释,它在编译的时候被忽略。所以,前一种在浏览器查看源文件的时候是可以看见的,而隐藏注释则看不见。这是为什么呢?可以思考一下……这个想明白了对JSP页面构成的理解应该就可以了。
脚本元素:包括声明(Declaration)、表达式(Expression)、脚本程序(Scriptlet)。
指令元素:JSP的指令元素用来设置页面的全局变量、声明类及实现等相关属性,它只在页面范围内有效。这里需要和声明注意区分一下。
动作元素:JSP动作利用XML语法格式标记来控制Servlet引擎的行为。可以实现动态插入文件、重定向等功能。
内置对象
JSP的内置对象是指在页面上无需显示声明的情况下可以直接使用的对象包括如下九种。这里不需要显示声明的原因是因为,在Servlet实例化时会在其内部实例化这九种对象。(图片来自:《Web2.0动态网站开发:JSP技术详解与应用实践》)最后:对于页面构成和内置对象只是简单的提了一下,没有详细的解释。觉得没太必要,重要的是理解JSP的运行原理和其在一次请求中的位置、功能、以及它所扮演的角色。然后呢,刚刚留了一个思考在前面关于两种注释元素的。首先JSP的页面是包括了HTML的而HTML是标记性语言,它是不经过编译的所以自然就不可能忽略掉注释的内容,而隐藏注释则不然,它是需要经过编译的,它之所以被隐藏是编译时被忽略了。也就是JSP是不同元素的组合,因此会有不同的处理。应该差不多了,至于内置对象应该没有什么需要讲的。