Day10_23——EL表达式

EL表达式

1.EL是jsp内置的表达式语言

  • jsp2.0开始,不让再使用java脚本,而是使用EL表达式和动态标签来代替java脚本

  • EL替代的式<%= ...... %>,也就是说EL只能做输出

2.EL表达式来读取四大域

  • ${xxx},全域查找名为xxx的属性,如果不存在,输出空字符串,而不是null

  • {pageScope.xxx}、{requestScope.xxx}、{sessionScope.xxx}、{applicationScope.xxx},指定域获取属性

3.JavaBean导航

<%@page import="Demo_01."* %>

  <body>

<%

arr a = **new** arr();

a.setS("XXX");

Person p = **new** Person();

p.setAge(22);

p.setName("李四");

p.setArr(a);

request.setAttribute("per", p);

%>

<h2>使用el获取request域的值</h2>

${requestScope.per.arr.s}<!-- request.getAttribute("per").getArr().getS() -->

  </body>

4.EL的11个内置对象

EL可以输出的东西都在11个内置对象中,其中有10个事Map类型,pageContext不是Map,它就是PageContext类型。

  • param:对应参数,key为参数名,value为参数值,适用于单值的参数。

  • paranValues:对应参数,key为参数名,value为多个参数值,适用于多值的参数。

  • header:对应请求头,key为头名称,value为头值,适用于单值请求头。

  • headerValues:对应请求头,key为头名称,value为多个头值,适用于多值请求头。

  • initParam:获取<context-param>内的参数

  • cookie:Map<String,Cookie>类型,其中key事cookie的name,value事cookie对象。

${cookie.uesrname.value}

  • pageContext:它事PageContext类型,${pageContext.request.contextPath}(项目名-以后的表单还要超链接都以它开头)

5.El的函数库(由JSTL提供)

EL.jpg

写法:${fn:length(xxx)}

6.自定义函数类

  • 写一个java类,类中可以定义0~N个方法,但必须事static,而且有返回值

  • 在WEB-INF目录下创建一个tld文件,要在jstl.jar中复制开头和结尾,并且在Java文件中有几个方法,就要在tld文件中写几个function。

<function>

<description> // 方法说明(可不写)

  Tests if an input string contains the specified substring in a case insensitive way.

</description>

<name>fun</name> // 方法名(自己起名字)

<function-class>cn.itcast.MyFunction</function-class>

/ / Java文件的位置

<function-signature>java.lang.String fun()</function-signature>

// 对应的方法

<example> // 例子(可不写)

  <c:if test="${fn:containsIgnoreCase(name, searchString)}">

</example>

</function>

  • 在jsp页面导入标签库

<%@ taglib prefix=”xx” uri=”/WEB-INF/tlds/Xxx.tld” %>

  • 在jsp页面使用自定义函数:${xx:fun() }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。