美文网首页
JSTL1.2学习总结

JSTL1.2学习总结

作者: zheting | 来源:发表于2018-01-10 23:18 被阅读38次

1.0 JSTL的下载

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上。

2.0 搭建开发环境

  1. Dependencies provided by a JSP 2.1 container:

    • Java 1.5 or later

    • Servlet 2.5 or later

    • JSP 2.1 or later

  2. Additional dependencies

    • The XML tag library requires Apache Xalan 2.7.1 or later
  3. Add the following JARfiles to the '/WEB-INF/lib' directory of your application:

    • taglibs-standard-spec-1.2.1.jar

    • taglibs-standard-impl-1.2.1.jar

    • taglibs-standard-jstlel-1.2.1.jar

    • xalan-2.7.1.jar

    • serializer-2.7.1.jar

3.0 引入对应的JSTL Tag Libraries

核心标签库的引入:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

image

4.0 核心标签库

4.1 <c:out>

image image

属性说明:

value:必须,值会输出到页面。可以是表达式或字符串。

escapeXml:非必须,值可以是true/false,默认是true。默认情况下以下字符原样输出,也就是不当html解析,如果设置为false就会转为相应的html实体。

image

default:非必须,设置默认值,当value的值是null时,输出。

示例:

<c:out value="aa"></c:out>
<c:out value="${aa}">bb</c:out>
<c:out value="${aa}" default="bb"/>
<c:out value="aa"/><!−−aa"/> <!−−{aa}不存在,返回的是null,又没有默认值,就输出一个空字符串-->
<c:out value="<a href="#">aa</a>" default="bb"/>
<c:out value="<a href="#">aa</a>" escapeXml="false" default="bb"/>

4.2 <c:set>

image

(1). 给page/request/session/application内置对象的属性赋值

<a href="page.jsp?usernaem=liSi">set标签测试</a>

page.jsp

<c:out value="${param.usernaem}"/>

<c:set var="usernaem" value="张三" scope="request"/> <!— 给在request范围内的变量usernaem赋一个新值张三-->

<c:out value="${usernaem}"/> <!— 输出张三 -->

说明:如果var属性的值在request范围内存在,那么会在request对象中创建这个属性,并赋值。

<c:set var="aa" value="bb" scope="request"/>

<%=request.getAttribute("aa") %> <!— 输出 bb -->

<c:out value="${aa}"/> <!— 输出 bb -->

(2). 给page/request/session/application内置对象的属性赋值,与 1) 的区别把value属性的值放在标签中。

<c:set var="aa" scope="request"/>bb</c:set>

<%=request.getAttribute("aa") %> <!— 输出 bb -->

<c:out value="${aa}"/> <!— 输出 bb -->

(3). 给javaBean属性赋值

引入类:

<%@ page import="com.zheting.it.vo."* %>

实例化对象:

<% Person person = new Person(); %>

修改对象的值:

<c:set property="age" target="<%= person %>" value="22"/>

<c:out value="<%= person.getAge() %>"/>

(4). 给javaBean属性赋值

引入类:

<%@ page import="com.zheting.it.vo."* %>

实例化对象:

<%

Person person = new Person();

pageContext.setAttribute("kk", person);

%>

修改对象的值:

<c:set property="age" target="${kk}" value="22"/>

<c:out value="${kk.age}"/> <!— 输出 22 -->

(5). 给javaBean属性赋值

<jsp:useBean id="tt" class="com.zheting.it.vo.Person" scope="page" />

<c:set property="age" target="${tt}" value="11"/>

<c:out value="${tt.age}"/> <!— 输出 11 -->

说明:value 属性的值可以写在标签体中。

4.3 <c:remove>

4.4 <c:catch>

4.5 <c:if>

var属性用来存储test属性比较的结果,即true/false。

<c:set var="salary" scope="session" value="${2000*2}"/>

<c:if test="${salary > 2000}" var="ff">

<c:out value="${ff}"/> <!— true-->

语法一只是为了得到比较结果时使用,标签体中没有要执行的内容。

多个条件判断时,用and连接,注意返回false时不输出false,输出的是一个空字符串。

<c:if test="${salary > 2000 **and salary < 5000}" var="ff">

<c:out value="${ff}"/>

<%=pageContext.getAttribute("ff") %>

附:EL表达式中的操作符:

image

可以判断一个对象(如集合)或属性为null或空字符串””。

4.6 <c:choose>

4.7 <c:forEach>

<c:forEach>可以循环的对象:

