Java Web EL表达式

基本概念

  • EL 表达式的全称是:Expression Language,是表达式语言
  • 作用:代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出
  • EL 表达式在输出数据的时候,要比 jsp 的表达式脚本要简洁很多
    <body> 
    	<% 
    		request.setAttribute("key","值"); 
    	%>
    	表达式脚本输出 key 的值是: 
    	<%=request.getAttribute("key1")==null?"":request.getAttribute("key1")%> <br/> 
    	
    	EL 表达式输出 key 的值是:
    	${key1} 
    </body>
    
  • 格式:${表达式}
  • EL 表达式在输出 null 值的时候,输出的是空串。jsp 表达式脚本输出 null 值的时候,输出的是 null 字符串。

搜索域数据的顺序

  • EL 表达式主要是输出域对象中的数据
  • 当四个域中都有相同的 key 的数据的时候,EL 表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。

表达式输出

  • 普通属性,数组属性,List 集 合属性,map 集合属性
    public class Person {
        private String name;
        private Integer id;
        private String[] phones;
        private List<String> emails = new ArrayList<>();
        private Map<String, String> family = new HashMap<>();
        // ...
    }
    
    <%--调用bean的对象,输出该方法--%>
    <%
        Person person = new Person();
        person.setId(0);
        person.setName("John");
        person.setPhones(new String[]{"24354235245", "41354654846"});
        ArrayList<String> emails = new ArrayList<>();
        emails.add("513531");
        emails.add("5456563");
        person.setEmails(emails);
        Map<String, String> family = new HashMap<>();
        family.put("father", "jack");
        family.put("mother", "amy");
        family.put("brother", "jackson");
        family.put("grandma", "mary");
        person.setFamily(family);
        pageContext.setAttribute("person", person);
    %>
    
    <%--获取单个属性--%>
    ${person.id}<br>
    ${person.name}<br>
    <%--获取数组--%>
    ${person.phones}<br>
    ${person.phones[0]}<br>
    ${person.phones[1]}<br>
    <%--获取List--%>
    ${person.emails}<br>
    ${person.emails[0]}<br>
    ${person.emails[1]}<br>
    <%--获取Map--%>
    ${person.family}<br>
    ${person.family.mother}<br>
    ${person.family["father"]}<br>
    

运算

  • 基本运算在这里插入图片描述
    在这里插入图片描述

    <%--逻辑运算--%>
    == ${1 == 2} ${1 eq 2} <br>
    != ${1 != 2} ${1 ne 2} <br>
    > ${1 > 2} ${1 gt 2} <br>
    >= ${1 >= 2} ${1 ge 2} <br>
    < ${1 < 2} ${1 lt 2} <br>
    <= ${1 <= 2} ${1 le 2} <br>
    
    <%--算术运算--%>
    + ${1 + 2} <br>
    - ${1 - 2} <br>
    * ${1 * 2} <br>
    / ${1 / 2} <br>
    % ${1 % 2} <br>
    
  • empty 运算:可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false

    <%--empty运算--%>
    <%
        request.setAttribute("emptyNull", null);
        request.setAttribute("emptyStr", "");
        request.setAttribute("emptyArr", new int[]{});
        request.setAttribute("emptyList", new ArrayList<Integer>());
        request.setAttribute("emptyMap", new HashMap<String, String>());
    %>
    null ${empty requestScope.emptyNull} <br>
    "" ${empty emptyStr} <br>
    new int[]{} ${empty emptyArr} <br>
    new ArrayList&gt;Integer&lt;() ${empty emptyList} <br>
    new HashMap&gt;String, String&lt;() ${empty emptyMap} <br>
    
  • 三元运算

    ${1 > 2 ? "greater":"smaller"}
    

11 个隐含对象

变量类型作用
pageContextPageContextImpl它可以获取 jsp 中的九大内置对象
pageScopeMap<String,Object>它可以获取 pageContext 域中的数据
requestScopeMap<String,Object>它可以获取 Request 域中的数据
sessionScopeMap<String,Object>它可以获取 Session 域中的数据
applicationScopeMap<String,Object>它可以获取 ServletContext 域中的数据
paramMap<String,String>它可以获取请求参数的值
paramValuesMap<String,String[]>它也可以获取请求参数的值,获取多个值的时候使用。
headerMap<String,String>它可以获取请求头的信息
headerValuesMap<String,String[]>它可以获取请求头的信息,它可以获取多个值的情况
cookieMap<String,Cookie>它可以获取当前请求的 Cookie 信息
initParamMap<String,String>它可以获取在 web.xml 中配置的上下文参数
  • EL 获取四个特定域中的属性
    pageScopepageContext 域)
    requestScopeRequest 域)
    sessionScopeSession 域)
    applicationScopeServletContext 域)
    <body> 
    	<% 
    		pageContext.setAttribute("key1", "pageContext1"); 
    		pageContext.setAttribute("key2", "pageContext2"); 
    		request.setAttribute("key2", "request"); 
    		session.setAttribute("key2", "session"); 
    		application.setAttribute("key2", "application"); 
    	%>
    	${ applicationScope.key2 } 
    </body>
    
  • pageContext 对象的使用
    通过pageContext对象可以获取request对象,像在Servlet一样,获取Servlet相关的信息
    服务器 ip:${ pageContext.request.serverName }<br>
    
    为了方便,可以在java代码中,将request放进pageContext的域中,这样就可以像上面的四个特定域一样,直接取request
    <% 
    	pageContext.setAttribute("req", request); 
    	协议: ${ req.scheme }<br>
    %>
    
    <%--pageContext对象的使用--%>
    <%=request.getScheme()%>
    ${pageContext.request.scheme}<br>
    
    <%--简便方法,将request放进key-value里面--%>
    <%--获取协议--%>
    <%pageContext.setAttribute("req", request);%>
    ${req.scheme}<br>
    
    <%--获取服务器IP--%>
    <%=request.getServerName()%>
    ${req.serverName}<br>
    
    <%--获取服务器端口--%>
    <%=request.getServerPort()%>
    ${req.serverPort}<br>
    
    <%--获取客户端IP--%>
    <%=request.getRemoteHost()%>
    ${req.remoteHost}<br>
    
    <%--获取客户端端口号--%>
    <%=request.getRemotePort()%>
    ${req.remotePort}<br>
    
    <%--获取工程路径--%>
    <%=request.getContextPath()%>
    ${req.contextPath}<br>
    
    <%--获取请求方法--%>
    <%=request.getMethod()%>
    ${req.method}<br>
    
    <%--获取会话id编号--%>
    <%=session.getId()%>
    ${pageContext.session.id}<br>
    
  • paramparamValues:获取请求参数的值
    html<%--获取请求参数的值--%>
    <%--单个参数--%>
    ${param.username}<br>
    <%--多个参数(多选列表之类的)--%>
    ${paramValues.hobby}<br>
    ${paramValues.hobby[0]}<br>
    ${paramValues.hobby[1]}<br>
    
  • headerheaderValues 获取请求头的信息
    <%--获取请求头参数--%>
    ${header['User-Agent']}<br>
    ${header['Accept']}<br>
    ${headerValues['User-Agent'][0]}<br>
    
  • cookie:获取cookie参数
    ${cookie.JSESSIONID.name}
    ${cookie.JSESSIONID.value}
    
  • initParam:获取web.xml的参数
    <context-param> 
    	<param-name>username</param-name> 
    	<param-value>root</param-value> 
    </context-param>
    
    ${initParam.username}
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值