作用:向浏览器输出域对象中的变量或表达式计算的结果
2 EL的11个内置对象
pageContext ----- ${pageContext.request.contextPath }
pageScope
requestScope
sessionScope
applicationScope
param ------param返回所有参数Map集合 {param['name']}
paramValues ----- ${paramValues['name'][0] }
header --------${header['host'] }
headerValues --------${headerValues['host'][0] }
cookie ---------${cookie['JSESSIONID'].value }
initParam --------- ${initParam['AAA'] }
3
null或空字符串:${empty name}
4
Jsp标签分类
1)jsp内置标签(动作标签): 使用的时候不需要导入标签库
<jsp:forward page="/index.jsp">
<jsp:param value="eric" name="name"/>
<jsp:param value="jacky" name="name"/>
</jsp:forward>
<jsp:include page="/common/header.jsp">
<jsp:param value="eric" name="name"/>
</jsp:include>
静态包含(标签包含): 先合并再翻译。不能携带参数
动态包含(指令包含): 先翻译编译再合并。携带参数
<jsp:useBean id="s" class="gz.itcast.a_tag.Student"></jsp:useBean>
<jsp:setProperty name="s" property="name" value="eric"/>
<jsp:getProperty name="s" property="name" />
2)jstl标签(标准标签库): java standard tag libarary java使用的时候都需要导入标签库
<c:set var="name" value="jacky" scope="request"/> 默认保存到page域
<c:out value="${name}" default="<h3>标题3</h3>" escapeXml="false"></c:out>
可以保持原样输出
<c:if test="${10>8}">
成立
</c:if>
<c:choose>
<c:when test="${!empty sessionScope.user}">
欢迎
</c:when>
<c:otherwise>
未登录
</c:otherwise>
</c:choose>
<c:forEach items="${list}" var="student" varStatus="varSta">
</c:forEach>
<c:forTokens items="${str}" delims="-" var="s">
${s }
</c:forTokens>
<c:redirect url="/index.jsp"></c:redirect>
3)自定义标签:使用的时候都需要导入标签库
5 自定义标签的生命周期
1)构造方法: 构造标签器对象
2)void setJspContext(JspContext pc) 传入PageContext对象。可以使用getJspContext()方法获取PageContext 对象。
3)void setParent(JspTag parent) 传入父标签对象。如果没有父标签,则不调用次方法。
使用getParent()方法获取父标签
4)void setJspBody(JspFragment jspBody) 传入标签体内容。如果没有标签体,则不调用次方法。
使用getJspBody()获取标签体内容。标签体内容封装到 JspFragment中
5)void doTag() 调用标签时执行方法。我们的业务逻辑就写在这个方法 中。可以调用 getJspContext(), getParent(),getJspBody();
<body-content>scriptless</body-content>
JSP: 表示标签体内容可以支持和输出jsp表达式内容。(注意:这个配置只能在传统标签中使用)
scriptless: 标签体内容不支持jsp表达式内容。
empty: 标签体内容是空的。
tagdependent: 标签体内容支持jsp表达式。把jsp表达式当前字符串处理
7 自定义标签的开发步骤
1 自定义类继承simpleTagSupport
2 重写doTag
3 类中定义属性(有的话)
4 建立tld文件
5 tld中定义该标签,及属性