EL有效表达式基础操作符
EL表达式内置对象
el表达式的四大作用域
<!-- 创建对象 id:变量名,class:对象名,scope:作用域 默认page-->
<jsp:useBean id="user" class="lesson04.User" scope="page"></jsp:useBean>
<!-- 设值 property:对象的属性名,name:对象变量名,value:赋值-->
<jsp:setProperty property="name" name="user" value="小二"/>
<jsp:setProperty property="age" name="user" value="4"/>
<!-- 创建对象 id:变量名,class:对象名,scope:作用域-->
<jsp:useBean id="user1" class="lesson04.User" scope="request"></jsp:useBean>
<!-- 设值 property:对象的属性名,name:对象变量名,value:赋值-->
<jsp:setProperty property="name" name="user1" value="小三"/>
<jsp:setProperty property="age" name="user1" value="8"/>
<!-- el表达式也拥有四个对应的内置对象 pageScope requestScope sessionScope applicationScope -->
<!-- page -->
${pageScope.user.name }---------${pageScope.user.age }<br/>
<!-- request -->
${requestScope.user1.name }----------${requestScope.user1.age }<br/>
<%
//jsp内置对象 pageContext request session application
//useBean的scope page request session application
//el表达式内置对象 pageScope requestScope sessionScope applicationScope
//el表达式内置对象实际上就是Map 只是填充了 通过setAtrribute()方法写入的键值对
//如果不指定作用域对象 会从作用域最低的对象搜索 pageScope<requestScope<sessionScope<applicationScope
//如果不指定域名对象 影响搜索的效率 建议加上
pageContext.setAttribute("id", 1);
request.setAttribute("id", 2);
session.setAttribute("id", 3);
application.setAttribute("id", 4);
%>
${sessionScope.id }<br/>
<!-- el表达式提供了全局对象 pageContext 可以用于处理页面上任意的内置-->
${pageContext.session.id }<br/><!-- 获取sessionID -->
${pageContext.request.contextPath }<br/><!-- 获取上下文对象 -->
<form>
<input type='text' name="num1" value="${param.num1 }"/>+<input type='text' name="num2" value="${param.num2 }"/><input type='submit' value="="/>
<input type='text' name="result" value="${param.num1+param.num2 }">
</form>
效果
2.JSTL标签库
JavaSE项目需要添加jstl的jar包
网上所搜下载jar包 点击打开链接
maven项目所需依赖的jar包
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
标记库名称 | URI | 前缀 | 说明 |
core | http://java.sun.com/jsp/jstl/core | c | 核心功能实现,包括变量管理、迭代和条件判断等 |
I18N | http://java.sun.com/jsp/jstl/fmt | fmt | 国际化,数据格式显示 |
SQL | http://java.sun.com/jsp/jstl/sql | sql | 操作数据库 |
XML | http://java.sun.com/jsp/jstl/xml | x | 操作XML |
Fn | http://java.sun.com/jsp/jstl/functions | fn | 常用函数库,包括String操作,集合类型操作等 |
引入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
Core标记库内容
例如
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<!-- 引入自定义标签 -->
<%@taglib tagdir="/WEB-INF/tags" prefix="ex" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- core标签库 -->
<!-- 1、定义变量 变量存储在四大作用域中 page request session application
标签的属性 value 一般都支持el表达式计算
-->
<c:set var="name" value="zs" scope="page"></c:set>
${pageScope.name }
<!-- 2、if语句 不支持else-->
<c:set var="sal" value="20000" scope="page"></c:set>
<c:if test="${pageScope.sal<=10000 }">低薪</c:if>
<c:if test="${pageScope.sal>10000 }">高薪</c:if>
<!-- 3、choose when otherwise 相当于if....else...-->
<c:choose>
<c:when test="${pageScope.sal<=10000 }">低薪</c:when>
<c:when test="${pageScope.sal>10000 and pageScope.sal<=20000 }">中薪</c:when>
<c:otherwise>高薪</c:otherwise>
</c:choose>
<!-- 4、循环 forEach -->
<!-- for(int i=1;i<=10;i++){} -->
<c:forEach var="i" begin="1" end="10" step="1">
${pageScope.i }
</c:forEach>
<!-- foreach(){} -->
<%
String[] str=new String[]{"篮球","足球"};
pageContext.setAttribute("str", str);
List list=new ArrayList();
list.add("羽毛球");
list.add("排球");
pageContext.setAttribute("myList", list);
%>
<c:forEach var="ste" items="${pageScope.myList }">
${pageScope.ste }
</c:forEach>
<!-- 5、out输出内容 c:out标签能够对内容的特殊符号进行转译
escapeXml 默认值true 表示对html进行转译五风险 false和el表达式有风险
-->
<c:set var="tt" value="<font color=red>你好</font>"></c:set>
<%-- ${pageScope.tt } --%>
<c:out value="${pageScope.tt }" escapeXml="true"></c:out>
<!-- 其他标签 -->
<!-- 跳转 -->
<%-- <c:redirect url="http://www.pan.com/jspLesson/lesson05work/db.jsp"></c:redirect> --%>
<!-- catch 异常 -->
<c:catch var="myEx">
<%
String ss=null;
ss.toString();
%>
</c:catch>
${pageScope.myEx }
<!-- 国际化,数据格式显示 -->
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
<!-- formaDate 将日期类型转换成字符串 -->
<fmt:formatDate value="${pageScope.date }" pattern="yyyy-MM-dd"/>
<!-- parseDate 将字符串转换成日期类型 -->
<fmt:parseDate value="2017/12/12" pattern="yyyy/MM/dd"></fmt:parseDate>
<!-- 四舍五入 pattern="###.#" 保留的小数位-->
<fmt:formatNumber value="123.56" pattern="###.#"></fmt:formatNumber>
<!-- 国际化 -->
<!-- 设值浏览器的locale对象 -->
<fmt:setLocale value="${pageContext.request.locale }"/>
<!-- 设置读取的资源文件的basename -->
<fmt:setBundle basename="my"/>
<!-- 读取资源文件的信息 -->
<fmt:message key="hello"></fmt:message>
<!-- 字符串 -->
<!-- 去空格 -->
${fn:trim(' hello world ') }
<!-- 包含 -->
${fn:contains('nihao','i') }
<!-- 把字符串以指定的字符拆分 -->
<c:forEach var="ee" items="${fn:split('a,b,c',',') }">
${pageScope.ee }
</c:forEach>
<!-- 是否已指定字符结尾 -->
${fn:endsWith('dddd.txt', '.txt')}
<!-- 是否以指定的字符开头 -->
${fn:startsWith('你好', '你')}
<!-- 在一个字符串中 查找指定的字符并返回所在的下标(下标从0开始) 未找到返回-1-->
${fn:indexOf('hello','o')}
<!-- 返回字符串的长度 -->
${fn:length('dfdfdf')}
<!-- 字符串替换 -->
${fn:replace('a,b,c', ',', ';')}
<!-- -->
${fn:join(fn:split('a,b,c',',') ,';')}
<!-- 截取字符串 包左不包右 -->
${fn:substring('jdfldj', 0, 2)}
<!-- 从左往右查找指定字符并截断 -->
${fn:substringAfter('lfjglg', "f")}
<!-- 从右往左查找指定字符并截断 -->
${fn:substringBefore('lfjglg', "j")}
<!-- 转小写 -->
${fn:toLowerCase("DDDD")}
<!-- 转大写 -->
${fn:toUpperCase("aaaa")}
</body>
</html>