欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSTL核心标签库

程序员文章站 2024-01-26 15:47:28
...

JSTL核心标签库

  • JSTL 全名为 JavaServer Pages Standard Tag Library
  • JSTL需要的jre包!

JSTL核心标签库

在使用JSTL标签时,要导入标签库

<!-- jstl核心标签的导入 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>

out标签

标签主要用于显示数据内容

JSTL核心标签库

servlet进行转发person对象的数据

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();




        Person person = new Person("李四",99,"女");

        request.setAttribute("person", person);

        request.getRequestDispatcher("/jstl/jstlTest01.jsp").forward(request, response);

接收数据的jsp页面

     <h3>out标签</h3>
        获取requestScope的person的name属性的值:<c:out value="${requestScope.person.name }" ></c:out><br>
        <%--
            会对敏感的字符进行转译
            eg:<c:out value="${}" ></c:out> 其中的${}就是敏感的el表达式

              --%>  
        <c:out value="java" ></c:out><br> <%-- 相当于<%=java %> --%>



        <!--
            escapeXml 默认为true
            escapeXml="true"将value中的值以字符串的形式原封不动的显示出来。  
            escapeXml="flase" 将value中的值进行转译
        -->
        escapeXml="true": <c:out value="<a href='#'>点击我</a>" ></c:out><br>

        escapeXml="false": <c:out value="<a href='#'>点击我</a>" escapeXml="false"></c:out><br>


        <!--  
            default设置默认值
            当没有数据时显示默认值

        -->
        当没有数据时显示默认值:<c:out value="${pppp}"  default="000"></c:out><br>


显示结果:
JSTL核心标签库


set标签

JSTL核心标签库

  • var 欲存入的变量名称

  • value 存入域对象的值
  • scope 存在的作用域范围(page,request,session,application)
    <c:set var="name1" value="李四" scope="page"></c:set>
    //取出pahe域对象里面的name1变量的值
    name:<c:out value=" ${pageScope.name1} "></c:out>

JSTL核心标签库
*


<%
        Person person = new Person();
        person.setAge(25);

        request.setAttribute("person",person);
     %>
    <c:set var="age"  value="${requestScope.person.age }" scope="page"></c:set>
    <!-- 打印25 -->
    age:<c:out value="${pageScope.age }"></c:out>

    <!-- 将请求参数的值赋给 person.age,并将age修改为100-->
    <c:set target="${requestScope.person }" property="age" value="${param.age }" ></c:set><br />
    <!-- 打印100 -->
    age:${requestScope.age.age}<br>

remove标签

  • 移除域对象里面的属性

   <c:set var="date" value="1991-1-1" scope="session"></c:set>
 date:${sessionScope.date}<br>//打印1991-1-1
 <!--移除session域里面的 date对象  -->
 <c:remove var="date" scope="session"/>
 date:${sessionScope.date}<br>//打印空字符串

  • c:forEach 遍历

 <!-- 
             var 变量
             begin 起始值  
             end 结束值
             step 每次增长    
        -->
       <c:forEach var="i" begin="1" end="10" step="2">
            ${i }

       </c:forEach>

JSTL核心标签库


forEach标签

  • foreEach取List集合
<%

         List<Person> list = new ArrayList<Person>();

         list.add(new Person("AAA",15,"男"));
         list.add(new Person("BBB",15,"男"));
         list.add(new Person("CCC",15,"男"));
         list.add(new Person("DDD",15,"男"));
         list.add(new Person("EEE",15,"男"));

         pageContext.setAttribute("list", list);

    %>

  <c:forEach items="${list}" var="per" varStatus="status">
            name:<c:out value="${per.name}"></c:out><br>
            age:<c:out value="${per.age}"></c:out><br>
            gender:<c:out value="${per.sex }"></c:out>
            <%--  status.index当前成员的下标索引 --%>
            index:<c:out value="${status.index}"></c:out><br>
            <%--当前成员的数量status.count --%> 
            count:<c:out value="${status.count}"></c:out><br>
            <hr>

        <%--   status.first  是否是第一个 --%>
        <%--   status.last   是否是最后一个 --%>
       </c:forEach>

显示结果
JSTL核心标签库

  • forEach设置表格隔行变色
   <h3>表格隔行变色</h3>

       <table width="350px" border="1px">
            <tr>
                <td>姓名:</td>
            </tr>
            <c:forEach items="${list }" var="per" varStatus="status">
                    <tr  ${status.count %2 ==0 ? " bgcolor='#ccccfe'": ""} >
                        <td>${per.name}</td>
                    </tr>
            </c:forEach>

