JSP总结
jsp文件在内容上是html语言和Java脚本语言组成的。JSP实质是一个servlet文件,在调用的时候会把jsp文件编译成servlet文件。
jsp生命周期
jsp生命周期有四个阶段,分别是编译阶段、初始化阶段、执行阶段和销毁阶段。
- jsp编译
- 请求jsp页面的时候,检查是否要编译这个jsp文件(未编译过、文件修改过)。编译分为三个步骤:
- 1.解析jsp文件
- 2.将jsp文件编译成servlet
- 3.编译servlet
jsp初始化
- 调用jsp的init方法达到初始化。
jsp执行
- 初始化后,jsp引擎调用_jspService方法,这个方法需要HttpServletRequest和HttpServletResonse参数。
- 7个http回应,get,post,delete等。
- jsp销毁
- 调用destory方法,释放一些资源。
jsp指令
jsp中有三个指令,page、include和taglib。其中,page指令基本是固定的,指定jsp页面使用的脚本语言和字符编码等等。include可以指定包含的其他的文件资源,taglib代表标签库,一般是jstl标签库。
语法
<%@ page language="java" encodeing="utf-8"%>
<%@ include file="???"%>
<%@ taglib prefix ="c" uri="???"%>
jsp动作元素
比较<%@ include…%>和<.jsp:include…>的差别。
主要有两个方面的不同;
一:执行时间上:
<%@ include file=”relativeURI”%>是在翻译阶段执行
<.jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行.
二:引入内容的不同:
<%@ include file=”relativeURI”%>引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
<.jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本.
jsp隐式对象
jsp有9个隐式对象
- request
- HttpServletRequest类的实例
- request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。
- response
- HttpServletResponse类的实例
- response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。
- out
- PrintWriter类的实例,输出内容到网页上
- session
- HttpSeesion类的实例
- session对象用来跟踪在各个客户端请求间的会话。
- application
- ServletContext类的实例,与应用的上下文有关
- 这个对象在JSP页面的整个生命周期中都代表着这个JSP页面。这个对象在JSP页面初始化时被创建,随着jspDestroy()方法的调用而被移除。
- 通过向application中添加属性,则所有组成您web应用的JSP文件都能访问到这些属性。
- config
- ServletConfig类的实例
- pageContext
- PageContext类的实例,提供对jsp页面所有对象以及命名空间的访问
- 这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。
pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage URL,页面scope等。
- page
- 类似Java中的this关键字
- Exception
- Exception类的实例
jsp标签库
使用jstl要先引用jstl的jar
根据JSTL标签所提供的功能,可以将其分为5个类别。
- 核心标签
- 格式化标签
- SQL 标签
- XML 标签
- JSTL 函数
jsp表达式语言(EL)
和jstl使用方便,EL很多,在日常的使用中也就几种,多家练习就好。