EL语言:
四大作用域对象的别名:
EL别名 JSP
requestScope request
sessionScope session
applicationScope application
pageScope page(当前JSP),不是当前作用域pageContext
EL语言的公式:
${作用域别名.关键字}:
tomcat编辑jsp页面时,根据el表达式,调用响应的java代码,从指定作用域中,读取与当前关键字对应的内容,
并将这个内容进行响应的数据类型转换,并输出到jsp页面上
${关键字}:
按以下顺序寻找
1.pageContext寻找对应的关键字
2.request寻找对应的关键字
3.session寻找对应的关键字
4.application寻找对应的关键字
5.null
从作用域获得自定义数据类型对象:
${作用域别名.关键字.属性名}
${作用域别名.关键字["属性名"]}
关系运算符号:
EL表达式 Java语言
eq ==
lt <
gt >
le <=
ge >=
通过EL中包含的内置对象,通知tomcat调用当前JSP页面中九大内置对象。
1.param:通知tomcat获得request作用域中的请求参数
Java:<%=request.getParameter("请求参数名")%>
EL:${param.请求参数名}
2. pageContext------->JSP中的pageContext
<!-- 获得当前工程在服务器端的请求路径 -->
<%=request.getContextPath()%>
${pageContext.request.contextPath}
JSTL:jsp strand tag lib [jsp 标准标签库]
JSTL分类:1. 核心标签库------------------core
2. 数据格式转换标签库
3. 数据库操作标签库
4. xml数据操作标签库
1.导入核心标签库配置文件(.tld)
<%@ taglib uri="标签库配置文件" prefix="标签的前缀名"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
2.<c:set>:负责向四大作用域的数据设置和修改
<c:set scope="作用域名称" var="关键字" value="值"/>
eg:<c:set scope="session" var="age" value="19"></c:set>
<c:out>:从四大作用域,读取数据
<c:out value="EL表达式">
eg:<c:out value="${sessionScope.age}"></c:out>
<c:remove>:从四大作用域中,移除数据
作用域.removeAttribute(key)
<c:remove scope="作用域" var="关键字">
eg:<c:remove scope="session" var="age"/>
<c:catch>:负责进行异常扑捉.
<c:catch var="关键字">
<% int a = 5/0;%>
</c:catch>
异常产生时,catch标签将异常信息与关键字关联,形成一个键值对:关键字-------java.lang.NullPointerExceptino
catch标签,将键值对保存到当前页作用域中。
EL从当前页作用域中,读取异常信息:${pageScope.关键字}
<c:if>:用于进行if判断,相当于if(){}
根据EL表达式的判断结果,决定是否运行<if>内部的内容
<c:if test="EL表达式">
内容
</c:if>
<c:choose>-------------------------------多分支选择结果
<c:when test="EL表达式">内容</c:when>----if
<c:when test="EL表达式">内容</c:when>----if
<c:otherwise>----------------------------else
内容
</c:choose>
<c:forEach>:循环操作:
1.指定循环次数,进行循环
<c:forEach var="循环变量名称" begin="循环变量初始值" end="循环次数" step="每次循环后,循环变量自增的值">
eg:<c:forEach var="num" begin="1" end="5" step="1" >------从1开始循环五次每次自增1
**** 循环变量,被forEach标签保存到当前页作用域中
${pageScope.循环变量名称}
</c:forEach>
2.循环遍历集合(*******)
List:
<c:forEach items="EL表达式获得集合对象(List)" var="关键字1" varStatus="关键字2">
${关键字1.属性}
varStatus="关键字2":包含循环基本信息,比如本次循环是第几次循环
${关键字2.count}: 当前循环次数
</c:forEach>
Map{key:value;key1:value1}
<c:forEach items="EL表达式获得集合对象(Map)" var="关键字">
var="关键字":指向的map中一个键值对
读取当前键值对中关键字:${关键字.key}
读取当前键值对中value:${关键字.value}
</c:forEach>
自定义标签开发:
一个JSTL标签,就是一个java类
1.开发一个标签实现类需要继承javax.servlet.jsp.tagext.TagSupport
public class TextTag extends TagSupport {
@Override
/**
* 当tomcat调用一个标签类时,一定要调用标签类中doStartTag()
*/
public int doStartTag() throws JspException {
/**
* TagSupport提供pageContext属性,
* 这个属性的赋值,是由tomcat负责赋值。
* pageContext指向当前标签类所在的jsp文件中的pageContext
*/
JspWriter out= super.pageContext.getOut();
try {
out.print("<input type='text' value='自定义文本框'/>");
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
}
public class SelectTag extends TagSupport {
private String num; // 接收用户输入的option的个数
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
@Override
public int doStartTag() throws JspException {
JspWriter out= super.pageContext.getOut();
try{
out.print("<select>");
for(int i=1;i<=Integer.valueOf(num);i++){
out.print("<option >");
out.print(i);
out.print("</option>");
}
out.print("</select>");
}catch(Exception ex){}
return super.doStartTag();
}
}
2.开发一个标签库配置文件 (xxx.tld)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>自定义名称</short-name>
<uri>静态资源路径/http://com.bjpowernode/669/tag</uri>
<!-- 配置标签类的别名,用于在JSP页面使用 -->
<tag>
<name>textTag</name>
<tag-class>com.bjpowernode.tag.TextTag</tag-class>
</tag>
<tag>
<name>selectTag</name>
<tag-class>com.bjpowernode.tag.SelectTag</tag-class>
<!-- 配置当前标签类,在jsp中使用属性 -->
<attribute>
<name>num</name>
<required>true</required>
</attribute>
</tag>
</taglib>
3.在JSP中应用
<%@ taglib uri="http://com.bjpowernode/669/tag" prefix="yz"%>
<html>
<yz:textTag></yz:textTag><br/>
<yz:selectTag num="5"></yz:selectTag>
</html>