JavaWeb同步学习笔记之五十六、JavaWeb_EL语法

JavaWeb_EL语法

    • EL语法

EL语法

  • 1.EL 简介
     1)EL 全名为 Expression Language,它原本是 JSTL 1.0 为方便存取数据所自定义的语言。当时 EL 只能在 JSTL 标签中使用,到了 JSP 2.0 之后,EL 已经正式纳入成为标准规范之一。因此,只要是支持 Servlet 2.4 / JSP 2.0 的 Container,就都可以在 JSP 网页中直接使用 EL 了。
  • 2.EL语法
     1)EL 语法很简单,它最大的特点就是使用上很方便。接下来介绍 EL 主要的语法结构:${sessionScope.user.sex}。所有 EL 都是以 ${ 为起始、以} 为结尾的。上述 EL 范例的意思是:从 Session 的范围中,取得用户的性别。
  • 3.EL的 . 与 [ ] 运算符
     1)EL 提供 . 和 [ ] 两种运算符来存取数据。下列两者所代表的意思是一样的:${sessionScope.user.sex} 等于 ${sessionScope.user[“sex”]} 。
     2). 和 [ ] 也可以同时混合使用,如下: ${sessionScope.shoppingCart[0].price} 回传结果为 shoppingCart 中第一项物品的价格。
     3)不过,以下两种情况,两者会有差异:
      ①当要存取的属性名称中包含一些特殊字符,如 . 或 – 等并非字母或数字的符号,就一定要使用 [ ],例如 ${user.My-Name } 上述是不正确的方式,应当改为 ${user[“My-Name”] }
      ②我们来考虑下列情况: ${sessionScope.user[data]} 此时,data 是一个变量,假若 data 的值为"sex"时,那上述的例子等于 ${sessionScope.user.sex};假若 data 的值为"name"时,它就等于 ${sessionScope.user.name}。因此,如果要动态取值时,就可以
    用上述的方法来做,但 . 无法做到动态取值。
  • 4.EL变量
     1)EL 存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为 username 的变量。因为我们并没有指定哪一个范围的 username,所以它的默认值会先从 Page 范围找,假如找不到,再依序到 Request、Session、Application 范围。假如途中找到 username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传 null ,如下表:
    JavaWeb同步学习笔记之五十六、JavaWeb_EL语法_第1张图片
    我们也可以指定要取出哪一个范围的变量,如下表:
    JavaWeb同步学习笔记之五十六、JavaWeb_EL语法_第2张图片

.
    其中,pageScope、requestScope、sessionScope 和 applicationScope 都是 EL 的隐含对象,由它们的名称可以很容易猜出它们所代表的意思,例如:${sessionScope.username}是取出 Session 范围的 username 变量。

  • 5.EL自动转变类型
     1)EL 除了提供方便存取变量的语法之外,它另外一个方便的功能就是:自动转变类型,我们来看下面这个范例:${param.count + 20} 假若窗体传来 count 的值为 10 时,那么上面的结果为 30。
  • 6.练习
    el1.jsp
<%@page import="java.util.Date"%>
<%@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>
	
	<form action="el.jsp" method="post">
		
		username: "/>
		
			
		username: <input type="text" name="username" 
			value="${param.username }"/>
		<input type="submit" value="Submit"/>
		
	form>
	
	username: <%= request.getParameter("username") %>
	
	<br><br>
	
	<jsp:useBean id="customer" class="com.atguigu.javaweb.Customer" scope="session">jsp:useBean>
	<jsp:setProperty property="age" value="12" name="customer"/>
	
	age: 
	<% 
		Customer customer2 = (Customer)session.getAttribute("customer");
		out.print(customer2.getAge());
	%>
	<br>
	age: <jsp:getProperty property="age" name="customer"/>

	<br>
	<br>
	
	<% 
		application.setAttribute("time", new Date());
	%>
	
	<a href="el2.jsp?score=89&name=A&name=B&name=C">To El2 Pagea>
	
body>
html>

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>

	
	score: ${param.score + 11}
	<br>
	score: <%= request.getParameter("score") + 11 %>
	<br>
	
	
	<% 
		Customer cust2 = new Customer();
		cust2.setAge(28);
		request.setAttribute("customer", cust2);
	%>
	
	age: ${customer.age } 

	<br>
	
	age: ${sessionScope.customer["age"] }
	
	<%-- 
		Customer customer = (Customer)session.getAttribute("customer");
		out.print(customer.getAge());
	--%>
	
	<% 
		Customer customer = new Customer();
		customer.setName("ATGUIGU");	
	
		session.setAttribute("com.atguigu.customer", customer);
	%>
	
	<br>
	
	name: ${sessionScope["com.atguigu.customer"].name }
	
body>
html>

你可能感兴趣的:(JavaWeb)