JavaWeb核心四 Li.057
EL 表达式 EL (Expression Language): 表达式语言. 在JSP 2.0规范中加入的内容, 也是Servlet规范的一部分. 作用: 在JSP页面中获取数据. 让我们的JSP脱离java代码块和JSP表达式 <%--请求域中添加username数据--%> <% request.setAttribute("username","zhangsan"); %> <%--获取请求域的username 3种方式--%> <%--Java代码块--%> <% out.println(request.getAttribute("username")); %> <br/> <%--JSP表达式获取--%> <%= request.getAttribute("username")%> <br/> <%--EL表达式获取--%> ${username} EL 表达式获取数据类型 获取基本数据类型的数据 获取自定义对象类型的数据 获取数组类型的数据 获取List集合类型的数据 获取Map集合类型的数据 <%@ page import="com.lizicai.bean.Student" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.HashMap" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <% pageContext.setAttribute("num",10); %> 基本数据类型 ${num} <br/> <% Student stu = new Student("李明", 23); pageContext.setAttribute("stu",stu); %> 自定义对象: ${stu} <br/> ${stu.name} ${stu.age} <br/> <% String[] arr = {"Haha", "go"}; pageContext.setAttribute("arr",arr); %> 数组: ${arr} <br/> ${arr[0]} ${arr[1]} ${arr[2]} <br/> <% ArrayList<String> list = new ArrayList<>(); list.add("aaa"); list.add("bbb"); pageContext.setAttribute( "list",list); %> List集合 ${list} ${list[0]} <br/> <% HashMap<String, Student> map = new HashMap<>(); map.put("s01",new Student("李明",20)); map.put("s02",new Student("张三",20)); pageContext.setAttribute( "map",map); %> Map 集合: ${map} <br/> 第一个学生 ${map.s01} <br> 第一个学生的姓名 ${map.s01.name} <br> </body> </html> EL 表达式注意事项 EL 表达式没有空指针异常 EL 表达式没有索引越界异常 EL 表达式没有字符串的拼接 <% Student s = null; String [] arr2 = {"Hello", "World"}; pageContext.setAttribute( "s",s); pageContext.setAttribute( "arr2",arr2); %> ${s} ${arr2[10]} ${arr2[0]}+${arr2[1]} EL 表达式运算符 关系运算符 关系运算符 作用 示例 结果 ==或eq 等于 略 略 !=或ne 不等于 略 略 <或lt 小于 略 略 >或gt 大于 略 略 <=或le 小于等于 略 略 >=或ge 大于等于 略 略 逻辑运算符 运算符 作用 示例 结果 &&或and 并且 略 略 ||或or 或者 略 略 !或not 取反 略 略 其他运算符 运算符 作用 empty 1判断对象是否为null.2判断字符串是否为空字符串.3判断窗口元素是否为0 条件?表达式1:表达式2 三元运算符 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>EL 表达式运算符</title> </head> <body> <% String ss = null; String ss2 = ""; int[] arr = {}; %> ${empty ss} <br/> ${empty ss2} <br/> ${empty arr} <br/> <% pageContext.setAttribute("gender", "man"); %> <input type="radio" name="gender" value="man" ${gender == "man" ? "checked" : ""}> 男 <input type="radio" name="gender" value="woman" ${gender == "woman" ? "checked" : ""}> 女 </body> </html> EL 表达式使用细节 EL 表达式能够获取四大域对象的数据, 根据名称从小到大在域对象中查找. 还可以获取JSP其他八个隐式对象, 并调用对象中的方法. <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <% pageContext.setAttribute("username", "zhangsan1"); request.setAttribute("username", "zhangsan2"); session.setAttribute("username", "zhangsan3"); application.setAttribute("username", "zhangsan4"); %> ${username} <br> <%= request.getContextPath() %> ${pageContext.request.contextPath} </body> </html> EL 表达式隐式对象 隐式对象名称 对应JSP隐式对象 说明 pageContext pageContext 功能完全相同 applicationScope 没有 操作应用域对象数据 sessionScope 没有 操作会话域对象数据 requestScop 没有 操作请求域对象数据 pageScope 没有 操作页面域对象数据 header 没有 操作请求头数据 headerValues 没有 获取请求头数据(多个值) param 没有 获取请求参数数据 paramValues 没有 获取请求参数数据(多个值) initParam 没有 获取全局配置参数数据 cookie 没有 获取Cookie 对象 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <%-- pageContext 对象, 可以获取其他3个域对象和JSP中八个隐式对象--%> ${pageContext.request.contextPath} <br/> <%--applicationScope sessionScope requestScop pageScope--%> <% request.setAttribute("username", "zhangsan1"); %> <% pageContext.setAttribute("username", "zhangsan2"); %> ${username} <br/> ${requestScope.username} <br/> ${pageScope.username} <br/> <%--header headerValues 获取的数组--%> ${header["connection"]} <br> ${headerValues["connection"][0]} <br> <%--param paramValues 获取请求参数--%> ${param.username} <br/> ${paramValues.hobby[0]} <br/> ${paramValues.hobby[1]} <br/> <%--initParam 获取全局配置参数--%> ${initParam.pname} <br> <%--cookie--%> ${cookie} <br> ${cookie.JSESSIONID} <br> <%-- 获取集合元素--%> ${cookie.JSESSIONID.name} <br> <%-- 获取cookie对象的名称 --%> ${cookie.JSESSIONID.value} <br> <%-- 获取cookie对象的数据值 --%> </body> </html> JSTL 介绍 JSTL (Java Servler Pages Standarded Tag Library): JSP标准标签库 主要提供给开发人员一个标准通用的标签库 开发人员可以利用这些标签取代JSP页面上的Java代码, 从而提高程序的可读性, 降低程序的维护难度. 组成 作用 说明 core 核心标签库 通用的逻辑处理 fmt 国际化 不同地域显示不同语言 functions EL函数 EL表达式可以使用的方法 sql 操作数据库 了解 xml 操作XML 了解 JSTL 核心标签库 标签名称 功能分类 属性 作用 <标签名:if> 流程控制 核心标签库 用于条件判断 <标签名:choose> ifelseif流程控制 核心标签库 用于多条件判断 <标签名:when> ifelseif流程控制 核心标签库 用于多条件判断 <标签名:otherwise> ifelseif流程控制 核心标签库 用于多条件判断 <标签名:forEach> 迭代遍历 核心标签库 用于循环遍历 http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/解压lib的包导入tomcatlib中 ...