【JSP】EL表达式

JSP技术的重要功能是用于在浏览器的页面显示数据,那么从某地取出数据就变得十分重要了,于是就诞生了EL表达式。EL表达式的目的就是:取得数据,将其显示在浏览器的页面上!


Table of Contents

什么是EL表达式

第一个EL表达式程序

取值操作

取出4个域对象中存放的值

取出域中所存的数组

取出域中所存的集合

取出域中Map集合的值

输出对象的值

表达式的计算


什么是EL表达式

什么是EL表达式:

  1. Express Lanuage
  2. 是为了简化咱们的JSP代码,具体一点就是为了简化在JSP里面写的那些Java代码。
  3. 使开发者尽可能少的在JSP里编写Java代码

EL表达式的核心功能:

  1. 从四个对象中取出数据
  2. 计算输出表达式的值

写法格式:${表达式 }

  1. 如果从作用域中取值,会先从小的作用域开始取,如果没有,就往下一个作用域取。
  2. 一直把四个作用域取完都没有,就没有显示。

尽管在JSP中,也有相应的写法可以取得并输出域对象中的数据,但是其过于冗余和复杂,所以使用EL表达式来使得这种对数据的取得和输出变得容易!

从域中取出数据:
	Servlet代码:request.getAttribute(“name”);
	JSP脚本:<%=request.getAttribute(“name”)%>
	EL表达式替代上面的脚本:${requestScope.name};

第一个EL表达式程序

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>第一个EL表达式程序</title>
</head>
<body>
	<% //在JSP中写Java代码(在实际开发中要尽量避免)
		pageContext.setAttribute("name","kyle"); //向域对象"page"中放一个键值对:key=name, value=kyle
		pageContext.setAttribute("age", 23); //向域对象"page"中放一个键值对:key=age,value=23
	%>
	
	<h3> 使用EL表达式从page域对象中取出值: </h3> <br/>
	name: ${pageScope.name } <br/>
	age: ${pageScope.age } <br/>
</body>
</html>

执行结果:


取值操作

EL表达式的主要目的就是获得数据并输出,而在Web的回话中,存放数据有四个地方(即四个域对象):page、request、session、application。

EL最主要的作用是获得四大域中的数据,格式${EL表达式}

  1. EL获得pageContext域中的值:${ pageScope.name } 获取该域中键为“name”的值
  2. EL获得request域中的值:${requestScope.name }
  3. EL获得session域中的值:${sessionScope.name }
  4. EL获得application域中的值:${ applicationScope.name }
  5. EL从四个域中获得某个值${name}

取出4个域对象中存放的值

特性:

  1. 从域中取值,得先存值。
  2. 如果没有指定内置对象,先从page里面找,没有去request找,去session,去application。
取出4个作用域中存放的值
<%@ 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>
	<%
		pageContext.setAttribute("name", "page");
		request.setAttribute("name", "request");
		session.setAttribute("name", "session");
		application.setAttribute("name", "application");
	%>

	按普通手段取值<br>
	<%= pageContext.getAttribute("name")%>
	<%= request.getAttribute("name")%>
	<%= session.getAttribute("name")%>
	<%= application.getAttribute("name")%>

	<br>使用EL表达式取出作用域中的值
	<br>
	${ pageScope.name }
	${ requestScope.name }
	${ sessionScope.name }
	${ applicationScope.name }
</body>
</html>


  1. 获取请求中的某个参数:param;使用示例:“${param.请求名}”
  2. 获取请求中的某个参数名的参数值:paramValues;使用示例:“${paramValues.请求名}”
  3. 获取请求中的请求头:header;使用示例:“${header.请求头名}”
  4. 获取请求中的请求头中的值:headerValues
  5. 获取Cookie:${cookie.Cookie的名字}
  6. 获取initParams变量:${initParams.名}
  7. 获取pageContext变量:${pageContext.名}
<!-- File Name: hello.jsp -->
<%@ page language="java" import="java.util.Enumeration" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>EL表达式</title>
</head>
<body>
	获取某个参数的请求名:${param.请求名 }	
	获取该个请求名对应的值:${paramValue.请求名 }
	
	<!-- 
		等价于Servlet或JSP中的:
		request.getParameter(请求名);
		request.getParameterValues(请求名);
	 -->
</body>
</html>

取出域中所存的数组

取出域中所存的数组
<%@ 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>
	<%
		String[] a = { "aa", "bb", "cc", "dd" };
		pageContext.setAttribute("array", a);
	%>

	使用EL表达式取出作用域中数组的值<br>
	${array[0] }, ${array[1] }, ${array[2] }, ${array[3] }
</body>
</html>


取出域中所存的集合

取出域中所存的集合

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

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		List list = new ArrayList();
		list.add("11");
		list.add("22");
		list.add("33");
		list.add("44");
		//pageContext.setAttribute("li", list);
		session.setAttribute("li", list);
	%>
	
	使用EL表达式取出作用域中集合的值<br>
	${li[0] } , ${li[1] },${li[2] },${li[7] }
</body>
</html>


取出域中Map集合的值

取出域中Map集合的值
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		Map map = new HashMap();
		map.put("name", "zhangsna");
		map.put("age",18);
		map.put("address","北京..");
		map.put("address.aa","深圳..");
		
		//pageContext.setAttribute("map", map);
		application.setAttribute("m", map);
	%>
	使用EL表达式取出作用域中Map的值
	<br>
	${applicationScope.m.name }, ${m.age }, ${m.address }, ${m["address.aa"] }
</body>
</html>

输出对象的值

EL实现输出对象的值
Student类文件:
package kyle;

public class Student {
	private String name1;
	private int age;
	public String getName() {
		return name1;
	}
	public void setName(String name) {
		this.name1 = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Student(String name, int age) {
		super();
		this.name1 = name;
		this.age = age;
	}
	public Student() {
		super();
	}
}

JSP文件:
<%@ page language="java" import="java.util.*,kyle.*"
	pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>从四个域中获取数据</title>
</head>
<body>
	<%
     	//准备对象
     	Student student = new Student("eric",20);
     	//放入域中
     	pageContext.setAttribute("student1",student); //保持参数的两个名字一致;
    %>

	<%--使用EL获取对象 --%>
	${student1.name} - ${student1.age }
	${student1 } //输出的是该类的toString()方法;
	<%--
       ${student1.name} 等价于(点意味着调用getXX()方法,而不是调用该类的属性;故要在Student类里面要对name实现getXx方法)
       <%=((Student)pageContext.findAttribute("student1")).getName()%>
    --%>
</body>
</html>

表达式的计算

EL表达式计算
<%@ page language="java" import="java.util.*,kyle.*"
	pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>EL表达式获取List的值</title>
</head>
<body>
	<%--1)算术表达式 +  -  *  / --%>
     ${10+5 }<br/>
     ${10*5 }<hr/>
     
    <%-- 2)比较运算 >  <  >=  <=  ==  !=  --%>
     ${10>5 }<br/>
     ${10<5 }<br/>
     ${10!=10 }<hr/>
    
    <%-- 3)逻辑运算 &&  ||  ! --%>
     ${true && false }<br/>
     ${true || false }<br/>
     ${!false }<br/>

    <%--4)判空  null 或 空字符串:  empty --%>
    <%
     //String name = "eric";
     //String name = null;
     String name = ""; //空字符串
     pageContext.setAttribute("name",name);
     %>
      
      判断null: ${name==null }<br/>
      判断空字符: ${name=="" }<br/>
     判空:${name==null || name=="" } //判断是否为空 或者 是否为null;
     另一种判空写法: ${empty name } //等价于上一种写法
</body>
</html>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值