1. 概念
Expression Language 表达式语言,替代 JSP ⻚面中数据访问时的复杂编码,可以非常便捷地取出域对 象(pageContext、request、session、application)中保存的数据,前提是一定要先 setAttribute, EL 就相当于在简化 getAttribute
2.使用
- ${变量名} 变量名就是 setAttribute 对应的 key 值。
- ${user[“id”]}
2.1 EL 对于 4 种域对象的默认查找顺序
pageContext ---->request---->session---->application
按照上述的顺序进行查找,找到立即返回,在 application 中也无法找到,则返回 null
2.2 指定作用域进行查找
pageContext:${pageScope.name}
request:${requestScope.name}
session:${sessionScope.name}
application:${applicationScope.name}
2.3 例子
<%
// // // //
pageContext.setAttribute("name","page"); request.setAttribute("name","request"); session.setAttribute("name","session"); application.setAttribute("name","application");
User user = new User(1,"张三",86.5,new Address(1,"小寨")); System.out.println(user.toString()); pageContext.setAttribute("user",user);
%>
<table> <tr>
</tr> <tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.score}</td>
<td>${user.address}</td>
</tr>
</table>
3. EL 执行表达式
${num1&&num2}
&& || ! < > <= <= ==
&& and
|| or
! not
== eq
!= ne
< lt
> gt
<= le
>= ge
>empty 变量为 null,⻓度为0的String,size为0的集合
4.例子
web项目架构
Address.java
package cc.insistor.entity;
public class Address {
private int id;
private String value;
public Address() {
}
public Address(int id,String value){
this.id=id;
this.value=value;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return "Address{" +
"id=" + id +
", value='" + value + '\'' +
'}';
}
}
User.java
package cc.insistor.entity;
import javax.jws.soap.SOAPBinding;
public class User {
private int id;
private String name;
private double score;
private Address address;
public User() {
}
public User(int id,String name,double score,Address address){
this.id=id;
this.name=name;
this.score=score;
this.address=address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", score=" + score +
", address=" + address +
'}';
}
}
MyServlet.java
package cc.insistor.servlet;
import cc.insistor.entity.Address;
import cc.insistor.entity.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet("/user")
public class Myservlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List<User> list = new ArrayList<>();
list.add(new User(1,"zs",10.1,new Address(1,"杭州")));
list.add(new User(2,"ls",20.2,new Address(2,"安徽")));
list.add(new User(3,"ww",30.3,new Address(3,"蚌埠")));
req.setAttribute("list",list);
req.getRequestDispatcher("index.jsp").forward(req,resp);
}
}
index.jsp
<%@ page import="cc.insistor.entity.User" %>
<%@ page import="java.util.List" %>
<%--
Created by IntelliJ IDEA.
User: cc
Date: 2020/8/21
Time: 11:24 上午
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>cc</title>
</head>
<body>
${requestScope.list}
${requestScope.list[0].id}
<table>
<tr>
<td>编号</td>
<td>姓名</td>
<td>分数</td>
<td>地址</td>
</tr>
<%
List<User> list = (List<User>) request.getAttribute("list");
for(User user:list){
request.setAttribute("user",user);
%>
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.score}</td>
<td>${user.address}</td>
</tr>
<%
}
%>
</table>
</body>
</html>