您现在的位置:首页 >> 前端 >> 内容

JSP三JSTL标签

时间:2017/1/17 9:59:00 点击:

  核心提示:1.为什么要使用JSP标签(JSTL):方便标签复用在展示后端数据时,如,HashMap、List 数据集等,方便操作。2.JSTL的环境搭建:JSTL 标签和 Servlet 及 JSP 页面有着严...

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="https://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://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标签:

循环控制标签:

Tags:JS SP P三 三J 
作者:网络 来源:业精于勤荒于嬉,行成