JSTL核心标签库

Map集合遍历

<%
        Map<String, Person> mapPerson = new HashMap<String, Person>();

        mapPerson.put("a", new Person("AAAAA", 11111));
        mapPerson.put("b", new Person("BBBBB", 22222));
        mapPerson.put("c", new Person("CCCCC", 33333));
        mapPerson.put("d", new Person("DDDDD", 44444));
        mapPerson.put("e", new Person("EEEEE", 55555));
        mapPerson.put("f", new Person("FFFFF", 66666));

        request.setAttribute("mapPerson", mapPerson);

    %>

    <c:forEach items="${requestScope.mapPerson}" var = "map">
        ${map.key } -- ${map.value.age } -- ${map.value.name }<br />

    </c:forEach>

if标签

JSTL核心标签库

    <c:if test="${2>1 }" var="k1" scope="page">
            ${k1 } ;
       </c:if>

打印结果
true


url标签

   <c:url var="add" value="http://www.baidu.com"></c:url>

       <a href="${add}">这是一个连接</a>

点击后跳转页面
JSTL核心标签库


param标签

重定向后携带参数

 <c:redirect url="getJstl.jsp">
            <c:param name="id" value="99"></c:param>
       </c:redirect>
//打印结果99
${param.id }

forTokens 相当于String里面的 split

    <!-- c:forTokens 相当于String里面的 split

        delims=","分割的字符
     -->
    <c:set var="str" value="a,b,c,d,e,f,g" scope="request"></c:set>
    <c:forTokens items="${requestScope.str}" delims="," var="s">

        ${s }<br/>
    </c:forTokens>

“/”解析,import解析

<%-- 
    这里的"/"代表的是当前游览器web站点的根目录
    response.sendRedirect("/index.jsp")

    这里的“/”代表的是当前web 应用下的根目录
    <c:redirect url="/index.jsp"></c:redirect> 
    --%>
    <!-- c:import url可以包含任何页面(导入其他页面) -->   
    <c:import url="http://www.baidu.com"></c:import>

c:url 产生一url地址,可以Cookie 是否可用来智能的进行URL重写,对GET请求的参数进行编码
可以把产生的URL存储在域对象的属性中
还可以使用C:param为 URL 添加参数。c:url会对参数进行自动转码
value 中的”/”代表当前的Web应用的根目录

    <c:url value="/index.jsp" var = "indexUrl" scope="page">
        <c:param name="name" value="url的参数"></c:param>
    </c:url>

    url: ${pageScope.indexUrl }

choose的使用:可以使用if…else if..else if()


    <c:choose>
        <c:when test="${param.age > 18 && param.age<35}">
        青年
        </c:when>
        <c:when test="${param.age > 35 && param.age<60}">
        中年
        </c:when>
        <c:when test="${param.age > 60}">
        老年
        </c:when>
        <c:otherwise>
            未成年     
        </c:otherwise>
    </c:choose>

format标签

导入标签

<%@taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
<fmt:formatDate value="<%=new Date() %>" pattern="yyyy年MM月dd日"/><br>
        <fmt:formatDate value="<%=new Date() %>" dateStyle="short"/><br>
        <fmt:formatDate value="<%=new Date() %>" dateStyle="long"/><br>
        <fmt:formatDate value="<%=new Date() %>" timeStyle="both"/><br>

显示结果:
JSTL核心标签库


formatNumber 格式化标签

    <h3>格式化</h3>
        <!-- type="currency 格式化为人民币 -->
        <fmt:formatNumber value="5000" type="currency"></fmt:formatNumber><br>
        <!-- currencySymbol="$" 设置货币符号为美元 -->
        <fmt:formatNumber value="5000" type="currency" currencySymbol="$"></fmt:formatNumber><br>
        <!-- type="percent"格式为百分号  -->
        <fmt:formatNumber value="5000" type="percent"></fmt:formatNumber><br>
        <!-- type="number" 格式化为数字 -->
        <fmt:formatNumber value="5000" type="number"></fmt:formatNumber><br>
        <!-- maxIntegerDigits 设置最大位数为    minIntegerDigits 最小位数为  当不足用0补足--><br>
        <fmt:formatNumber value="5000" maxIntegerDigits="4" minIntegerDigits="1" ></fmt:formatNumber><br>
        <fmt:formatNumber value="50" maxIntegerDigits="4" minIntegerDigits="3" ></fmt:formatNumber><br>

JSTL核心标签库

相关标签: jstl