AJAXJS-Web 模版语言基础

模板语句包括:EL 表达式、标签库和自定义标签库。

EL 表达式

常见的 EL 表达式如下表所示。

EL 表达式含义
${param.xxx}获取请求参数,相当于 request.getParameter("xxx")
${pageContext.request.contextPath}获取项目当前名称,相当于 request.getContextPath()
${requestScope['javax.servlet.forward.request_uri']}获取原请求 的 uri,而非模版所在的 uri
${viewUtils.formatDateShorter(current.createDate)}调用方法并传参,viewUtils 系自定义对象,已经在上下文中
${empty value ?foo:bar}/${not empty value ? bar:foo}判断值是否为空
${'请求完成耗时:'.concat(requestTimeRecorder).concat('秒') }EL 不支持字符串 + 操作符,使用 String 的 concat 方法代替

JSTL 标签库

JSP 标准标签库(JSTL)是一个 JSP 标签集合,它封装了 JSP 应用的通用核心功能。使用前须引入相关 jar 包,并在 JSP 页面声明头:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="jstl"%>

其中 prefix 前缀可自定义。请参阅 JSTL 教程

下面是利用 fmt 输出特定格式日期:

<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> 
<fmt:formatDate value="<%=new Date()%>" />
<br />
<fmt:formatDate value="<%=new Date()%>" pattern="yyyy-MM-dd" /> 
<br />
<fmt:formatDate value="<%=new Date()%>" type="both" />

判断、迭代标签

自定义标签库基于 JSP 2.0 新提供的 SimpleTagSupport 实现,作用和 JSTL 类似但比 JSTL 简单。使用前请将 tag.tld 文件复制在项目 WEB-INF 目录下方可。tag.tld 位于 /tag_v2/tag.tld。

在 JSP 页面声明头:

<%@taglib uri="/ajaxjs" prefix="c"%>

其中 prefix 前缀可自定义。

If 条件判断逻辑

若条件为真,渲染标签内的内容。If 语句暂不提供 else 子语句。要执行 else 语句请使用下面的 choose。

Hello,
<c:if test="true">
  World
</c:if>

此时 true 为 boolean 类型而非字符串。

Hello,
<c:if test="${bar > 10}">
  World
</c:if>

choose 条件判断逻辑

提供类似 if……else……逻辑的判断。

<c:choose>
  <c:when test="${user==null }">
    用户不存在
  </c:when>
  <c:otherwise>
    用户名是 :${user.name}
  </c:otherwise>
</c:choose>

foreach 迭代逻辑

foreach 既支持 Collection 集合,也支持 Map 的迭代,还有 Java 数组的遍历。${currentcnt} 是当前索引,${cnt} 是集合总数。

<% 
  Map<String, String> map = new HashMap<String, String>();
  map.put("aa","111");
  map.put("bb","222");
  map.put("cc","333");
  map.put("dd","444");
  request.setAttribute("map", map);
%>
<c:foreach var="entry" items="${map}">
  键名:${entry.key } = 值:${entry.value }
</c:foreach>
<% 
  List<String> list = new ArrayList<String>();
  list.add("aaa");
  list.add("bbb");
  list.add("ccc");
  list.add("ddd");
  request.setAttribute("list", list);
%>
<c:foreach var="str" items="${list}">
  ${str},当前 ${currentcnt}/一共 ${cnt}

各种标签之间允许嵌套。

©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页