编程语言
384
code094.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>EL表达式</title> </head> <body> <%-- JSP页面java代码方式 --%> <% if(session.getAttribute("userName") != null) { out.println(session.getAttribute("userName").toString()); } %> <br> <%-- EL表达式,更简洁 --%> ${userName} <br> <%-- 由于EL表达式的语法以$开头,所以如果在JSP页面中要显示$开头字符串,请在前面加上反斜杠 --%> \${userName} <br> <%-- 在EL表达式中,要输出一个字符串,可以将字符串放在一对单引号或双引号内 --%> ${'虾米大王'} ${"虾米大王"} <br> <%-- 如果想通过EL输入两个字符串数值的和,可以直接通过+号连接 --%> ${number1 + number2} <br> <%-- 在低版本的环境兼容,需要禁用EL --%> <%-- 方式一,使用反斜杠 --%> \${expression} \${number} <%-- 方式二,使用page指令,ture为忽略EL --%> <%@ page isELIgnored="false" %> <%-- 方式三,在tomcat服务器的web.xml中配置 ignored 元素 --%> <%-- 以下为模拟代码,去除了尖括号 jsp-config jsp-property-group url-pattern *.jsp /url-pattern el-ignored true /el-ignored /jsp-property-group /jsp-config --%> <%-- EL的保留关键 and eq gt instanceof div or le false empty not It ge --%> <%-- 一下是在EL中运算符号的优先级 ,由高到低 [] . () -(负号) not ! empey * / div % mod < > <= >= lt gt le ge == != eq ne && and || or ? : --%> <br> <%-- 通过EL提供的 [] 和 . 运算符可以访问数据 --%> ${userInfo.id} ${userInfo[id]} <%-- 通过 [] 运算符可以获取数组的指定元素 .运算符不能 获取request范围中的数组arrBook的第一个元素 --%> ${arrBook[0]} <%-- 在EL中进行算术运算 + 加 ${19+1} 20 - 减 ${66-30} 36 * 乘 ${52.1*10} 521.0 / 除 ${5/2} 2.5 div 除 ${9 div 0} Infinity % 求余 ${17%3} 2 mod 求余 ${15 mod 0} 抛出异常 --%> <%-- 在EL中判断对象是否为空 ${empty expression} --%> <% request.setAttribute("user02", " "); %> <% request.setAttribute("user03", null); %> ${empty user02}<br> ${empty user03}<br> <%-- 在EL中,提供了6种关系运算符。 == 等于 ${10 == 10} true eq 等于 ${10 eq 10} true != 不等 ${10 != 10} false ne 不等 ${10 ne 10} false < 小于 ${7 < 6} false lt 小于 ${7 lt 6} false > 大于 ${7 > 6} true gt 大于 ${7 gt 6} true <= 小于等于 ${7 <= 6} false le 小于等于 ${7 le 6} false >= 大于等于 ${7 >= 6} true ge 大于等于 ${7 ge 6} true --%> <%-- 在EL中,提供的逻辑运算符 && 与 ${true && false} false and 与 ${true and false} false || 或 ${true || false} true or 或 ${true or false} true ! 非 ${!true} false not 非 ${not true} false --%> <%-- EL的隐含对象 提供了11个隐含对象,这些对象类似于JSP内置对象, 除PageContext是javaBean对象,对应于javax.servlet.jsp.PageContext类型外, 其他的隐含对象都对应于java.util.Map类型。 页面上下文对象pageContext ${pageContext.request} ${pageContext.request.serverPort} //返回8080 ${pageContext.response} ${pageContext.response.contentType} //返回 text/html;charset=utf-8 ${pageContext.out} ${pageContext.out.bufferSize} //返回8192 ${pageContext.session} ${pageContext.session.maxInactiveInterval} //返回 1800秒 ${pageContext.exception} ${pageContext.exception.message} // 返回异常信息 ${pageContext.page} ${pageContext.page.class} // 返回 class org.apache.jsp.index_jsp ${pageContext.servletContext} ${pageContext.servletContext.contextPath} // 返回 路径 --%> <%-- 访问作用域范围的隐含对象 即pageScope、requestScope、sessionScope、applicationScope。 --%> <%-- 在EL中,提供了6个访问环境信息的隐含对象。 param对象 在JSP页面中放置一个文本框 <input type="text" name="name"> 提交表单后 ${param.name} 如果文本框中输入中文,请在使用EL前, request.setCharacterEncoding("uft-8"); paramValues对象 在JSP页面中,放置一个复选框组 <input type="checkbox" name="affect" value="游泳"> <input type="checkbox" name="affect" value="跑步"> 表单提交后, request.setCharacterEncoding("utf-8"); ${paramValues.affect[0]} ${paramValues.affect[1]} 在应用param和paramValues时,如果指定参数不存在,返回空串,不是null header对象 用于获取HTTP请求的header的值,有多个不同的值时,就使用 headerValues对象。 ${header.connection} ${header["connection"]} ${header["user-agent"]} initParam对象 用于获取web应用初始化参数的值 在tomcat服务器的web.xml文件中设置一个初始参数 <context-param> <param-name>author</param-name> <param-value>lucy</param-value> </context-param> ${initParam.author} cookie对象 在EL中,没有提供cookie保存值的方法,但是提供了访问由请求 设置的cookie的方法, 如果cookie中已经设定了一个username的值,可以通过 ${cookie.username}来获取cookie对象。 要获取cookie的值,可以通过cookie对象的value属性。 定义和使用EL函数 一共3步骤 1、编写一个java类,并在该类中编写公用的静态方法,用于 实现自定义EL函数的功能。 2、编写标签库描述文件,对函数声明。文件扩展名为.tld, 保存在web应用的WEB-INF文件夹下。 3、在JSP页面中引用标签库,并调用自定义的EL函数,实现功能。 在定义和使用EL函数时常见的错误有3种: 1、没有指定完整的类型名而异常 解决方法是:在扩展名为.tld的文件中指定完整的类型名,如java.lang.String 2、在标签库的描述文件中输入了错误的标记而异常 如,<function-signature>错写为<function-signatrue>。 3、定义的方法不是静态方法而异常 解决方法是:修改方法为static。 --%> </body> </html>