EL

作者:禅楼望月

1、概述

EL:Expression Language

用途:

        提供一种更简单的方法来调用Java代码,但是代码本身却放在别的地方。

这说明,这些代码可能在一个普通的常规java类中,也许是一个JavaBean,一个有静态方法的类,或者是某个所谓的标记处理器(Tag Handler)

注:

        最佳实践:把Java方法写在别的地方,再用EL来调用。

语法:

${……}

所有的EL表达式必须写在${}的大括号之间。

默认情况下EL是启用的,但是有时也可能需要禁用EL(比如,你的模板文件中恰好包含了类似与EL的东西(${……}),你则需要告诉容器忽略这些东西,当成普通的文本来处理),具体做法有两种:

①在DD中配置<el-ignored>元素

<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>true</el-ignored> </jsp-property-group> </jsp-config>

②使用page指令的iELIgnored属性

<%@ page language="java" import="java.util.*,Attr.Dog" isELIgnored="true" pageEncoding="utf-8"%>

当DD中的<el-ingored>设置与isELIgnored属性有冲突时,总是听page指令的isELIgnored属性的。

实际开发中应该禁用脚本元素(scriptlet、java表达式或声明),具体做法是:

<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <scripting-invalid>true</scripting-invalid> </jsp-property-group> </jsp-config>

在DD中这样配置后,该应用所有的jsp中都禁用了脚本元素。

简单例子:

<%
      Person p
=new Manager(); Dog1 dog=new Dog1(); dog.setName("wangwang" ); p.setName("张三" ); p.setAge(10 ); p.setDog(dog); pageContext.setAttribute("p" , p, PageContext.APPLICATION_SCOPE); %>

   page_scope.p.dog.name is: ${p.dog.name}

page_scope.p.dog.name is: ${p.dog.name}

<=>   page_scope.p.dog.name is:<%= ((Attr.Person) request.getAttribute("person")).getDog().getName()%>

大笑注意:EL去出来的可以是对象,要取该对象的属性,可以用点号(.)一路点下去,或者可以用中括号。

2 、EL剖析

image

pageContext隐式对象是一个Bean。它有获取方法,所有其他隐式对象都是map。

可以使用点号(.)和中括号([])来访问性质和映射值。

当使用点号时,左边必须是一个map或者是一个bean。右边必须是一个Map键或一个bean属性。点号右边必须遵循Java命名规范。

中括号([])的功能强大多了,使用中括号时没有这些限制,左边还可以是数组(任何类型的都可以)、List等等,中括号中的内容可以是String直接量,这可以是一个Map键,或者是一个bean性质,还可以是List或数组中的索引(数组和List中的String索引会强制转换为int),而且也不必遵循Java命名规范。

2.1、EL的中括号([])操作符

image

当属性为数组或List

image

由此可见,在EL中,数组或List中的String索引会强制转换为int。

当属性为其他

如果中括号中的内容不是String直接量,即中括号中的内容没有带引号,容器就会计算中括号中的内容,搜索与该名字绑定的属性,并替换为这个属性的值。

image

中括号里面还可以嵌套使用表达式。

image

3、使用EL获取从客户端发送过来数据

image

3.1使用EL获取请求参数→param或paramValues

image

3.2 使用EL获取“host”首部

image

3.3使用EL获取更多信息

当要获取的信息不在bean中也不再EL的隐式对象中我们该怎么获取呢?→pageContext

例如:我们想获取HTTP请求方法:

在脚本中,Method is:<%= request.getMethod()%>

在EL中,Method is:${request.method}()因为EL没有request这个隐式对象

        Method is:${requestScope.method}()requestScope不是请求对象本身,二是请求作用域的属性的一个Map

        Method is:${pageContext.request.method}→pageContext(它是一个bean)有一个request性质,request性质有一个method性质。

image

3.4 EL函数

让JSP能够调用普通Java类的方法。
这需要3个步骤:
①编写一个有公共静态方法的Java类。
eg:

package
el; public class DiceRoller { public static int rollDice(){ return (int)((Math.random()+1)*6
);
    }
}

该方法存在的意义就是让JSP调用。

②编写一个标记库描述文件(TLD)。
作用:将真正的Java方法(即①中的方法)映射为供JSP调用的方法。作用与Servlet的配置文件(web.xml)类似。TLD文件一般放在/WEB-INF目录中。扩展名为.tld。

<?xml version="1.0" encoding="ISO-8859-1" ?> <taglib> <tlib-version>1.2</tlib-version> <uri>DiceFunctions</uri> <function> <name>rollIt</name> <function-class>el.DiceRoller</function-class> <function-signature> int rollDice()</function-signature> </function> </taglib>

image