<% 
        String[] arr = {"a","b","c","d","e","f"}; //数组
        pageContext.setAttribute("arr", arr);
        
        List list = new ArrayList(); //List
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        list.add("f");
        pageContext.setAttribute("list", list);
        
        Map map = new HashMap();
        map.put("a", "aa");
        map.put("b", "bb");
        map.put("c", "cc");
        map.put("d", "dd");
        map.put("e", "ee");
        map.put("f", "ff");
        pageContext.setAttribute("map", map);
        
     %>
     <c:forEach var="item" items="${arr}" >
           <c:out value="${item}"/>
       </c:forEach>
       <br/>
       <c:forEach var="item" items="${list}" >
           <c:out value="${item}"/>
       </c:forEach>
       <br/>
       <c:forEach var="item" items="${map}" >
           <c:out value="${item.key}"/>
           <c:out value="${item.value}"/>
           <c:out value="${item}"/>
       </c:forEach>
       <br/>
       <c:forEach var="i" begin="1" end="100" step="5">
          <c:out value="${i}"/>
    </c:forEach>

运行结果:

image

只输出偶数:

<c:forEach var="i" begin="1" end="100" varStatus="status">

           <c:if test="${status.count%2==0}">

                <c:out value="${i}"/>

           </c:if>

</c:forEach>

运行结果:

varStatus属性详细介绍:

varStatus属性是实现了接口:javax.servlet.jsp.jstl.core.LoopTagStatus

c:forEach varStatus属性

current当前这次迭代的(集合中的)项
index当前这次迭代从 0 开始的迭代索引
count当前这次迭代从 1 开始的迭代计数
first用来表明当前这轮迭代是否为第一次迭代的标志
last用来表明当前这轮迭代是否为最后一次迭代的标志

4.8 <c:forTokens>

这个标签的作用就是把字符串按照指定的分隔符拆分,并循环。

<c:forTokens items="0aa,1bb,2cc,3dd,4ee,5ff,6gg,7kk,8mm,9nn,10zz" delims="," var="item" begin="2" end="9" varStatus="status">

            <c:if test="${status.count%2==0}">

                  <c:out value="${item}"/>

            </c:if>

</c:forTokens>

运行结果:

items属性值得字符串,用delims属性值”,”分割,从索引2开始,到索引9(包括)结束,varStrtus的属性值中记录循环状态信息,其count属性是从1开始计数的,var属性值存储着当前循环得到的那个值。

5.0 格式化标签库

5.1 <fmt:setLocale> 设置local信息

<fmt:setLocale value="zh_CN" />

<fmt:setLocale value="zh-CN" />

<fmt:setLocale value="${header['accept-language']}" />

5.2 <fmt:setBundle>绑定资源文件

<fmt:setBundle basename="com.zheting.it.resources.MessageResources"/>

5.3 <fmt:message>读取资源文件

<fmt:message key="loginForm.uname"/>

相关文章

  • JSTL1.2学习总结

    1.0 JSTL的下载 JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完...

  • jstl 使用踩坑

    1.前言 近期接触到公司一个jsp项目,用到了jstl1.2,着实踩了一把坑,在这简单记录一下排雷经过。 2.js...

  • kafka学习系列

    Kafka学习总结(一)——Kafka简介 Kafka学习总结(二)——Kafka设计原理 Kafka学习总结(三...

  • 习惯

    好的学习习惯,才能有效的学习,每天有计划的去学习,每天都要有总结,总结做过的事情,总结学到的东西,总结学习的方法,...

  • 要做就做第一名

    前几天刚学会了一个学习的公式:体验→感受→分享→总结。 生活要学会总结,总结是最好的学习,可以说没有总结的学习不叫...

  • GNU Make / Makefile 学习资料

    GNU Make学习总结(一)GNU Make学习总结(二)这篇学习总结,从一个简单的小例子开始,逐步加深,来讲解...

  • java基础参考资料

    JavaWeb学习总结(一)——JavaWeb开发入门 JavaWeb学习总结(二)——Tomcat服务器学习和使...

  • 2018年2月计划

    1. 课程学习,以及总结笔记 《关系课程》学习50节,总结笔记。 《中国史纲》学习50节,总结4篇笔记。 《pyt...

  • 跟着麦子学英语(一)

    学习,总结,在学习! 这也许就是学习的过程吧!学习起来了,总结经验,然后推到,在重新开始学习! ...

  • 《Thinking in UML》学习总结

    《Thinking in UML》学习总结 @(总结)[思考|学习|记录] @[toc] 简要 最近看完了这本书,...

网友评论

      本文标题:JSTL1.2学习总结

      本文链接:https://www.haomeiwen.com/subject/ambanxtx.html