JSP 三 JSTL标签

1.为什么要使用JSP标签(JSTL):

  • 方便标签复用
  • 在展示后端数据时,如,HashMap、List 数据集等,方便操作。

2.JSTL的环境搭建:

  • JSTL 标签和 Servlet 及 JSP 页面有着严格的版本对应关系,且版本不对应很容易抛出异常。
  • 建议组合:Tomcat7.0 + JSTL1.1.2

3.JSTL 核心标签及 EL 表达式的使用:

  • 第一个JSTL 程序:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!-- 导入 jstl 标签库 -->
<%@ 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>
    <!-- 使用标签输出常量或者变量 -->
    <c:out value="JSTL 学习第一步!"></c:out>
</body>
</html>
  • JSTL 标签的四大分类:
    • 核心标签(重点)
    • 格式化标签
    • SQL 标签
    • XML 标签
  • JSTL 函数(很常用):
  • EL 表达式:
    • 什么是EL表达式:Expression Language,经常与JSTL 配合使用,使得 JSP 页面更直观,写法更简单。
    • 例子:
      “`
      <%=session.getValue(“name”) %>
- EL 表达式的格式:用"$"定界,内容包括在花括号”{}“中。
  `${}`

  -  "." 与 "[]" 运算符:通常情况下是通用的。比如,
   `${user.sex}` `${user["sex"]}`

   - "[]"还可以用来进行集合元素中的定位:`${booklist[0].price}`
   - 一下两种情况,两者不通用:
   1. 包含特殊字符:
   `${user.first-name} //错误写法` `${user["first-name"]} //正确写法`

   2. 通过变量动态获取值:`${user[param]}`  ,param可以是name或sex等;但是"."的写法是`${user.name}` `${user.sex}` 等等。

- EL 变量:
     | JSP内置对象 | EL名称    |
 | ------------|
 |Page|PageScope|
 |Request|RequestScope
 |Session|SessionScope
 |Application|ApplicationScope
 注释:在EL使用与JSP内置对象同样能的EL 变量,如上表中的对应关系。

- EL 自动类型转换:
普通写法:
`String count = request.getParameter("count");
        int count = Integer.parseInt(count);
        count = count + 2;`
EL写法:
`${param.count + 20}`

- EL隐式对象:除了上表四种常用的之外,还有其他对象。
    |序号|隐式对象|意义
|-----
|1|pageContext|PageContext 实例对应于当前页面的处理
|2|pageScope|与页面作用域属性的名称和值相关联的Map类
||requestScope|与请求作用域属性的名称和值相关联的Map类
||sessionScope|与会话作用域属性的名称和值相关联的Map类
||applicationScope|与应用程序作用域属性的名称和值相关联的Map类
||param|按名称存储请求参数的主要值的Map类
||paramValues|将请求参数的所有值作为String数组存储的 Map 类
||Header|按名称存储请求头主要值的 Map 类
||headerValues|将请求头的所有值作为 String 数组存储的 Map 类
||cookie|按名称存储请求附带的 cookie 的 Map 类
|11|initParam|按名称存储 Web 应用程序上下文初始化参数的 Map 类

- EL 运算符: 
  运算符允许对数据和文字进行组合及比较。如下表,
     |类别|运算符
  |--
  |算术运算符|+、-、*、/、%(mod)
  |关系运算符|==、!=、<><=、>=
  |逻辑运算符|&&、||、!
  |验证运算符|empty
  验证运算符(empty):对于验证数据特别有用。可以将empty和表达式配合使用,通过判断结果值(true or false)来判断表达式是否为NULL。如下例子:

  `String userName = "";
        request.setAttribute("userName", userName);
        <c:out value="${empty userName}"></c:out>
`


- JSTL核心标签:

 - out标签用法,见例子:

    ```
    <!-- 使用标签输出常量或者变量 -->
    <c:out value="JSTL 学习第一步!"></c:out>

    <!-- 输出变量 -->   
    <% String userName = "xiaoyu"; %>  
    <c:out value="${userName}"></c:out><br>
    <!-- 输出变量时,当变量不存在时,通过 default 属性输出默认值 -->
    <c:out value="${userName1}" default="error"></c:out><br>
    <!-- 使用转义字符 -->
    <c:out value="&ltout标签&gt" escapeXml="false"></c:out>
  • set标签:
  • 循环控制标签:
相关文章
相关标签/搜索