💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # EL简介 * EL是jsp内置的表达式语言,用以访问页面的上下文及不同作用域中的对象,取得对象属性的值,或执行简单的运算或判断操作.EL在得到某个数据时,会自动进行数据类型的转换 * EL表达式用于代替jsp表达式(<%= %>)在页面中做输出操作 * EL表达式仅仅用来读取数据,而不能对数据进行修改 * 使用EL表达式输出数据时,如果有则输出数据,**如果为null则什么也不输出** 写法: ~~~ ${el表达式} ~~~ 注意: 如果jsp默认支持el表达式.如果要忽略 1. 设置jsp中page指定中: `isELIgnored="true"`,忽略当前jsp页面中所有的el表达式 2. `\${表达式}`: 忽略当前这个el表达式 # EL从域中取出数据 jsp脚本:`<%=request.getAttribute(name) %>` EL表达式替代上面的脚本:`${requestScope.name}` # EL获得四大域中的数据 EL最主要的作用是获得四大域中的数据,格式`${EL表达式}` * EL获得pageContext域中的值:`${pageScope.key};` * EL获得request域中的值:`${requestScope.key};` * EL获得session域中的值:`${sessionScope.key};` * EL获得application域中的值:`${applicationScope.key};` * EL从四个域中获得某个值: `${key};` ---同样是依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找,从小到大查找 1)获得普通字符串 2)获得User对象的值 3)获得`List<User>`的值 ~~~ <!-- 模拟域中的数据 --> <% pageContext.setAttribute("company", "iii"); //存储字符串 request.setAttribute("company", "111"); //存储一个对象 User user = new User(); user.setId(1); user.setName("zhangsan"); user.setPassword("123"); session.setAttribute("user", user); //存储一个集合 List<User> list = new ArrayList<User>(); User user1 = new User(); user1.setId(2); user1.setName("lisi"); user1.setPassword("123"); list.add(user1); User user2 = new User(); user2.setId(3); user2.setName("wangwu"); user2.setPassword("123"); list.add(user2); application.setAttribute("list", list); request.setAttribute("user", user); %> <!-- 脚本是取出域中的值 --> <%=request.getAttribute("company") %> <hr/> <!-- 使用EL表达式获得域中的值 --> ${requestScope.company } <!-- 这边.user是个对象,获取属性不需要getName, 对象属性名 相当于根据属性名查找对应的get方法得到返回属性值 --> ${requestScope.user.name } <!-- 这边是简写list[1]取的是第二个元素 --> ${applicationScope.list[1].name} <!-- 使用el表达式 全域查找 --> ${company } ${user.name } ${list[1].name} <!-- el可以执行表达式运算 --> ${1+1 } ${1==1?true:false } <!-- empty 判定某个对象是否是null 是null返回true --> ${empty list} ~~~ **map的值获取** ~~~ <% Map map = new HashMap(); map.put("t1", "val-t1"); map.put("t2-1", "val-t2"); pageContext.setAttribute("map", map); %> <h3>使用EL在域中查询map的值</h3> ${map.t1} <h4>如果key中有特殊字符用['']</h4> ${map['t2-1'] } ~~~ **list的值获取** ~~~ <% List list = new ArrayList(); list.add("hehe"); list.add("11"); list.add("22"); request.setAttribute("list", list); %> ${list[1]} ~~~ **获取请求参数的值** ~~~ ${param.name} ~~~ # EL的内置对象11个 ~~~ pageScope, requestScope, sessionScope, applicationScope ---- 获取JSP中域中的数据 Map<String, Object> ~~~ ~~~ param, paramValues - 接收参数. 相当于request.getParameter() request.getParameterValues() param --- Map<String, String> paramValues --- Map<String, String[]> ~~~ ~~~ header, headerValues - 获取请求头信息 相当于request.getHeader(name) header --- Map<String, String> headerValues --- Map<String, String[]> ~~~ ~~~ initParam - 获取全局初始化参数 相当于this.getServletContext().getInitParameter(name) ~~~ ~~~ cookie - WEB开发中cookie 相当于request.getCookies()---cookie.getName()---cookie.getValue() Map<String, Cookie> ~~~ ~~~ pageContext - WEB开发中的pageContext. pageContext获得其他八大对象 ~~~ ~~~ ${pageContext.request.contextPath} 相当于获得WEB应用的名称 ~~~ # EL执行表达式 empty: 认为空字符串和长度为0的集合都是空,运算结果就是true 例如: ~~~ ${1+1} ${empty user} ${user==null?true:false} ~~~