EL
1. What
- EL( Expression Language意思为表达式语言,可以获取域对象中的数据,它提供了在JsP中简化表达式的方法,让Jsp的代码更加简化
- 语法:${表达式}
2. 数据获取
- EL根据作用域范围依次获取,越小越先获取
- 域的范围由小到大:page < request < session < application
- ${pageScope.name}
- ${requestScope.name}
- ${sessionScope.name}
- ${applicationScope.name}
3.EL中的运算符
1. el中写算术运算符 4 + 5 = ${4 + 5} 2. 逻辑运算符 and or && || not ! 3. 关系型 ==, eq >=, ge <=, le !=, ne 4. 非空判断 <% List<String> list = new ArrayList<>(); list.add("aaaa"); pageContext.setAttribute("list", list); %> ${empty list} => 判断集合是否有数据 => 其他普通对象判断是否被实例化 ${list} 5.三元运算符: ${true? "yes" : "no"}
4. 获取Javabean 中的数据\
- ${student.getName()}
- ${student.name}
- 本质上都是调用getName() 方法
5.EL常用隐式对象
pageContext 相当于jsp的隐式对象pageContext,可以获取jsp中其他八个隐式对象 cookie 将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。表达式 ${cookie. name .value}返回带有特定名称的第一个 cookie 值。如果请求包含多个同名的 cookie,则应该使用 ${headerValues. name} 表达式。 initParam 将上下文初始化参数名称映射到单个值(通过调用 ServletContext.getInitparameter(String name) 获得)。 pageScope 将页面范围的变量名称映射到其值。例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,还可以使用 ${pageScope .objectName. attributeName} 访问对象的属性。 requestScope 将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。例如,EL 表达式可以使用 ${requestScope. objectName} 访问一个 JSP 请求范围的对象,还可以使用 ${requestScope. objectName. attributeName} 访问对象的属性。 sessionScope 将会话范围的变量名称映射到其值。该对象允许访问会话对象的属性。例如: ${sessionScope. name} applicationScope 将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程序范围的对象。
6. 动态获取base标签href属性值
- ${pageContext.request.scheme} => http
- ${pageContext.request.serverName} => 主机地址 localhost
- ${pageContext.request.serverPort} => 端口号 8080
- ${pageContext.request.contextPath} => 项目名称
<base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/">
JSTL
1. what
JSTL(Java server pages standarded tag library,即JSP标准标签库)开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度
2. 3c标签的使用
<%--1.往request域中存放名称为uname值为admin的数据--%> <c:set scope="request" var="uname" value="admin"></c:set> <%--2. 获取数据--%> <c:out value="${uname}"></c:out> ${uname} # 3 删除数据 <c:remove var="uname" scope="request"></c:remove> # 4. 判断 <c:set scope="page" var="uname" value="wy"></c:set> <c:if test="${pageScope.name eq 'wy'}"> <h1>是wy</h1> </c:if> # 多重判断 <c:set scope="request" var="age" value="20"></c:set> <c:choose> <c:when test="${age<18}">未成年</c:when> <c:when test="${age>=18 and age<=30}">青年</c:when> <c:when test="${age>30 and age<=50}">中年</c:when> <c:otherwise>老年</c:otherwise> </c:choose> <--!> items 索引对象 var 当前遍历到的内容存储到va varStatus 当前索引值 </--!> <c:forEach items="" var="" varStatus="index"> </c:forEach>