一 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.</version>
</dependency> <dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.</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();
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[].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("","aaaa1111");
request.setAttribute("map",map);
%> <!-- 根据关键字取map集合的数据 -->
${map.c}
${map[""]}
<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

最新文章

  1. C++ 读取txt文本内容,并将结果保存到新文本
  2. JQuery 控制元素显示隐藏
  3. Linux Cache Mechanism Summary(undone)
  4. 如何清除sql server日志
  5. USACO: Combination Lock
  6. selenium+python自动化之xpath定位
  7. Java中this关键字在构造方法中的使用
  8. Java程序执行过程
  9. 144 Binary Tree Preorder Traversal(二叉树先序遍历Medium)
  10. Struts2 实现文件上传
  11. 最长递增子序列(Longest Increase Subsequence)
  12. 为Windows资源管理器右键菜单添加菜单项
  13. Centos下安装git的web服务器
  14. BigDecimal类型转换
  15. HDFS退出安全模式
  16. 10.5Djang admin 管理工具
  17. HDU 2064 汉诺塔III (递推)
  18. linux两种类型服务管理
  19. codeforces 350 div2 D Magic Powder - 2 二分
  20. mac 学习笔记

热门文章

  1. HTTP协议web开发知识点
  2. 关于input的焦点事件
  3. Vue Router滚动行为 scrollBehavior
  4. Visual Flow 简介
  5. (后端)Java中关于金额大小写的工具类
  6. (后端)sql server 按时间段查询
  7. web测试之界面测试
  8. css,响应鼠标事件,文字变色
  9. VSCode + PYQT5 + QtDesigner 环境搭建和测试
  10. Ulua对象管理方式