code094.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>EL表达式</title> 8</head> 9<body> 10<%-- JSP页面java代码方式 --%> 11<% 12if(session.getAttribute("userName") != null) 13{ 14 out.println(session.getAttribute("userName").toString()); 15} 16%> 17 18<br> 19<%-- EL表达式,更简洁 --%> 20${userName} 21 22<br> 23<%-- 由于EL表达式的语法以$开头,所以如果在JSP页面中要显示$开头字符串,请在前面加上反斜杠 --%> 24\${userName} 25 26<br> 27<%-- 在EL表达式中,要输出一个字符串,可以将字符串放在一对单引号或双引号内 --%> 28${'虾米大王'} 29${"虾米大王"} 30 31<br> 32<%-- 如果想通过EL输入两个字符串数值的和,可以直接通过+号连接 --%> 33${number1 + number2} 34 35<br> 36<%-- 在低版本的环境兼容,需要禁用EL --%> 37<%-- 方式一,使用反斜杠 --%> 38\${expression} 39\${number} 40 41<%-- 方式二,使用page指令,ture为忽略EL --%> 42<%@ page isELIgnored="false" %> 43 44<%-- 方式三,在tomcat服务器的web.xml中配置 ignored 元素 --%> 45<%-- 46 以下为模拟代码,去除了尖括号 47 jsp-config 48 jsp-property-group 49 url-pattern *.jsp /url-pattern 50 el-ignored true /el-ignored 51 /jsp-property-group 52 /jsp-config 53 54 --%> 55 56<%-- 57 EL的保留关键 58 59 and 60 eq 61 gt 62 instanceof 63 div 64 or 65 le 66 false 67 empty 68 not 69 It 70 ge 71 --%> 72 73 <%-- 74 一下是在EL中运算符号的优先级 ,由高到低 75 [] . 76 () 77 -(负号) not ! empey 78 * / div % mod 79 < > <= >= lt gt le ge 80 == != eq ne 81 && and 82 || or 83 ? : 84--%> 85 86<br> 87<%-- 88通过EL提供的 [] 和 . 运算符可以访问数据 89--%> 90 ${userInfo.id} 91 ${userInfo[id]} 92 93<%-- 94通过 [] 运算符可以获取数组的指定元素 .运算符不能 95获取request范围中的数组arrBook的第一个元素 96--%> 97${arrBook[0]} 98 99<%-- 100在EL中进行算术运算 101+ 加 ${19+1} 20 102- 减 ${66-30} 36 103* 乘 ${52.1*10} 521.0 104/ 除 ${5/2} 2.5 105div 除 ${9 div 0} Infinity 106% 求余 ${17%3} 2 107mod 求余 ${15 mod 0} 抛出异常 108--%> 109 110<%-- 111在EL中判断对象是否为空 112${empty expression} 113--%> 114<% request.setAttribute("user02", " "); %> 115<% request.setAttribute("user03", null); %> 116${empty user02}<br> 117${empty user03}<br> 118 119<%-- 120在EL中,提供了6种关系运算符。 121== 等于 ${10 == 10} true 122eq 等于 ${10 eq 10} true 123!= 不等 ${10 != 10} false 124ne 不等 ${10 ne 10} false 125< 小于 ${7 < 6} false 126lt 小于 ${7 lt 6} false 127> 大于 ${7 > 6} true 128gt 大于 ${7 gt 6} true 129<= 小于等于 ${7 <= 6} false 130le 小于等于 ${7 le 6} false 131>= 大于等于 ${7 >= 6} true 132ge 大于等于 ${7 ge 6} true 133 134--%> 135 136<%-- 137在EL中,提供的逻辑运算符 138&& 与 ${true && false} false 139and 与 ${true and false} false 140|| 或 ${true || false} true 141or 或 ${true or false} true 142! 非 ${!true} false 143not 非 ${not true} false 144 145 146--%> 147 148<%-- 149EL的隐含对象 150提供了11个隐含对象,这些对象类似于JSP内置对象, 151除PageContext是javaBean对象,对应于javax.servlet.jsp.PageContext类型外, 152其他的隐含对象都对应于java.util.Map类型。 153 154 155页面上下文对象pageContext 156${pageContext.request} 157${pageContext.request.serverPort} //返回8080 158${pageContext.response} 159${pageContext.response.contentType} //返回 text/html;charset=utf-8 160${pageContext.out} 161${pageContext.out.bufferSize} //返回8192 162${pageContext.session} 163${pageContext.session.maxInactiveInterval} //返回 1800秒 164${pageContext.exception} 165${pageContext.exception.message} // 返回异常信息 166${pageContext.page} 167${pageContext.page.class} // 返回 class org.apache.jsp.index_jsp 168${pageContext.servletContext} 169${pageContext.servletContext.contextPath} // 返回 路径 170 171--%> 172 173<%-- 174访问作用域范围的隐含对象 175即pageScope、requestScope、sessionScope、applicationScope。 176 177--%> 178 179<%-- 180在EL中,提供了6个访问环境信息的隐含对象。 181param对象 182在JSP页面中放置一个文本框 183<input type="text" name="name"> 184提交表单后 185${param.name} 186如果文本框中输入中文,请在使用EL前, 187request.setCharacterEncoding("uft-8"); 188 189paramValues对象 190在JSP页面中,放置一个复选框组 191<input type="checkbox" name="affect" value="游泳"> 192<input type="checkbox" name="affect" value="跑步"> 193表单提交后, 194request.setCharacterEncoding("utf-8"); 195${paramValues.affect[0]} 196${paramValues.affect[1]} 197在应用param和paramValues时,如果指定参数不存在,返回空串,不是null 198 199header对象 200用于获取HTTP请求的header的值,有多个不同的值时,就使用 201headerValues对象。 202${header.connection} 203${header["connection"]} 204${header["user-agent"]} 205 206initParam对象 207用于获取web应用初始化参数的值 208在tomcat服务器的web.xml文件中设置一个初始参数 209<context-param> 210 <param-name>author</param-name> 211 <param-value>lucy</param-value> 212</context-param> 213${initParam.author} 214 215 216cookie对象 217在EL中,没有提供cookie保存值的方法,但是提供了访问由请求 218设置的cookie的方法, 219如果cookie中已经设定了一个username的值,可以通过 220${cookie.username}来获取cookie对象。 221要获取cookie的值,可以通过cookie对象的value属性。 222 223定义和使用EL函数 224一共3步骤 2251、编写一个java类,并在该类中编写公用的静态方法,用于 226实现自定义EL函数的功能。 2272、编写标签库描述文件,对函数声明。文件扩展名为.tld, 228保存在web应用的WEB-INF文件夹下。 2293、在JSP页面中引用标签库,并调用自定义的EL函数,实现功能。 230 231在定义和使用EL函数时常见的错误有3种: 232 2331、没有指定完整的类型名而异常 234解决方法是:在扩展名为.tld的文件中指定完整的类型名,如java.lang.String 2352、在标签库的描述文件中输入了错误的标记而异常 236如,<function-signature>错写为<function-signatrue>。 2373、定义的方法不是静态方法而异常 238解决方法是:修改方法为static。 239 240 241 242--%> 243</body> 244</html>