EL表达式
1.概念
Expression Language 表达式语言
2.作用:
1.替换和简化jsp页面中java代码的编写
2.向浏览器输出域对象中的变量值或表达式计算的结果
3.语法:
$(变量或者表达式)
4.注意项:
jsp默认支持el表达式。如果要忽略el表达式
设置jsp中的page指令:isELIgnored=“true”忽略当前jsp页面中所有的el表达式
5.使用
1)运算符:
1.算术运算符:+ - * /(div) %(mod)
2.比较运算符:> < >= <= == !=
3.逻辑运算符:&&(and) ||or !(not)
4.空运算符: empty
功能:用于判断字符串、集合、数组对象是否为null或者长度是否为零
$(empty list):判断字符串、集合、数组对象是否为null或者长度为0
$(not empty str):表示判断字符串、集合、数组对象是否不为null 并且 长度 > 0
<body> ${ 3 + 5} <%-- 输出 8 --%> <hr> ${ 5 > 7} <%-- 输出 false --%> <hr> ${ true && false} <%-- 输出 false --%> <hr> <% String str = null;//str = "" %> ${empty str} <%-- 输出 true --%> <hr> </body>
2)获取值
1.el表达式只能从域对象中获取值
2.语法:
1.$(域名.键名):从指定域中获取指定键的值
域名称:
1)pageScope -->pageContext
2)requestScope -->request
3)sessionScope -->session
4)applicationScope -->application(ServletContext)
例如:在request域中存储了name=张三
获取:$(requestScope.name)
2.${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
等价于pageContext.findAttribute("键名")方法
3.获取对象、List集合、Map集合的值
1)对象:${域名称.键名.属性名}
本质是会去调用对象的getter方法
2)List集合:${域名称.键名[索引]}
3)Map集合:
$ {域名称.键名.key名称} (注意:此方式键名不能以数字为开头)
$ {域名称.键名["key名称"]} (注意:此方式单引号或双引号都可以)
3)动态获取当前web目录
${pageContext.request.contextPath}
代码实现
定义一个User类
public class User { private Integer uid; private String username; private String password; public User() { } public User(Integer uid, String username, String password) { this.uid = uid; this.username = username; this.password = password; } public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "uid=" + uid + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
定义UserController类继承HttpServlet类
import com.qf.jopo.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.HashMap; @WebServlet("/usercontroller") public class UserController extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //web层 --> service层 --> dao层 //模拟数据库查询 //查询单个 User user = new User(1001, "张三", "123"); //查询所有 //List集合 ArrayList<User> list = new ArrayList<>(); list.add(new User(2001,"jack","123")); list.add(new User(2002,"rose","456")); list.add(new User(2003,"tom","789")); //Map集合 HashMap<String, User> map = new HashMap<>(); map.put("3001",new User(3001,"李四","123")); map.put("3002",new User(3002,"王五","123")); map.put("3003",new User(3003,"赵六","123")); //保存数据 req.setAttribute("user", user); req.setAttribute("list", list); req.setAttribute("map", map); //转发 req.getRequestDispatcher("/11.page.jsp").forward(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
定义转发目标jsp
<%-- Created by IntelliJ IDEA. User: yangl Date: 2021/5/14 Time: 9:53 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %><%-- isELIgnored = "false" 表示此jsp中可以使用el --%> <%-- 导入User包,不然无法调用User中的get方法 --%> <%@ page import="com.qf.jopo.User" %> <html> <head> <title>Title</title> </head> <body> <% String str1 = "pageContext.value"; String str2 = "request.value"; pageContext.setAttribute("msg",str1); request.setAttribute("msg",str2); %> <%--相当于findAttribute方法--%> <%--${msg}--%> <%--指定域取值--%> <%--${requestScope.msg}--%>
<%-- 相当于user.getUid() 等 --%> ${user.uid} -- ${user.username} -- ${user.password}
<%-- 相当于list[0].getUid() 等 --%> ${list[0].uid} -- ${list[0].username} --${list[0].password} <br> ${list[1].uid} -- ${list[1].username} --${list[1].password} <br> ${list[2].uid} -- ${list[2].username} --${list[2].password} <br> <hr>
<%-- 相当于map['3001'].getUid() 等 --%> ${map['3001'].uid} -- ${map['3001'].username} --${map['3001'].password} <br> ${map['3002'].uid} -- ${map['3002'].username} --${map['3002'].password} <br> ${map['3003'].uid} -- ${map['3003'].username} --${map['3003'].password} <br> </body> </html>

浙公网安备 33010602011771号