EL表达式

EL表达式

可以进行servlet到JSP之间数据的流转。让jsp书写起来更加的方便,简化在jsp中获取作用域或者请求数据的写法。也会搭配jstl一起使用。

与传统方式获取作用域数据比较:

EL:不需要导包,不需要强转,代码简洁

使用EL表达式获取作用域数据

注意:

获取的是pageContext、request、session、application四个对象中的数据,其他数据不理会,找到了就返回,找不到什么也不做。
 

语法:

${表达式}

表达式:

1、获取请求数据:

request对象存储请求数据:param.键名     (返回值)

request对象存储请求数据:paramvalues.键名 (返回的是数组)

2、通过setAttribute方法存储到作用域对象中的数据

${键名}  返回键名所对应的值

注意:

(1)如果存储的是普通字符串则直接返回

(2)如果存储的是对象,则返回的是对象

3、获取对象中的数据:

普通对象:${键名.属性名.属性名......}

集合对象:

       list集合:${键名[角标]}

       map集合:${键名.map集合存储的键名}

servlet:

package El;

import com.pojo.Address;
import com.pojo.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;
import java.util.List;
import java.util.Map;

@WebServlet("/El")
public class ELServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        String uname=req.getParameter("uname");
        String uage=req.getParameter("uage");
        //使用request作用域进行数据流转
            //普通字符串
            req.setAttribute("str","今天又出太阳了,hiahia");
            //对象类型
            User u = new User(1, "lyr", "吃", new Address("河南","商丘", "睢阳区"));
            req.setAttribute("user",u);
            //集合类型
                //List集合
                    //存储普通字符
                    List<String> list = new ArrayList<>();
                    list.add("张三");
                    list.add("李四");
                    list.add("赵四");
                    //存储对象
                    User u2 = new User(2, "孔鑫" ,"吃了睡", new Address("河南","周口","淮阳"));
                    List<User> list2 = new ArrayList<User>();
                    list2.add(u2);
                    req.setAttribute("list",list);
                    req.setAttribute("list2",list2);
                //Map集合
                    //存储普通字符
                    Map<String,String> map = new HashMap<String,String>();
                    map.put("a","郑州");
                    map.put("b","武汉");
                    map.put("c","商丘");
                    req.setAttribute("map",map);
                    //存储对象
                    Map<String ,User> map2 = new HashMap<String,User>();
                    map2.put("a1",new User(3,"老妹儿","皮",new Address("河南","商丘", "睢阳区")));
                    req.setAttribute("map2",map2);
        //请求转发
        req.getRequestDispatcher("/el.jsp").forward(req,resp);
        return;
    }
}

jsp:

<%--
  Created by IntelliJ IDEA.
  User: ASUS
  Date: 2020/2/17
  Time: 11:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>EL进行数据获取</title>
    </head>
    <body>
        <b>${param.uname}</b></br>
        <b>${str}</b></br>
        <b>${user.addr.town}</b></br>
        <b>${list[2]}</b></br>
        <b>${list2[0].addr.pri}</b></br>
        <b>${map.c}</b></br>
        <b>${map2.a1.uname}</b></br>
    </body>
</html>

 

作用域查找顺序

1、默认查找顺序:

pageContext->request->session->application

注意:

每次查找都是从小到大进行查找,找到了就获取,不会继续找下去。

2、指定查找:

${pageScope.键名}

${requestScope.键名}

${sessionScope.键名}

${applicationScope.键名}

 

EL表达式的逻辑运算:

1、${逻辑表达式}:&&  ||  !

2、${算数表达式}:+,-,*,/ , 三目运算

注意:+表示加法运算,不表示字符连接。

例:${1+3}  ${3-1}  ${2*3}  ${4/2}

3、${关系表达式}:>,<,>=,==,!=

 

 

EL空制判断:

${empty 键名}

作用:判断键名对象的值是否存有数据

 

EL获取请求头数据和Cookie数据:

1、请求头数据:

${header}:返回所有的请求头数据

${header["键名"]}:返回指定键名的请求头数据

${headerValues["键名"]}:返回指定的键名(同键不同值)的值的数组

2、获取Cookie数据:

${cookie}:返回存储了所有Cookie对象的map集合

${cookie.键名}:返回指定的cookie对象

${cookie.键名.name}:返回指定的Cookie对象存储的数据的键名

${cookie.键名.value}:返回指定的Cookie对象存储的数据的值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值