EL

EL 全名为 Expression Language,为方便存取数据所自定义的语言,可以在 JSP 网页中直接使用 EL .

EL 主要的语法结构:
              ${sessionScope.user.sex}
              所有 EL 都是以 ${ 为起始、以} 为结尾的。

EL 提供 . 和 [ ] 两种运算符来存取数据。

              ${sessionScope.user.sex}
              等于
              ${sessionScope.user["sex"]

${username}。它的意思是取出某一范围中名称为 username的变量。

因为我们并没有指定哪一个范围的 username,所以它的默认值会先从 Page 范围找,假如找不到,

再依序到 Request、Session、Application 范围。假如途中找到 username,就直接回传,

不再继续找下去,但是假如全部的范围都没有找到时,就回传 null.

自动转换

${param.count + 20}

假若窗体传来 count 的值为 10 时,那么上面的结果为 30。

 

EL 隐含对象总共有 11 个

注意:

Param.jsp 主要使用 EL 的隐含对象 param来接收数据。

但是必须注意:假若要取得多重选择的复选框的值时,必须使用 paramValues,

例如:使用 paramValues 来取得“兴趣”的值

           兴趣: ${paramValues.habit[0]}
                       ${paramValues.habit[1]}

 

假若我们在 cookie 中
设定一个名称为 userCountry 的值,那么可以使用${cookie.userCountry}来取得它。

 

initParam就像其他属性一样,我们可以自行设定 web 站台的环境参数(Context),

当我们想取得这些参数时,可以使用 initParam 隐含对象去取得它,

例如:

<context-param>
<param-name>userid</param-name>
<param-value>mike</param-value>
</context-param>

直接使用 ${initParam.userid}来取得名称为 userid,其值为 mike 的参数。

 

${pageContext}来取得其他有关用户要求或页面的详细信息

${pageContext.request.contextPath} 服务的 web application 的名称

 

Empty 运算符
Empty 运算符主要用来判断值是否为 null 或空的,

例如:
${ empty param.name }
empty 可以作用于一个集合,若该集合不存在或集合中没有元素, 其结果都为 true

 

条 件 运算符:${ A ? B : C}

代码说明

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.aff.javaweb.Customer"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

    <!-- 7. EL 的运算符 -->
    ${param.score > 60 ? "及格" : "不及格" }
    <br>
    
    <% 
        List<String> names = new ArrayList<String>();
        names.add("abc");
        request.setAttribute("names", names);
    %>
    <!-- empty 可以作用于一个集合, 若该集合不存在或集合中没有元素, 其结果都为 true -->
    names is empty: ${empty requestScope.names }
    <br>
    
    <!-- 6. 其他隐含对象: pageContext 等(cookie, header, initParam 只需了解.) -->
    pageContext: pageContext 即为 PageContext 类型, 但只能读取属性就可以一直的 . 下去。 
    <br>
    contextPath: ${pageContext.request.contextPath }
    
    <br>
    sessionId: ${pageContext.session.id }
    
    <br>
    sessionAttributeNames: ${pageContext.session.attributeNames }
    
    <br>
    
    
    initParam: ${initParam.initName }
    <br>
    
    Accept-Language: ${header["Accept-Language"] }
    <br>

    JSESSIONID: ${cookie.JSESSIONID.name } -- ${cookie.JSESSIONID.value }
    <br>

    <!-- 5. 与输入有关的隐含对象: param, paramValues -->
    score: ${param.score }
    <%-- 
    <%= request.getParameter("score") %>
    --%>
    <br>
    names: ${paramValues.name[0].class.name }
    <%-- 
    <%= 
        request.getParameterValues("name")[0].getClass().getName()
    %>
    --%>
    <br>
    
    <!-- 4. 隐含对象之与范围相关的: pageScope, requestScope, sessionScope, applicationScope -->
    time: ${applicationScope.time.time }
    <%-- 
    <%= application.getAttribute("time") %>
    --%>
    <br>
    
    <!-- 3. EL 可以进行自动的类型转换 -->
    score: ${param.score + 11}
    <br>
    score: <%= request.getParameter("score") + 11 %>
    <br>
    
    <!-- 2. EL 中的隐含对象 -->
    <% 
        Customer cust2 = new Customer();
        cust2.setAge(28);
        request.setAttribute("customer", cust2);
    %>
    
    age: ${customer.age } 

    <br>
    <!-- 1. EL 的 . 或 [] 运算符 -->
    age: ${sessionScope.customer["age"] }
    
    <%-- 
        Customer customer = (Customer)session.getAttribute("customer");
        out.print(customer.getAge());
    --%>
    
    <% 
        Customer customer = new Customer();
        customer.setName("HXL");    
    
        session.setAttribute("com.aff.customer", customer);
    %>
    
    <br>
    <!--  
        如果域对象中的属性名带有特殊字符, 则使用 [] 运算符会很方便. 
    -->
    name: ${sessionScope["com.aff.customer"].name }
    
</body>
</html>

 

posted @ 2020-04-22 19:09  林淼零  阅读(560)  评论(0编辑  收藏  举报