1.JSP语言原理 2.JSP基础指令和动作 3.JSP内置对象 4.JSP标准标签库JSTL、EL表达式
JSP作为一种在在服务器端执行的页面语言,它支持在页面中嵌入Java代码,来构建动态页面;
然而,在本质上JSP在被请求时,Web服务器的JSP引擎会将其Java转封装成一个对应的Servlet,而页面本身静态页面部分则通过println输出;最终返回给用户的依旧是处理后的html静态文件;详细流程见下图;
所以,简单来看,我们可以将JSP看成一种模板页面,同样通过各种指令来控制页面生成规则,而与一般的模板页面不同的是它可以执行Java语言块;可以参考freemarker、velocity;
Web服务器使用JSP来创建网页的步骤: 1.客户端向服务器发送一个HTTP请求。 2.服务器识别是对JSP网页的请求后将其请求传递给Servlet引擎。 3.Servlet引擎将磁盘中的Jsp文件转化为Servlet类,并将所有的元素转化为Java代码 4.JSP引擎将Servlet类编译成可执行的文件并将最原始的请求发送给Servlet引擎 5.服务器通过调用Servlet引擎来执行Servlet可执行文件,Servlet会产生HTML格式的输出内嵌在HTTP Response中并将其上传给服务器 6.服务器将其以HTML的格式上传到客户端的浏览器中以静态页面的形式展现给用户。
JSP中的三种指令标签:
指令描述<%@ page … %>定义网页依赖属性,比如脚本语言、error页面、缓存需求等等<%@ include … %>包含其他文件<%@ taglib … %>引入标签库的定义Page:能够定义页面的全局属性,重要的是可以通过它的import和extends属性,完胜Java类的导入和继承;
include:文件引入(嵌入),在JSP翻译阶段引入对应的文件,在进行编译(所以认为是嵌入),注意和动作元素
JSP包含一些标准动作元素,当然可以通过引入第三方库扩展动作元素的类型:
语法描述jsp:include在页面被请求的时候引入一个文件。jsp:useBean寻找或者实例化一个JavaBean。jsp:setProperty设置JavaBean的属性。jsp:getProperty输出某个JavaBean的属性。jsp:forward把请求转到一个新的页面。jsp:plugin根据浏览器类型为Java插件生成OBJECT或EMBED标记。jsp:element定义动态XML元素jsp:attribute设置动态定义的XML元素属性。jsp:body设置动态定义的XML元素内容。jsp:text在JSP页面和文档中使用写入文本的模板不同的元素的属性不同,但有两个是每个动作元素共同拥有的:
id:动作元素唯一ID;
scope:动作元素的生命周期,包括page(默认), request, session, 和 application,当某个对象(有ID的动作元素)的生命周期不仅仅是在当前页面(page)时,可在其他JSP页面通过PageContext由唯一ID来调用;
经典的九大内置对象:
因为JSP最终会被转化为一个Servlet(HttpJspBase—>HttpServlet的子类),所以,有的对象是可以直接使用的;
具体的使用方式,可参考对应对象类型的定义和实现;
对象描述requestHttpServletRequest类的实例responseHttpServletResponse类的实例outJspWriter类的实例,用于把结果输出至网页上sessionHttpSession类的实例applicationServletContext类的实例,与应用上下文有关configServletConfig类的实例pageContextPageContext类的实例,提供对JSP页面所有对象以及命名空间的访问page类似于Java类中的this关键字ExceptionException类的对象,代表发生错误的JSP页面中对应的异常对象其实,在如今MVC架构大行其道的情况下,JSTL和EL用的机会已经很少(或许是一些高级的东西我没有接触到),所以,在又要时再来了解一下就可以了;