el表达式的作用
jsp与EL的区别:
区别 | JSP表达式 | EL表达式 |
---|---|---|
语法 | <%= 变量或表达式 %> | ${变量或表达式} |
输出哪里的值 | Java中脚本变量值 | 作用域中值,任何一个作用域都可以 |
案例:使用JSP和EL取出作用域中的值
分别使用JSP代码和EL从作用域中取数据
从指定的作用域中获取数据
什么是页面域:
- 对象名:pageContext
- 范围:只在一个页面起作用
- 作用域大小比较: 页面域pageContext < 请求域request < 会话域session < 上下文域 application
- 底层数据结构:都是Map结构,都有三个方法:setAttribute() getAttribute() removeAttribute()
四个与页面域有关的方法:
示例:取出不同作用域中的值
效果
代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>四个作用域</title>
</head>
<body>
<%
//页面域
pageContext.setAttribute("name","法海");
//请求域
request.setAttribute("name","许仙");
//会话域
session.setAttribute("name","白素贞");
//上下文域
application.setAttribute("name","小青");
%>
<h2>JSP脚本变量输出</h2>
<%
//删除所有域中同名的键
//pageContext.removeAttribute("name");
//删除其中一个域,指定常量:PAGE_SCOPE页面域
//pageContext.removeAttribute("name", PageContext.PAGE_SCOPE);
%>
页面域: <%=pageContext.getAttribute("name")%><br/>
请求域: <%=request.getAttribute("name")%><br/>
会话域: <%=session.getAttribute("name")%><br/>
上下文域: <%=application.getAttribute("name")%><br/>
自动查找: <%=pageContext.findAttribute("name")%> <br/>
<h2>使用EL输出</h2>
<%--点号后面是键的名字--%>
页面域:${pageScope.name}<br/>
请求域:${requestScope.name}<br/>
会话域:${sessionScope.name}<br/>
上下文域:${applicationScope.name}<br/>
自动查找:${name}
</body>
</html>
在EL中从四个域中取出变量值写法,四个作用域底层都是Map结构
作用域 | EL的写法 |
---|---|
页面域 | ${pageScope.key} |
请求域 | ${requestScope.key} |
会话域 | ${sessionScope.key} |
上下文域 | ${applicationScope.key} |
自动查找 | ${key} |
使用EL取出不同数据类型的值
目标
使用EL,分别从JavaBean,Map,集合List,数组中取出它们的值
效果
代码
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="com.itheima.entity.Student" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>EL取不同数据类型的值</title>
</head>
<body>
<h2>得到JavaBean中的属性值</h2>
<%
Student student = new Student(100,"猪八戒",true,59);
//把学生放在页面域
pageContext.setAttribute("stu", student);
%>
<%--可以使用三元运算--%>
${stu.name} ${stu.gender?"男":"女"}
<hr>
<h2>得到List集合中的值</h2>
<%
List<String> names = new ArrayList<>();
names.add("孙悟空");
names.add("猪八戒");
names.add("包青天");
//放请求域
request.setAttribute("names", names);
%>
<%--通过索引(下标)来取--%>
${names[0]} ${names[1]} ${names[5]}
<hr>
<h2>得到数组中的值</h2>
<%
int[] nums = {101,35,20,67};
pageContext.setAttribute("nums",nums);
%>