zoukankan      html  css  js  c++  java
  • java Web JSTL介绍及基本应用

    由于实际开发中我们一般不能在jsp页面上写java代码,而el表达式也做不了判断 循环之类的复杂操作,为了弥补这些缺点,所以就有了JSTL。

    简介

    JavaServer Pages Standard Tag Library,JSP标准标签库

    从JSP1.1规范开始,JSP就支持使用自定义标签,使用自定义标签大大降低了JSP页面的复杂度,同时增强了代码的重用性。为此,许多Web应用厂商都定制了自身应用的标签库,然而同一功能的标签由不同的Web应用厂商制定可能是不同的,这就导致市面上出现了很多功能相同的标签,令网页制作者无从选择,为了解决这个问题,Sun公司制定了一套标准标签库(JavaServer Pages Standard Tag Library),简称JSTL。

    STL虽然被称为标准标签库,而实际上这个标签库是由5个不同功能的标签库共同组成的。在JSTL1.1规范中,为这5个标签库分别指定了不同的URI以及建议使用的前缀,如下所示:

    标签库标签库的URI前缀
    Core http://java.sun.com/jsp/jstl/core c
    I18N http://java.sun.com/jsp/jstl/fmt fmt
    SQL http://java.sun.com/jsp/jstl/sql sql
    XML http://java.sun.com/jsp/jstl/xml x
    Functions http://java.sun.com/jsp/jstl/functions fn

    基本应用

    需要先引入jstl.jar 和 standard.jar两个jar包

    其次要在页面上引入标签库:

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <html>
    <head></head>
    <body>
        <c:out value="Hello World!"></c:out>
    </body>
    </html>    

    基本应用(以循环和格式化日期为例):

    foreach遍历数组和集合:

    <%@page import="java.util.Map"%>
    <%@page import="java.util.HashMap"%>
    <%@page import="java.util.ArrayList"%>
    <%@page import="java.util.Collections"%>
    <%@page import="java.util.List"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <!-- 需求: 遍历域容器中的复杂数据(数组, list, map) -->
        <%
            int[] arr = {111, 333, 555};
            pageContext.setAttribute("arr1", arr);
        %>
        <c:forEach items="${arr1 }" var="e" varStatus="vs">
            ${vs.index } ${vs.count }  ${e } <br/>
        </c:forEach>
        <hr/>
        
        <%
            List list = new ArrayList();
            Collections.addAll(list, "aaa", "ccc", "eee");
            pageContext.setAttribute("list1", list);
        %>
        <c:forEach items="${list1 }" var="e">
            ${e }<br/>
        </c:forEach>
        <hr/>
        
        <%
            Map<String, Integer> map = new HashMap<String, Integer>();
            map.put("aaa", 111);
            map.put("ccc", 333);
            map.put("eee.ddd.bbb", 555);
            map.put("fff", 666);
            
            pageContext.setAttribute("map1", map);
        %>
        <c:forEach items="${map1 }" var="en">
            ${en.key } === ${en.value } <br/>
        </c:forEach>
    </body>
    </html>

    for循环遍历数组和集合:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h3>使用forEach输出 1~10, 奇数为红色,偶数为蓝色</h3>
        <c:forEach begin="1" end="10" step="1" var="i">
            <font color="${i%2!=0?'red':'blue' }">${i }</font>
        </c:forEach>
        <br/>
        <c:forEach begin="1" end="10" step="4" var="i" varStatus="vs">
            <font color="${vs.count%2!=0?'red':'blue' }">${i }</font>
        </c:forEach>
        
    <h3>使用forEach完成 1~10的和</h3>
        <h4>java</h4>
            <%
                int sum = 0;
                for(int i=1;i<=10;i++) {
                    sum += i;
                }
                out.print("java 和:" + sum);
            %>
        <h4>jstl + el</h4>
            <c:set var="sum" value="0"></c:set>
            <c:forEach begin="1" end="10" step="1" var="i">
                <c:set var="sum" value="${sum + i }"></c:set>
            </c:forEach>
            EL 和: ${sum }
    </body>
    </html>

    格式化日期:

    <%@page import="java.util.Date"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <!-- 格式化日期 -->
        <%
            Date date = new Date();
            pageContext.setAttribute("date1", date);
        %>
        
        <fmt:formatDate value="${date1 }" pattern="yyyy-MM-dd HH:mm:ss"/>
    </body>
    </html>

    其他应用请自行百度。

  • 相关阅读:
    Shared Memory in Windows NT
    Layered Memory Management in Win32
    软件项目管理的75条建议
    Load pdbs when you need it
    Stray pointer 野指针
    About the Rebase and Bind operation in the production of software
    About "Serious Error: No RTTI Data"
    Realizing 4 GB of Address Space[MSDN]
    [bbk4397] 第1集 第一章 AMS介绍
    [bbk3204] 第67集 Chapter 17Monitoring and Detecting Lock Contention(00)
  • 原文地址:https://www.cnblogs.com/blazeZzz/p/9245069.html
Copyright © 2011-2022 走看看