Javaweb EL表达式

什么是EL表达式?EL表达式的作用?

*  EL表达式的全称是:Expression Language。是表达式语言
*  作用?EL表达式主要是代替Jsp页面中的表达式脚本在jsp页面中进行数据的输出
*   输出语句比jsp简洁
*   格式:${} 输出null值的时候是空串
*   主要在jsp中输出数据
*   主要是输出域对象中的数据
*   当四个域中都有相同的key的数据的时候,EL表达式会按照4个域的从小到大的顺序去进行搜索,找到
*   就输出。
*   EL特点:
*   El在找属性的时候不是直接找你的javaBean中有没有这个变量,
*   而是找你的javaBean中有没有这个变量的get方法
*   如果有,就算没有定义过变量也可以输出,如果没有
*   就算你定义了变量,输出的时候依然报错

*   EL中关系运算:

*   ${== 或 eq}
*   ${< 或 lt}
*   ${> 或 gt}
*   ${>= 或 ge}
*   ${<= 或 le}
*   EL中逻辑运算符 (与mysql相似)
*   ${12==12 && 12>12} 或者 ${12==12 and 12>12}
*   ${12==12 || 12>11} 或者 ${12==12 or 12>11}
*   ${! ture} 或者 {not ture}
*   EL中运算符
*   ${12+12}
*   ${12-12}
*   ${18/12} or ${18 div 12}
*   ${18%12} or ${18 mod 12}

*   EL中的empty运算

*   可以判断一个数据是否为空,如果为空输出true,不为空输出false
*    以下几种情况为空:
*    1.只为null值的时候为空
*    2.值为空串的时候,为空
*    3.值是Object类型数组,长度为0的时候
*    4.list,map集合元素个数为0的时候为空
*    格式: ${empty emptyNull }

 

*   EL中的三元表达式

*   格式 ${12!=12?值1:值2}

*   EL中.运算和[]运算

*   .运算可以输出Bean对象中某个属性的值
*   []括号运算可以输出有序集合中某个元素的值
*   并且[]中括号运算,还可以输出map集合中key里含有特殊字符(包含上面运算符)的key的值                         ${headerValues["User-Agent"][0]}<br>
*   map.put("a.a.a","b");
*   map.put("a+a+a","b");
*   map.put("a>a>a","b");
*   map.put("a||a||a","b");
*   ${map['a.a.a']} 单双引号都可以
*

 

*   EL表达式中的11个隐含对象

*   是EL表达式中自己定义的,可以直接使用
*
*       变量                          类型                  作用
*   pageContext                 PageContextlmpl     可以获得jsp中的九大内置对象
*   pageScope                   Map<String,Object>  可以获取pageContext域中的数据
*   requestScope                Map<String,Object>  可以获取request域中的数据
*   sessionScope                Map<String,Object>  可以获取sessiong域中的数据
*   applicationScope            Map<String,Object>  可以获取servletContext域中的数据
*   param                       Map<String,String>  可以获取请求参数的值
*   pramValues                  Map<String,String[]>可以获取请求参数的值,获取多个值的时候使用
*   header                      Map<String,String>  可以获得请求头的信息
*   headerValuers               Map<String,String>  可以获得请求头的信息,获取多个值的时候使用
*   cookie                      Map<String,cookie>  获取当前请求的cookie信息
*   initParam                   Map<String,String>  可以获取在web.xml中配置的<context-param>上下文参数
*
*   EL获取四个特定域中的属性
*   pageScope           ========    pageContext域
*   requestScope        ========    request域
*   sessionScope        ========    sessiong域
*   applicationScope    ========   servletContext域
*   <%
       pageContext.setAttribute("key1","pageContext");
       request.setAttribute("key1","request");
       session.setAttribute("key1","session");
       application.setAttribute("key1","application");
   %>
${key1} 如果你这样只能一直得到最小的 <br>
但是如果我们想要获得指定的 你就可以使用相应域的scope对象
${requestScope.key1} <br> 其他域也是一样
<br>

*   pageContext对象的使用<br>

