生命周期
-
编译:浏览器请求jsp页面,jsp引擎会检查是否已经编译过该文件
编译步骤
- 解析jsp文件
- 将jsp文件转为servlet文件
- 编译servlet
-
JSP初始化
容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。如果您需要执行自定义的JSP初始化任务,复写jspInit()方法 -
JSP执行
JSP网页完成初始化后,JSP引擎将会调用_jspService()方法void _jspService(HttpServletRequest request,HttpServletResponse response) { // 服务端处理代码 }
-
jsp清理
需要执行任何清理工作时复写jspDestroy()方法,比如释放数据库连接或者关闭文件夹等等。jspDestroy()方法的格式如下: public void jspDestroy() { // 清理代码 }
语法
-
脚本程序
<% 代码片段 %> -----任何文本、HTML标签、JSP元素必须写在脚本程序的外面。
-
定义变量
<%! 定义变量 %> <%! int i = 0; %>
-
jsp表达式 ,会将表达式的值转为字符串
<%= 表达式 %>
jsp指令
指令 | 描述 |
---|---|
<%@ page attribute=“值”%> | 定义网页依赖属性,如脚本语言、error页面、缓存需求等 |
<%@ include file=“path”%> | 包含其他文件,会被同时执行编译(编译为servlet时执行) |
<%@ taglib uri=“标签库地址” prefix=“标签库前缀”%> | 引入标签库的定义 |
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页面和文档中使用写入文本的模板 |
隐式对象
对象 | 描述 |
---|---|
request | HttpServletRequest类的实例 |
response | HttpServletResponse类的实例 |
out | PrintWriter类的实例,用于把结果输出至网页上 |
session | HttpSession类的实例 |
application | ServletContext类的实例,与应用上下文有关 |
config | ServletConfig类的实例 |
pageContext | PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问 |
page | 类似于Java类中的this关键字 |
Exception | Exception类的对象,代表发生错误的JSP页面中对应的异常对象 |
核心标签库
-
<c:out> 于在JSP中显示数据
<c:out value="变量名" default="默认值" escapeXml="是否转义"/>
-
<c:set> 设置变量值和对象属性
<c:set var="变量名" value="值" target="属性所属对象" property="属性名" scope="var作用域"/>
-
<c:remove> 移除一个变量
<c:remove var="移除的变量名称" scope="作用域"/>
-
<c:catch> 用来处理产生错误的异常状况,并且将错误信息储存起来
<c:catch var ="变量名"> <% int x = 5/0;%> </c:catch>
-
<c:if> 如果表达式的值为真则执行
<c:if test="条件" var="存储结果" scope="var作用域"> ... </c:if>
-
<c:choose> <c:when> <c:otherwise>
<c:choose> <c:when test="<boolean>"/> ... </c:when> <c:when test="<boolean>"/> ... </c:when> <c:otherwise> ... </c:otherwise>
</c:choose>
-
<c:import> 检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:import url="引入的url" var="存储引入的变量" scope="var作用域" charEncoding="存储引入的编码集"/>
-
<c:forEach> 基础迭代标签
<c:forEach 例子:<c:forEach var="i" begin="1" end="5"> items="被循环的变量" <c:out value="${i}"/> begin="首元素下标" </c:forEach> end="尾元素下标" 输出:1 2 3 4 5 step="步长" var="当前变量">
-
<c:forTokens> 根据分隔符来分隔内容并迭代输出
<c:forEach 例子:<c:forTokens items="google,w3cschool,taobao" delims="," var="name"> items="被循环的变量" <c:out value="${name}"/> begin="首元素下标" </c:forTokens> end="尾元素下标" 输出:google w3cschool taobao step="步长" var="当前变量" delims="分隔符" >
-
<c:param>给url添加参数
-
<c:url>创造一个URL
<c:url var="myURL" value="main.jsp"> <c:param name="aaa" value="123"/> <c:param name="bbb" value="456"/> </c:url> <a href="/<c:out value="${myURL}"/>"> 结果: /main.jsp?aaa="123"&bbb="456"
-
<c:redirect> 重定向至一个新的URL.
<c:redirect url="目标URL"/>
EL表达式
- 操作符描述
. 访问一个Bean属性或者一个映射条目
[] 访问一个数组或者链表的元素
emp4ty 测试是否空值
2.使用:${expression}