Jsp第九课 EL表达式的学习和使用

Posted 笔触狂放

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jsp第九课 EL表达式的学习和使用相关的知识,希望对你有一定的参考价值。

什么是EL?

EL即Expression Language(表达式语言)

jsp的内置表达式语言,从jsp2.0开始可以直接使用

EL的功能

用来代替<%=..%>

EL的语法

$EL表达式

1.获取四大作用域中的数据

基本用法

获取域中的数据: $pageScope|requestScope|sessionScope|applicationScope.属性名

$属性名(常用)   等同于    pageContext.findAttribute("name")       如果查找不到返回""

在九大内置对象中有四个对象可以存储数据
从小到大排列:
1.pageContext:该对象中存储的数据只能在本页面中进行使用
2.request:该对象中存储的数据只能在请求转发跳转页面的时候共其他页面进行使用
3.session:该对象中存储的数据在不切换浏览器的情况下,可以任何共享
4.application:该对象中存储的数据在不停止服务器的情况下,可以任意共享

pageContext.setAttribute("a", "苹果");
     request.setAttribute("b", "西瓜");
     session.setAttribute("c", "脐橙");
     application.setAttribute("d", "香蕉");

获取四大域数据方法一:

<!-- 方式一 -->
 <%=pageContext.getAttribute("a") %><br>
 <%=request.getAttribute("b") %><br>
 <%=session.getAttribute("c") %><br>
 <%=application.getAttribute("d") %><br> 

 <!-- 方式二 -->
 <%=pageContext.getAttribute("a") %><br>
 <%=pageContext.getAttribute("b", PageContext.REQUEST_SCOPE) %><br>
 <%=pageContext.getAttribute("c", PageContext.SESSION_SCOPE) %><br>
 <%=pageContext.getAttribute("d", PageContext.APPLICATION_SCOPE) %><br>

 <!-- 方式三 -->
 <!-- 快捷查找方法
 该方法会通过四大作用域的从小到大的顺序挨个查找,直到找到了为止
  -->
 <%=pageContext.findAttribute("a")  %><br><!-- 找了一次 -->
 <%=pageContext.findAttribute("b") %><br><!-- 找了两次 -->
 <%=pageContext.findAttribute("c") %><br><!-- 找了三次 -->
 <%=pageContext.findAttribute("d") %><br><!-- 找了四次 -->

 <!-- 方式四 -->
 <!-- el表达式 -->
 $a<br><!-- 找了一次 -->
 $b<br><!-- 找了两次 -->
 $c<br><!-- 找了三次 -->
 $d<br><!-- 找了四次 -->

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 在九大内置对象中有四个对象可以存储数据
从小到大排列:
1.pageContext:该对象中存储的数据只能在本页面中进行使用
2.request:该对象中存储的数据只能在请求转发跳转页面的时候共其他页面进行使用
3.session:该对象中存储的数据在不切换浏览器的情况下,可以任何共享
4.application:该对象中存储的数据在不停止服务器的情况下,可以任意共享
 -->
 
 <%
 	pageContext.setAttribute("a", "苹果");
 	request.setAttribute("b", "西瓜");
 	session.setAttribute("c", "脐橙");
 	application.setAttribute("d", "香蕉");
 %>
 
 <!-- 方式一 -->
 <%=pageContext.getAttribute("a") %><br>
 <%=request.getAttribute("b") %><br>
 <%=session.getAttribute("c") %><br>
 <%=application.getAttribute("d") %><br>
 <br><br><br><br>
 <!-- 方式二 -->
 <%=pageContext.getAttribute("a") %><br>
 <%=pageContext.getAttribute("b", PageContext.REQUEST_SCOPE) %><br>
 <%=pageContext.getAttribute("c", PageContext.SESSION_SCOPE) %><br>
 <%=pageContext.getAttribute("d", PageContext.APPLICATION_SCOPE) %><br>
 <br><br><br><br>
 <!-- 方式三 -->
 <!-- 快捷查找方法
 该方法会通过四大作用域的从小到大的顺序挨个查找,直到找到了为止
  -->
 <%=pageContext.findAttribute("a")  %><br><!-- 找了一次 -->
 <%=pageContext.findAttribute("b") %><br><!-- 找了两次 -->
 <%=pageContext.findAttribute("c") %><br><!-- 找了三次 -->
 <%=pageContext.findAttribute("d") %><br><!-- 找了四次 -->
 <br><br><br><br>
 <!-- 方式四 -->
 <!-- el表达式 -->
 $a<br><!-- 找了一次 -->
 $b<br><!-- 找了两次 -->
 $c<br><!-- 找了三次 -->
 $d<br><!-- 找了四次 -->
</body>
</html>

从实体类取值

 创建一个实体类:

package com.abc;

public class Dog 
	private String name;//名字
	private int age;//年龄
	private String color;//颜色
	public String getName() 
		return name;
	
	public void setName(String name) 
		this.name = name;
	
	public int getAge() 
		return age;
	
	public void setAge(int age) 
		this.age = age;
	
	public String getColor() 
		return color;
	
	public void setColor(String color) 
		this.color = color;
	
	public Dog() 
		super();
		// TODO Auto-generated constructor stub
	
	public Dog(String name, int age, String color) 
		super();
		this.name = name;
		this.age = age;
		this.color = color;
	
	@Override
	public String toString() 
		return "Dog [name=" + name + ", age=" + age + ", color=" + color + "]";
	
	
	
	
	

 创建一个jsp中,将数据保存至实体类,再将实体类存储至四大作用域中,学习el表达式获取数据:

<%@page import="com.abc.Dog"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<!-- 将多个数据封装在类中,将类存储在四大域中 -->
	<%
		Dog dog=new Dog("旺财",2,"红色");
		request.setAttribute("d1", dog);
	%>
	
	<!-- 方式一 -->
	<%
		Dog d=(Dog)request.getAttribute("d1");
	%>
	名字:<%=d.getName() %><br>
	年龄:<%=d.getAge() %><br>
	颜色:<%=d.getColor() %><br>
	<br><br><br><br>
	<!-- el表达式获得对象中的数据 -->
	<!-- el表达式获得数据的时候,指的是存储至四大域中的定义的名称 -->
	名字:$d1.name<br>
	年龄:$d1.age <br>
	颜色:$d1.color<br>
	
</body>
</html>

获取数组和集合中的数据:

<%@page import="com.abc.Dog"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.Collections"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.util.Arrays"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		int[] ages=20,18,22,25,27;
		application.setAttribute("a1", ages);
		
		List<String> oList=new ArrayList();
		oList.add("黄色");
		oList.add("红色");
		oList.add("绿色");
		oList.add("蓝色");
		oList.add("白色");
		session.setAttribute("ol", oList);
		
		
		
	%>
	
	<!-- 方法一 -->
	<%
		int[] ages1=(int[])application.getAttribute("a1");
		List<String> oList1=(List<String>)session.getAttribute("ol");
	%>
	<%=Arrays.toString(ages1) %>
	<!-- landam表达式 -->
	<%-- <%=oList1.forEach(s->System.out.print(s)) %><br>
	<%=oList1.forEach(System.out::println) %><br> --%>
	<br>
	<br>
	<br>
	<!-- 方法二 使用EL表达式获取数据-->
	$a1[0],$a1[1],$a1[2],$a1[3],$a1[4]<br>
	$ol[0] ,$ol[1] ,$ol[2] ,$ol[3] ,$ol[4] <br>
	
</body>
</html>

获取map中的数据以及混合使用的用法:

<%@page import="com.abc.Dog"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.Collections"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.util.Arrays"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		
		Map<String,String> oMap=new HashMap<>();
		oMap.put("book1", "Java程序设计");
		oMap.put("book2", "mysql数据库教程");
		oMap.put("book3", "Jsp网络编程");
		pageContext.setAttribute("books", oMap);
		
		Map<String,String> oMap1=new HashMap<>();
		oMap1.put("dog1", "藏獒");
		oMap1.put("dog2", "哈士奇");
		oMap1.put("dog3", "拉布拉多");
		
		List<Map<String,String>> oList2=new ArrayList<>();
		oList2.add(oMap);
		oList2.add(oMap1);
		application.setAttribute("o", oList2);
		
		
		List<Dog> oDogs=new ArrayList<>();
		oDogs.add(new Dog("小黄",2,"白色"));
		oDogs.add(new Dog("大白",1,"黄色"));
		oDogs.add(new Dog("大明星",4,"棕色"));
		session.setAttribute("g", oDogs);
	%>
	
	$books.book1 ,$books["book2"] ,$books.book3 <br>
    <!-- 获取出第二只狗的名字 -->
	$o[1].dog2<br>
	<!-- 取出第三只狗的名字 -->
	$g[2].name 
</body>
</html>

 这里就练习到这里,初学者需要掌握各种集合,实体类,数组之间的混合存储数据的EL表达式的获取数据的方式,进行灵活运用。

2.执行运算

 1.算术运算符

        (1)+ - * /

        (2)%和mod:%(或与之等同的mod)运算符用来计算模数(余数)。

<!-- el表达式使用算术运算符 -->
求余数:$3 mod 2 
<br><br>
<%
	request.setAttribute("age", 23);
%>
减法:$age - 5
<br><br>

2.关系运算符

<!-- el表达式使用比较运算符 -->
<!-- 年龄/5大于5 -->
$age/5 gt 5 
<br><br>

3.逻辑运算符

<!-- el表达式使用逻辑运算符 -->
<!-- 年龄%6>5   &&  年龄/4+1<6 -->
$age%6>5 && age/4+1<6
<br><br>

4.空运算符

  1.  empty
  2. 如果这个运算符的参数为null,空字符串,空数组,空Map或空集合,则返回true,否则返回false。
<!-- 空运算符 -->
<% int[] nums=null;
	application.setAttribute("n", nums);
%>
<!-- 判断某一个数据是否是空值 -->
$empty(n) 

5.三元运算符

<!-- 三元运算符 -->
<!-- 判断年龄-5是否大于18,如果大于显示成年,否则未成年 -->
$age-5>=18?"成年人":"未成年" 

6.EL运算例子

3.获取常见的web对象

 该部分学习代码后续补充……

以上是关于Jsp第九课 EL表达式的学习和使用的主要内容,如果未能解决你的问题,请参考以下文章

Scrapy学习第九课

Scrapy学习第九课

EL表达式

jsp中的EL表达式

学习linux第九课!

学习linux第九课!