*   1.协议: request.getScheme() 它可以获取请求的协议<br>
*   2.服务器ip:request.getServerName()获取火球的服务器ip或域名<br>
*   3.服务器端口:request.getServerPort()获取请求的服务器端口号<br>
*   4.获取工程路径:request.getContextPath()获取当前工程路径<br>
*   5.获取请求方法:request.getMethod()获取请求的方式<br>
*   6.获取客户端ip地址:request.getRemoteHost()获取客户端的ip地址<br>
*   7.获取会话的id编号:session.getId()获取会话的唯一标识<br>

1.<br>
    jsp表达式脚本格式:<%=request.getScheme()%><br>
     EL中:${pageContext.request.scheme}<br>
2.<br>
    jsp表达式脚本格式:<%=request.getServerName()%><br>
     EL中:${pageContext.request.serverName}<br>
3.<br>
    jsp表达式脚本格式:<%=request.getServerPort()%><br>
     EL中:${pageContext.request.serverPort}<br>
4.<br>
    jsp表达式脚本格式:<%=request.getContextPath()%><br>
     EL中:${pageContext.request.contextPath}<br>
5.<br>
    jsp表达式脚本格式:<%=request.getMethod()%><br>
     EL中:${pageContext.request.method}<br>
6.<br>
    jsp表达式脚本格式:<%=request.getRemoteHost()%><br>
     EL中:${pageContext.request.remoteHost}<br>
7.<br>
    jsp表达式脚本格式:<%=session.getId()%><br>
     EL中:${pageContext.session.id}<br>
      <%
          Person person = new Person();
          person.setName("华哥好帅!");
          person.setPhones(new String[]{"1866666","12333333","1366666"});
          List<String> cities = new ArrayList<String>();
          cities.add("北京");
          cities.add("上海");
          cities.add("深圳");
          cities.add("东莞");
          person.setCities(cities);
          Map<String, Object> map = new HashMap<>();
          map.put("key1","value1");
          map.put("key2","value21");
          map.put("key3","value3");
          person.setMap(map);
          pageContext.setAttribute("person",person);
      %>
输出Person Bean: ${person} <br>
输出Person name: ${person.name}<br>
输出Person Phones中的元素: ${person.phones[0]}<br>
输出Person Phones中的元素: ${person.phones[1]}<br>
输出Person Phones中的元素: ${person.phones[2]}<br>
输出Citys集合中的元素值:${person.cities}<br>
输出Citys集合中的元素值的某一个: ${person.cities[0]}<br>
输出Map 集合中的元素值:${person.map}<br>
输出Map 集合中的元素值的某一个:${person.map.key1}<br>
输出Map 集合中的元素值的某一个:${person.map.key2}<br>
输出Map 集合中的元素值的某一个:${person.map.key3}<br>
 ${person.age}<br>

<%--*   1.param                       Map<String,String>  可以获取请求参数的值--%>
<%--*   2.pramValues                  Map<String,String[]>可以获取请求参数的值,获取多个值的时候使用--%>
<%--*   3.header                      Map<String,String>  可以获得请求头的信息--%>
<%--*   4.headerValuers               Map<String,String>  可以获得请求头的信息,获取多个值的时候使用--%>
<%--*   5.cookie                      Map<String,cookie>  获取当前请求的cookie信息--%>
<%--*   6.initParam                   Map<String,String>  可以获取在web.xml中配置的<context-param>上下文参数--%>
<%-- 若你要特定的属性值 param.参数名  比如要username就可以param.username --%>

输出请求参数username的值:${param.username}<br>
输出请求参数password的值:${param.password}<br>
当你有多个值 比如selected下拉框  多选框时可以用下面这个
输出请求参数username数组中的值:${paramValues.username[0]}<br>
${paramValues.password[0]}<br>
<%--*   header                      Map<String,String>  可以获得请求头的信息<br>--%>
<%--*   headerValuers               Map<String,String>  可以获得请求头的信息,获取多个值的时候使用<br>--%>
输出请求头【User-Agent】的值:${header["User-Agent"]}<br>
${header.connection}<br>
此时得到这个值的地址${headerValues["User-Agent"]}<br>
${headerValues["User-Agent"][0]}<br>
获取Cookie的名称Cookie:${cookie.JSESSIONID.name}<br>
获取Cookie的值: cookie:${cookie.JSESSIONID.value}<br>
${initParam}<br>
${initParam.user1}<br>
${initParam.user2}<br>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hyong~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值