zoukankan      html  css  js  c++  java
  • EL表达式详解

    1. 简介
            (1) JSP表达式 <%= %> 用于向页面中输出一个对象。
            (2) 到JSP2.0时,在我们的页面中不允许出现 JSP表达式和 脚本片段。      

      (3) 使用EL表达式来代替JSP表达式 ,使用JSTL标签来代替JSP脚本片段。
            
            (4) EL表达式用来向页面输出内容
            
            getAttribute();//四个域对象都可以使用//作用不是接收请求参数,在使用getAttribute方法之前必须先使用setAttribute()将属性对方法域对象中;返回Object类型!
            
            getParameter()://仅仅是request使用!用于接收请求参数【url,form表单中】;返回值String类型
        
        
    2. 基本语法
            (1)语法: ${表达式}
            用EL表达式获取服务器名称、端口信息、项目名

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5     <head>
     6         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7         <title>Insert title here</title>
     8         <base href="http://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/"/>
     9     </head>
    10     <body>
    11         ${pageContext.request.serverName}
    12         ${pageContext.request.serverPort}
    13         ${pageContext.request.contextPath}
    14     </body>
    15 </html>


            (2) EL表达式可以从域中获取属性。
                 - 使用 ${属性名}
                 - 如果只填写一个属性名,EL表达式会自动做全域查找。
                
                 - 所谓的全域查找,就是按照page request session  application四个域范围内分别,找到就返回属性,如果没找到什么都不返还。
                
                 - 我们还可以指定去哪个域查找
                    pageScope
                    requestScope
                    sessionScope
                    applicationScope
     
                - 例子:
                    查找request中属性
                        ${requestScope.属性名}


                    查找session中的属性
                        ${sessionScope.属性名}
                
                - 注意:EL表达式只能获取域中的属性
                    EL表达式不能直接调用对象的方法
                    
                - 通过EL表达式读取对象的属性时,只需要${对象.属性名}
                    EL表达式会自动调用对象的对应的getter方法,通过将属性名首字母大写,然后加上一个get
                    
                    注意:只要有属性,就可以一直点下去,也就说对象的属性是对象的话,我们也可以通过对象的属性的属性的方式调用!
                    
                - 当读取一些名字比较特殊的属性时,这种特殊值必须要指定域,例如属性名带-:
                    ${requestScope['属性名']}
            
            
            
    3. 隐含对象
                > EL中一共有11个内置对象。
                    ①pageContext
                        类型: PageContext
                            它和JSP中pageContext是一样的
                        作用: 可以获取到JSP中其他的隐含对象
                        
                        例如:可以获取项目名:
                            ${pageContext.request.contextPath }
                    
                    
                    ②pageScope
                        类型:Map<String,Object>
                        代表:page域中的属性
                        作用:可以获取到page域中的属性
                        
                    ③requestScope
                        类型:Map<String,Object>
                        代表:request域中的属性
                        作用:可以获取到request域中的属性
                        
                    ④sessionScope
                        类型:Map<String,Object>
                        代表:session域中的属性
                        作用:可以获取到session域中的属性
                    
                    ⑤applicatScope
                        类型:Map<String,Object>
                        代表:application域中的属性
                        作用:可以获取到application域中的属性
                        
                        
                    ⑥param
                        类型: Map<String , String>
                        代表:用户发送的请求参数
                        作用:可以获取请求参数
                        用法: ${param.参数名}
                        
                    ⑦paramValues
                        类型:Map<String , String[]>
                        代表:一个请求参数对应的多个值
                        用法: ${paramValues.参数名[索引]}
                        
                    header
                        作用:可以获取到用户发送的请求头
                        类型:Map<String , String>
                        例如:获取用户的系统信息 ${header['User-Agent']}
                        
                    headerValues
                        类型: Map<String , String[]>
                        作用:可以获取一个头的多个值
                
                    initParam;
                        类型:Map<String , String>
                        作用:获取整个WEB应用的初始化参数
                
                    ⑪cookie
                        类型:Map<String , Cookie>
                        作用:用来获取Cookie

                        
        
    4. 运算
            > 在EL中可以直接使用运算符进行运算。
            
            > 在EL中可以使用Empty元素符:
                如果值为null , empty则返回 true
                如果为空串, 则返回 true
                空的集合    返回true
                
            > 所以empty元素符经常用来判断集合或者字符串是否为空

    代码示例:

     1 <%@page import="java.util.List"%>
     2 <%@page import="java.util.ArrayList"%>
     3 <%@page import="com.neuedu.el.User"%>
     4 <%@ page language="java" contentType="text/html; charset=UTF-8"
     5     pageEncoding="UTF-8"%>
     6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     7 <html>
     8         <head>
     9         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    10         <title>Insert title here</title>
    11     </head>
    12     <body>
    13         ${3*5}
    14         ${empty ""}
    15         
    16         <%
    17             User user=new User();
    18             request.setAttribute("user", user);
    19         %>
    20         
    21         ${empty user}
    22         
    23         <%
    24             List<User> list=new ArrayList<User>();
    25             list.add(new User());
    26             request.setAttribute("list", list);
    27 
    28         %>
    29         
    30         ${empty list}
    31     </body>
    32 </html>

    运行结果:

    user为实体对象,不为空,所以 ${empty user} 为false

    因此${empty list}也为false

  • 相关阅读:
    Texture转Texture2D
    虚拟化 -- kvm简介
    虚拟化
    数据库
    openstack共享组件(1)------ NTP 时间同步服务
    openstack
    Linux基础命令
    第七章 Python文件操作
    第六章 Python流程控制
    老吴Python宝典之——Python字典&集合(第五章 )
  • 原文地址:https://www.cnblogs.com/double-s/p/8094712.html
Copyright © 2011-2022 走看看