zoukankan      html  css  js  c++  java
  • JavaWeb学习总结-12 JSTL标签语言

    一 JSTL

      JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
      JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。JSTL主要作用:

    (1) 获取数据
      EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
    (2) 执行运算
      利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
    (3) 获取web开发常用对象
      EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
    (4) 调用Java方法
      EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

    1 JSTL库的安装

      Apache Tomcat安装JSTL 库步骤如下:
    Step1 :从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。

      下载jakarta-taglibs-standard-1.1.2.zip 包并解压,将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jar和jstl.jar 文件拷贝到/WEB-INF/lib/下。

      也可以使用maven自动从库中下载jstl库, pom.xml

    <!-- jstl https://mvnrepository.com/artifact/jstl/jstl -->
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>1.1.2</version>
            </dependency>
    
            <dependency>
                <groupId>taglibs</groupId>
                <artifactId>standard</artifactId>
                <version>1.1.2</version>
            </dependency>

    Step2: 解压缩 jakarta-taglibs-standard-1.1.2.zip,找到解压后的 tld文件,都拷贝到工程的 %/WebProject/webapp/WEB-INF目录下。

    Step3 :在 web.xml 文件中添加以下配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
        xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
            http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        <jsp-config>
        <taglib>
        <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
        <taglib-location>/WEB-INF/fmt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
        <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
        <taglib-location>/WEB-INF/c.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
        <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
        <taglib-location>/WEB-INF/sql.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
        <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
        <taglib-location>/WEB-INF/x.tld</taglib-location>
        </taglib>
        <taglib>
        <taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
        <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
        </taglib>
        </jsp-config>
    </web-app>

    2 获取数据

      使用EL表达式获取数据语法:"${标识符}"
      EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
      EL表达式可以很轻松获取JavaBean的属性,或获取数组、Collection、Map类型集合的数据
      el表达式获取数据范例:

    jstl.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@page import="com.mobile.domain.Person"%>
    <%@page import="com.mobile.domain.Address"%>
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>el表达式获取数据</title>
        <meta charset="utf-8" />
      </head>
      
      <body>
        <% 
            request.setAttribute("name","信平");
        %>
            <%--${name}等同于pageContext.findAttribute("name") --%>
            使用EL表达式获取数据:${name}  
        <hr>
        <!-- 在jsp页面中,使用el表达式可以获取bean的属性 -->
        <% 
            Person p = new Person();
            p.setAge(12);
            request.setAttribute("person",p);
        %>
            使用el表达式可以获取bean的属性:${person.age}
        <hr>
        <!-- 在jsp页面中,使用el表达式可以获取bean中的。。。。。。。。。的属性 -->
        <% 
            Person person = new Person();
            Address address = new Address();
            person.setAddress(address);
            
            request.setAttribute("person",person);
        %>
           ${person.address.name}
         <hr>
        <!-- 在jsp页面中,使用el表达式获取list集合中指定位置的数据 -->
        <% 
            Person p1 = new Person();
            p1.setName("张三");
            
            Person p2 = new Person();
            p2.setName("李四");
            
            List<Person> list = new ArrayList<Person>();
            list.add(p1);
            list.add(p2);
            
            request.setAttribute("list",list);
        %>
        
        <!-- 取list指定位置的数据 -->
        ${list[1].name} 
        
        <!-- 迭代List集合 -->
        <c:forEach var="person" items="${list}">
            ${person.name}
        </c:forEach>
        <hr>
        <!-- 在jsp页面中,使用el表达式获取map集合的数据 -->
        <% 
            Map<String,String> map = new LinkedHashMap<String,String>();
            map.put("a","aaaaxxx");
            map.put("b","bbbb");
            map.put("c","cccc");
            map.put("1","aaaa1111");
            request.setAttribute("map",map);
        %>
        
        <!-- 根据关键字取map集合的数据 -->
          ${map.c}  
          ${map["1"]}
          <hr>
          <!-- 迭代Map集合 -->
          <c:forEach var="me" items="${map}">
              ${me.key}=${me.value}<br/>
          </c:forEach>
        <hr>
      </body>
    </html>

    Person.java

    package com.mobile.domain;
    
    public class Person {
        private String name;
        private Address address;
        private Integer age;
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Address getAddress() {
            return address;
        }
    
        public void setAddress(Address address) {
            this.address = address;
        }
    
    }

    Address.java

    package com.mobile.domain;
    
    public class Address {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    }

    参考资料:

    http://www.runoob.com/jsp/jsp-jstl.html

  • 相关阅读:
    Django——缓存
    Django——中间件设置缓存
    Django——photo
    Django——权限
    ONVIF Event消息解析(How to work with gSoap)
    当OOP语言RAII特性发展到functional形式的极致
    探讨符号式未来,函数式语言//冒号说明法
    JavaScript 目标装配式编程(Target Assemble Programming)
    When Colon Scripting is comming(JavaScript语法扩充)
    When Colon Scripting is comming (脚本最佳体验)
  • 原文地址:https://www.cnblogs.com/wangshuo1/p/5875113.html
Copyright © 2011-2022 走看看