zoukankan      html  css  js  c++  java
  • JavaWeb总结(八)—EL表达式

    一、EL表达式简介

        EL全名Expression Language。主要有以下作用。

    1.获取数据

         EL表达式主要用于替换JSP页面的脚本表达式,以及各种类型的Web域中检索Java对象、获取数据。(某个Web域中的对象、访问javabean的属性、访list集合、访问map集合、访问数组)

    2.执行运算

         利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算、和算术运算,以及在JSP页面完成一些简单的逻辑运算。${user == null}。

    3.获取Web开发常用对象

         EL表达式定义了一些隐式对象,利用这些隐式对象,Web开发人员可以很轻松的获得对Web常用对象的引用。从而获得这些对象中的数据。

    4.调用Java方法

         EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java方法。

    二、EL表达式之获取数据

         使用EL表达式获取数据格式: ${ }

         EL表达式在执行语句时,会调用pageContext.findAttribute(""),分别从page、request、session、application四个域对象中查找,如果找到就返回相应的值,没有找到就返回""(空字符串)。EL表达式可以很轻松的获取JavaBean的属性、获取集合中的数据。

    <%@page import="com.kiwi.domain.Address"%>
    <%@page import="com.kiwi.domain.Person"%>
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        
        <title>My JSP 'index.jsp' starting page</title>
      </head>
      
      <body>
      
      	<br>----------------------获取域中存的数据----------------------<br>
      	<%
      		String data = "abcd";
      	    request.setAttribute("data",data);
      	%>
      	${data} <%-- pageContext.findAttribute("data") --%>
       
      
        <br>----------------------获取域中存的JavaBean数据----------------------<br>
      	<%
      		Person p1 = new Person();
      		p1.setName("Tom");
      	    request.setAttribute("person",p1);
      	%>
      	${ person.name }
      	
      	
        <br>----------------------获取域中存的JavaBean中的JavaBean的数据----------------------<br>
      	<%
      		Person p2 = new Person();
      		Address a = new Address();
      		a.setCity("北京");
      		p2.setAddress(a);
      	    request.setAttribute("person2",p2);
      	%>
      	${ person2.address.city}
      	
      	
      	<br>----------------------获取域中存的list集合中的数据----------------------<br>
      	<%
      		List<Person> list = new ArrayList<Person>();
      		list.add(new Person("AAA"));	
      		list.add(new Person("BBB"));	
      		list.add(new Person("CCC"));	
      		list.add(new Person("DDD"));	
      		request.setAttribute("list",list);
      	%>
      	${ list[1].name }
      	
      	
      	<br>----------------------获取域中存的map集合中的数据----------------------<br>
      	<%
      		Map map = new HashMap();
      		map.put("a",new Person("AAAA"));
      		map.put("b",new Person("BBBB"));
      		map.put("c",new Person("CCCC"));
      		map.put("d",new Person("DDDD"));
      		request.setAttribute("map",map);
      		
      	%>
      	${ map.a.name }
      	
      </body>
    </html>

    结果:

    image

    三、EL表达式之运算

         EL表达式支持如下运算符。

    1.关系运算符

    image

    2.逻辑运算符

    image

    3.empty运算符

         检查对象是否为null。

    4.二元运算符

         ${ username != null ? username : "" }

    5.[] 和.运算符

    四、EL表达式之获取Web开发常用对象

         EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。

    pageContext

    对应于JSP页面中的pageContext对象(注意:取的是pageContext对象)

    pageScope

    代表page域中用于保存属性的Map对象

    requestScope

    代表request域中用于保存属性的Map对象

    sessionScope

    代表session域中用于保存属性的Map对象

    applicationScope

    代表application域中用于保存属性的Map对象

    param

    表示一个保存了所有请求参数的Map对象

    paramValues

    表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]

    header

    表示一个保存了所有http请求头字段的Map对象,注意:如果头里面有“-” ,例Accept-Encoding,则要header[“Accept-Encoding”]

    headerValues

    表示一个保存了所有http请求头字段的Map对象,它对于某个请求参数,返回的是一个string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]

    cookie

    表示一个保存了所有cookie的Map对象

    initParam

    表示一个保存了所有web应用初始化参数的map对象

    <%@page import="com.kiwi.domain.Address"%>
    <%@page import="com.kiwi.domain.Person"%>
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        
        <title>My JSP 'index.jsp' starting page</title>
      </head>
      
      <body>
      
      <br>-----------------------------隐式对象-------------------------------<br>
      
      <br/>---------------1.pageContext对象:获取JSP页面中的pageContext对象------------------------<br/>
       ${pageContext}
      
      
      <br/>---------------2.pageScope对象:从page域(pageScope)中查找数据------------------------<br/>
      <%
      		pageContext.setAttribute("data","000");
      %>	
      ${ data }<%-- 这是从四个域里面找 --%>
      ${ pageScope.data }	
      
      
      
      <br/>---------------3.requestScope对象:从request域(requestScope)中查找数据------------------------<br/>
      <%
      		request.setAttribute("data","1111");
      %>	
      ${ requestScope.data }	
      
      
      
      <br/>---------------4.sessionScope对象:从session域(sessionScope)中查找数据------------------------<br/>
      <%
      		session.setAttribute("data","2222");
      %>	
      ${ sessionScope.data }	
      
      
      
      <br/>---------------5.applicationScope对象:从application域(applicationScope)中查找数据------------------------<br/>
      <%
      		application.setAttribute("data","3333");
      %>	
      ${ applicationScope.data }	
      	
      	
      </body>
    </html>

    结果:

    image

  • 相关阅读:
    FreeRTOS 移植到WIN10
    Keil debug command SAVE 命令保存文件的解析
    VS2017 编译 Visual Leak Detector + VLD 使用示例
    LaTeX 中插入GIF图片
    VS2017 + Qt5 + OpenCV400 环境配置
    记一次C++编程引用obj文件作为静态库文件
    Qt 多语言支持
    vscode 解决符号无法识别的问题
    带FIFO的UART数据接收
    MySQL Connector/Python 接口 (三)
  • 原文地址:https://www.cnblogs.com/yangang2013/p/5398372.html
Copyright © 2011-2022 走看看