El表达的那些事儿

EL

1. 获取域中的数据:
   ${pageScope|requestScope|sessionScope|applicationScope.属性名}
   或
   ${属性名}: 依次从 pageContext,requset,session,application查找指定属性,若查找到返回值,结束该次查找若查找不到,返回""
   若属性名中出现了"."|"+"|"-" 等特殊符号,需要使用 scope 获取
   例:
      request.setAttribute("arr.age", 20);
      ${requestScope["arr.age"] }

   获取复杂数据:
       获取数组中的数据
         ${属性名[index]}
       例:
         request.setAttribute("arr", new String[] {"aa","bb","cc"});
         ${arr[0] }
    
       获取 list 中的数据
         ${属性名[index]}
       例:
         List list=new ArrayList();
         list.add("aaa");
         list.add("bbb");
         request.setAttribute("list", list);

         ${list[0] }

       获取 map 中的数据
         ${属性名.键名(key)}
       例:
        Map map=new HashMap();
        map.put("name", "zhc");
        map.put("age", 18);
        request.setAttribute("map", map);

        ${map.name }

       获取当前 web 应用的根目录:
          ${pageContext.request.contextPath}


1. EL 都是利用反射调用完成的,直接写需要调用的属性名称 EL 自动调用相应的 getter() 方法
 
2. 在整个 JSTL 里面只有两个重要标签:

1. 判断标签,判断指定的条件是否满足,如果满足了,则执行;

<c:if test="判断条件,利用EL 完成" var="保存判断结果的属性名称" scope="设置的保存范围"></c:if>



   <c:if test="${param.zhc=='zhc' }" var="resa">
   
      <h1>判断条件成立,输出欢迎信息!</h1>
      
   </c:if>
   
   <c:if test="${param.zhc!='zhc' }" var="resb">
   
     <h1>判断条件不成立!</h1>
   
   </c:if>
   
   <h2>判断结果resa:${resa }</h2>
   
   <h2>判断结果resb:${resb }</h2>
   
   

http://localhost:8080/ELTest/test.jsp?zhc=zhc

判断条件成立,输出欢迎信息!

判断结果resa:true

判断结果resb:false



2. 迭代输出标签: <c:forEach>,可以输出 List 或 Map 集合

<c:forEach items="集合数据" var="每次取出的对象属性名称" begin="开始索引" end="结束索引" step="步长"></c:forEach>


3. 这两个标签中的 var的名称 可以自定义

<c:forEach items="${allPers }" var="a">
                <tr>
                    <td>${a.id }</td>
                    <td>${a.name }</td>
                    <td>${a.gender }</td>
                </tr>
</c:forEach>

<c:forEach items="${allPers }" var="per">
                <tr>
                    <td>${per.id }</td>
                    <td>${per.name }</td>
                    <td>${per.gender }</td>
                </tr>
</c:forEach>

这两个标签的输出结果是一样的,但是 var 自定义的最好有意义



2)与输入有关的隐含对象
 与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。
 例如我们要取得用户的请求参数时,可以利用下列方法:
      request.getParameter(String name)
      request.getParameterValues(String name)
 在EL中则可以使用param和paramValues两者来取得数据。
      ${param.name}
      ${paramValues.name}

例:

<a href="${pageContext.request.contextPath }/product?method=findByPage&cid=${param.cid }&currPage=${pb.currPage-1}" </a>

String cid = req.getParameter("cid");
int currPage = Integer.parseInt(req.getParameter("currPage"))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值