JavaWeb同步学习笔记之五十七、JavaWeb_EL详解

JavaWeb_EL详解

    • EL详解

EL详解

  • 1.EL 隐含对象
     1)与范围有关的隐含对象:
      与范围有关的 EL 隐含对象包含以下四个:pageScope、 requestScope、 sessionScope 和 applicationScope,它们基本上就和 JSP 的 pageContext、request、session 和 application 一样。不过必须注意的是,这四个隐含对象只能用来取得范围属性值,即 JSP 中的 getAttribute(String name),却不能取得其他相关信息。
      ①applicationScope:范围和 JSP Scope 中的 application 相同,它的属性范围是从服务器一开始执行服务,到服务器关闭为止。
      ②sessionScope:范围和 JSP Scope 中的 session 相同,它的属性范围就是用户持续在服务器连接的时间。
      ③requestScope:范围和 JSP 的 Request 相同,requestScope 的范围是指从一个 JSP 网页请求到另一个 JSP 网页
    请求之间,随后此属性就会失效。
      ④pageScope:范围和 JSP 的 Page 相同,也就是单单一页 JSP Page 的范围(Scope)。
     2)与输入有关的隐含对象:
      这里 param 的功能和 request.getParameter(String name) 相同,而 paramValues 和 request.getParameterValues(String name)相同。假若要取得多重选择的复选框的值时,必须使用 paramValues 。例如:使用 paramValues 来取得“兴趣”的值: ${param.username} ……… ${paramValues.habit[0]} ${paramValues.habit[1]}。
      ①param
      ②paramValues
     3)其他隐含对象:
      ①cookie:所谓的 cookie 是一个小小的文本文件,它是以 key、value 的方式将 Session Tracking 的内容记录在这个文本文件内,这个文本文件通常存在于浏览器的暂存区内。JSTL 并没有提供设定 cookie 的动作,因为这个动作通常都是后端开发者必须去做的事情,而不是交给前端的开发者。假若我们在 cookie 中设定一个名称为 userCountry 的值,那么可以使用 c o o k i e . u s e r C o u n t r y 来 取 得 它 。     ② h e a d e r : e a d e r 储 存 用 户 浏 览 器 和 服 务 端 用 来 沟 通 的 数 据 , 当 用 户 要 求 服 务 端 的 网 页 时 , 会 送 出 一 个 记 载 要 求 信 息 的 标 头 文 件 , 例 如 : 用 户 浏 览 器 的 版 本 、 用 户 计 算 机 所 设 定 的 区 域 等 其 他 相 关 数 据 。 假 若 要 取 得 用 户 浏 览 器 的 版 本 , 即 {cookie.userCountry}来取得它。   ②header:eader 储存用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件,例如:用户浏览器的版本、用户计算机所设定的区域等其他相关数据。假若要取得用户浏览器的版本,即 cookie.userCountry  headereader{header[“User-Agent”]}。注意:因为 User-Agent 中包含“-”这个特殊字符,所以必须使用“[]”,而不能写成 $(header.User-Agent)。
      ③headerValues:另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用 headerValues 来取得这些值。
      ④initParam:就像其他属性一样,我们可以自行设定 web 站台的环境参数(Context),当我们想取得这些参数时,可以使用 initParam 隐含对象去取得它。
      ⑤pageContext:
    JavaWeb同步学习笔记之五十七、JavaWeb_EL详解_第1张图片
    JavaWeb同步学习笔记之五十七、JavaWeb_EL详解_第2张图片
    其中 ${pageContext.request.contextPath} 和 ${pageContext.request.remoteAddr } 较为常用。
  • 2.EL算术运算符、关系运算符和逻辑运算符
     1)和其他语言中的运算符基本类似,不再详细描述。
    JavaWeb同步学习笔记之五十七、JavaWeb_EL详解_第3张图片
  • 3.其他运算符
     1)Empty 运算符:
      ①Empty 运算符主要用来判断值是否为 null 或空的,例如:$ { empty param.name }。
      ②接下来说明 Empty 运算符的规则:
       {empty A}
      ● 假若 A 为 null 时,回传 true
      ● 否则,假若 A 为空 String 时,回传 true
      ● 否则,假若 A 为空 Array 时,回传 true
      ● 否则,假若 A 为空 Map 时,回传 true
      ● 否则,假若 A 为空 Collection 时,回传 true
      ● 否则,回传 false
     2)条件运算符:
      $ { A ? B : C} 意思是说,当 A 为 true 时,执行 B;而 A 为 false 时,则执行 C 。
      3)括号运算符:
       括号运算符主要用来改变执行优先权,例如:${ A * (B+C) } 。
  • 4.示例代码
    web.xml
	<context-param>
		<param-name>initNameparam-name>
		<param-value>ATGUIGUparam-value>
	context-param>

el2.jsp

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.atguigu.javaweb.Customer"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>

	
	${param.score > 60 ? "及格" : "不及格" }
	<br>
	
	<% 
		List<String> names = new ArrayList<String>();
		names.add("abc");
		request.setAttribute("names", names);
	%>
	
	names is empty: ${empty requestScope.names }
	<br>
	
	
	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>

	
	score: ${param.score }
	<%-- 
	<%= request.getParameter("score") %>
	--%>
	<br>
	names: ${paramValues.name[0].class.name }
	<%-- 
	<%= 
		request.getParameterValues("name")[0].getClass().getName()
	%>
	--%>
	<br>
	
	
	time: ${applicationScope.time.time }
	<%-- 
	<%= application.getAttribute("time") %>
	--%>
	<br>
	
body>
html>

你可能感兴趣的:(JavaWeb)