JSP标签技术

  JSTL标签库是为了JavaWeb开发人员提供的一套标准通用的标签库,JSTL标签库和EL配合使用取代JSP中大部分的java代码

  在使用JSTL标签库提供的标签之前,必须在JSP中通过taglib指令引入JSTL标签库。

  1.在JSP页面中写入大量的java代码会导致JSP页面中html代码和java代码混杂在一起,会造成页面非常混乱,难以维护

    先导入JSTL的jar包,通过taglib引入JSTL标签库

  

  2.于是在JSP的2.0版本中,sun提出了JSP标签技术,推荐使用标签来道题JSP页面中的java代码,并且推荐,JSP2.0以后不要再JSP页面中出现一行java代码。

  

  3.EL表达式

    EL表达式在JSP中可以非常方便的获取数据,可以代替JSP页面中的JSP表达式(<%=  %>)

    基本结构:${表达式}

    EL只能获取不能设置!!!

    EL只能获取不能遍历!!!

    EL表达式提供了如下功能:

      (1)EL可以获取常量、变量(必须存入域中)、表达式的值

<%
    String name="aaa";
    pageContext.setAttribute("name",name);
%>

${ name }

 

      (2)EL可以获取域中的数组或集合中的数据

      <c:forEach items="${list}" var="prod">
            <tr>
                <td><%
                List<Porduct> list = (List<Porduct>)request.getAttribute("list"); 
                Porduct po = list.get(0);
                out.write(String.valueOf(po.getId()));
                
                %>
                <%=po.getId()%>
                <% out.write("hello"); %>
                </td>
                <td>${prod.name }</td>
                <td>${prod.name }</td>
                <td>${prod.des }</td>
                <th>
                    <!-- <span onclick="del()">删除</span>
                    <div id="firstdiv"></div>
                    <span onclick="upd()">修改</span> -->
                    <a id="delProd" href="#">删除</a>|
                    <a id="updProd" href="#">修改</a>
                </th>
            </tr>
            </c:forEach>

 

EL从域中取数据,查找域的顺序为:

Page > Request > Session > Application

 

 

3.JSTL常用属性

  3.1 <c:set></c:set>   往四大作用域中添加域属性,或者修改四大作用域中已有的属性

  (1)往四大作用域中添加属性

<c:set var="name" value="张三丰"></c:set>

  (2)修改四大作用域中已有的属性

  如果重复添加相同的属性,值会发生覆盖。相当于修改  

<c:set var="name" value="张翠山"></c:set>

  (3)修改作用域中Map集合中的属性

  

<%
    Map map = new HashMap();
  map.put("name","阿凡达");
  map.put("gender","1");
%>
<c:set target="${map}" property="name" value="阿凡提"/>

${map.name}

 

  3.2 c_set标签属性总结:

  (1)var  指定存入域中属性的名称

  (2)value  指定存入域中属性的值

  (3)scope  指定将属性保存到哪一个域中

  (4)target  指定修改域中的哪一个集合

  (5)property  指定修改域中集合中哪一个属性

 

  3.3 <c:if></c:if>  构造if ... else ... 语句

  <c:if test="${3>5}>yes</c:if>

  <c:if test="${!(3>5)}>yes</c:if>

  

  3.4 <c:forEach></c:forEach>  对集合或者数组中的元素进行循环遍历或者是执行指定次数的循环

    标签属性总结:

    (1)items:  指定需要遍历的集合或数组

    (2)var:  指定用于接收遍历过程中的元素

    (3)begin  指定循环从哪开始

    (4)end  指定循环从哪结束

    (5)step  指定循环时的步长

    (6)varStatus="status"  返回一个表示循环状态的对象,该对象还具有如下属性:

      a)count:  表示当前遍历的元素是第几个

      b)first  表示当前遍历的元素是否为第一个

      c)last  表示当前遍历的元素是否为最后一个

      d)index  表示当前遍历的元素的索引《从零开始》

 

案例演示:

<!-- 修改map中的数据 -->
<% Map map = new HashMap(); 
    map.put("name", "laoli");
    map.put("gender", "1");
    request.setAttribute("map", map);
%>
${map.name }
${map.gender }
<br/>
<c:set target="${map }" property="name" value="laoqi"></c:set>
<c:set target="${map }" property="gender" value="laopo"></c:set>
${map.name }
${map.gender }
<br/>

<!-- if判断标签 -->
<c:if test="${123>112 }">yes</c:if>
<c:if test="${!(123>112) }">no</c:if>

 

 

 

 

 

 

 

posted @ 2019-08-25 21:24  我爱si搬砖  阅读(437)  评论(0编辑  收藏  举报