③在JSP中放一个taglib指令。
意义:taglib指令告诉容器,“我要使用这个TLD,并且,在这个JSP中,使用这个TLD中的一个函数时,我想用这个名字作为前缀……”
image
④使用EL调用函数
形式为:${prefix:name()}
${mine.rollIt()}
整个JSP为:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="mine" uri="DiceFunctions" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>EL-Function</title> </head> <body>

  ${mine.rollIt()}  
  
</body> </html>

眨眼容器是怎么发现TLD的?

部署时,容器会搜索WEB-INF和它的子目录(或者在JAR文件中搜索WEB-INF/lib),查找所有的.tld文件。如果找到就读取URL,并创建一个映射(map),指出:“有这个URL的TLD就是这个位置上的这个文件……”。

眨眼EL函数可以有参数吗?

        可以。但是参数类型必须是完全限定名(除基本类型外)

在jsp页面中获取当前项目名称可以

${pageContext.request.contextPath}

image

4 EL中的一些操作符

image

 

转载于:https://www.cnblogs.com/yaoyinglong/p/EL%e8%a1%a8%e8%be%be%e5%bc%8f.html

我提供给你一段sql,你需要修改一下,要求是所有关于查询el_requirement_apply和el_comp_info表的语句均需要增加del_flag = '0'的条件,修改完成后你需要将完整的代码返回给我,完整的sql如下: SELECT gen_random_uuid() AS id, (( SELECT count(1) AS count FROM el_comp_info WHERE ((substr((el_comp_info.unified_code)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_comp_info.unified_code)::text = (feiminying.uniscid)::text)))) AND ((el_comp_info.del_flag)::text = '0'::text) AND ((el_comp_info.audit_status)::text = 'AUDITED'::text))))::numeric AS registeredenterprisenum, COALESCE(( SELECT count(1) AS count FROM el_granting_credit, el_financial_institution, el_requirement_apply WHERE (((el_requirement_apply.id)::text = (el_granting_credit.apply_id)::text) AND (substr((el_requirement_apply.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_apply.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_granting_credit.create_by)::text = (el_financial_institution.user_id)::text))), (0)::bigint) AS creditenterprisenum, COALESCE(( SELECT count(DISTINCT el_requirement_info.unisc_id) AS count FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE ((substr((el_requirement_info.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_info.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND ((el_financial_institution.user_id)::text = (el_loan_grant.create_by)::text))), (0)::bigint) AS loanenterprisenum, COALESCE(( SELECT count(DISTINCT el_requirement_info.unisc_id) AS count FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE ((substr((el_requirement_info.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_info.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND ((el_financial_institution.user_id)::text = (el_loan_grant.create_by)::text))), (0)::bigint) AS loanmicroenterprisenum, COALESCE(( SELECT sum(el_granting_credit.granting_amount) AS sum FROM el_granting_credit, el_financial_institution, el_requirement_apply WHERE (((el_requirement_apply.id)::text = (el_granting_credit.apply_id)::text) AND (substr((el_requirement_apply.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_apply.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_granting_credit.create_by)::text = (el_financial_institution.user_id)::text))), (0)::numeric) AS creditamount, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_requirement_apply, el_financial_institution WHERE (((el_requirement_apply.id)::text = (el_loan_grant.apply_id)::text) AND (substr((el_requirement_apply.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_apply.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text))), (0)::numeric) AS loanamount, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_requirement_apply, el_financial_institution WHERE (((el_requirement_apply.id)::text = (el_loan_grant.apply_id)::text) AND (substr((el_requirement_apply.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_apply.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text))), (0)::numeric) AS inclusivemicroenterpriseloanamount, COALESCE(( SELECT count(1) AS count FROM el_loan_grant, el_requirement_apply, el_financial_institution WHERE (((el_requirement_apply.id)::text = (el_loan_grant.apply_id)::text) AND (substr((el_requirement_apply.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_apply.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text))), (0)::bigint) AS loannum, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE ((substr((el_requirement_info.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_info.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND (el_requirement_info.guarantee_mode = '5'::numeric) AND ((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text))), (0)::numeric) AS creditloanamount, COALESCE(( SELECT count(1) AS count FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE ((substr((el_requirement_info.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_info.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND (el_requirement_info.guarantee_mode = '5'::numeric) AND ((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text))), (0)::bigint) AS creditloannum, COALESCE(( SELECT sum(el_requirement_info.amount) AS sum FROM el_requirement_info, el_requirement_apply, el_financial_institution WHERE ((substr((el_requirement_info.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_info.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_requirement_info.id)::text = (el_requirement_apply.requirement_id)::text) AND ((el_requirement_apply.institution_id)::text = (el_financial_institution.id)::text))), (0)::numeric) AS financingneedsamount, COALESCE(( SELECT count(1) AS count FROM el_requirement_info, el_requirement_apply, el_financial_institution WHERE ((substr((el_requirement_info.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_info.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_requirement_info.id)::text = (el_requirement_apply.requirement_id)::text) AND ((el_financial_institution.id)::text = (el_requirement_apply.institution_id)::text))), (0)::bigint) AS financingneedsnum, COALESCE(( SELECT trunc(avg(to_number((el_loan_grant.loan_rate)::text, '0.00'::text)), 2) AS trunc FROM el_loan_grant, el_requirement_apply WHERE (((el_loan_grant.apply_id)::text = (el_requirement_apply.id)::text) AND (substr((el_requirement_apply.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_apply.unisc_id)::text = (feiminying.uniscid)::text)))))), (0)::numeric) AS averagelendingrate, COALESCE(( SELECT count(DISTINCT el_requirement_info.unisc_id) AS count FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE ((substr((el_requirement_info.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_info.unisc_id)::text = (feiminying.uniscid)::text)))) AND (to_char(el_loan_grant.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND ((el_financial_institution.user_id)::text = (el_loan_grant.create_by)::text))), (0)::bigint) AS monthloanenterprisenum, COALESCE(( SELECT count(1) AS count FROM el_user_info rr, el_financial_institution tt WHERE (((rr.id)::text = (tt.user_id)::text) AND ((rr.user_type)::text = 'FI'::text) AND ((tt.parent_id)::text <> '-1'::text))), (0)::bigint) AS settledinfinancialinstitutionnum, COALESCE(( SELECT count(1) AS count FROM el_financial_product, el_financial_institution WHERE ((el_financial_product.create_by)::text = (el_financial_institution.user_id)::text)), (0)::bigint) AS financialproductsnum, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_financial_institution, el_requirement_apply WHERE (((el_loan_grant.apply_id)::text = (el_requirement_apply.id)::text) AND (substr((el_requirement_apply.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_apply.unisc_id)::text = (feiminying.uniscid)::text)))) AND (to_char(el_loan_grant.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)) AND ((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text))), (0)::numeric) AS monthloanamount, COALESCE(( SELECT count(1) AS count FROM el_loan_grant, el_financial_institution, el_requirement_apply WHERE (((el_loan_grant.apply_id)::text = (el_requirement_apply.id)::text) AND (substr((el_requirement_apply.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_apply.unisc_id)::text = (feiminying.uniscid)::text)))) AND (to_char(el_loan_grant.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)) AND ((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text))), (0)::bigint) AS monthloannum, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE ((substr((el_requirement_info.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_info.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND (el_requirement_info.guarantee_mode = '5'::numeric) AND (to_char(el_loan_grant.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)) AND ((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text))), (0)::numeric) AS monthcreditloanamount, COALESCE(( SELECT count(1) AS count FROM el_loan_grant, el_requirement_info, el_financial_institution WHERE ((substr((el_requirement_info.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_info.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_loan_grant.requirement_id)::text = (el_requirement_info.id)::text) AND (el_requirement_info.guarantee_mode = '5'::numeric) AND (to_char(el_loan_grant.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)) AND ((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text))), (0)::bigint) AS monthcreditloannum, COALESCE(( SELECT sum(el_loan_grant.grant_amount) AS sum FROM el_loan_grant, el_requirement_apply, el_financial_institution WHERE (((el_loan_grant.apply_id)::text = (el_requirement_apply.id)::text) AND (substr((el_requirement_apply.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_apply.unisc_id)::text = (feiminying.uniscid)::text)))) AND (to_char(el_loan_grant.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)) AND ((el_loan_grant.create_by)::text = (el_financial_institution.user_id)::text))), (0)::numeric) AS monthinclusivemicroenterpriseloanamount, COALESCE(( SELECT sum(el_requirement_info.amount) AS sum FROM el_requirement_info, el_requirement_apply, el_financial_institution WHERE ((substr((el_requirement_apply.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_apply.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_requirement_info.id)::text = (el_requirement_apply.requirement_id)::text) AND ((el_requirement_apply.institution_id)::text = (el_financial_institution.id)::text) AND (to_char(el_requirement_info.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)))), (0)::numeric) AS monthfinancingneedsamount, COALESCE(( SELECT count(1) AS count FROM el_requirement_info, el_requirement_apply, el_financial_institution WHERE ((substr((el_requirement_apply.unisc_id)::text, 0, 3) = '91'::text) AND ( (EXISTS ( SELECT 1 from (select unified_code as uniscid from el_comp_info where private_enterprises = 'Y') feiminying WHERE ((el_requirement_apply.unisc_id)::text = (feiminying.uniscid)::text)))) AND ((el_requirement_info.id)::text = (el_requirement_apply.requirement_id)::text) AND ((el_requirement_apply.institution_id)::text = (el_financial_institution.id)::text) AND (to_char(el_requirement_info.update_date, 'yyyy-mm'::text) = to_char(now(), 'yyyy-mm'::text)))), (0)::bigint) AS monthfinancingneedsnum, '2023-06-20 08:00:00'::text AS statisticsbegintime, now() AS statisticsendtime
07-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值