JSTL中的核心库

来源:互联网 发布:人工智能电影在线看 编辑:程序博客网 时间:2024/05/21 09:09

JSTL,是英文java standar tag library(java标准标签库),因此,这个库是得到java ee规范支持的,不需要额外地引入其他框架。这个库主要包含了四个部分:核心库、函数库、操作数据库的库、国际化支持的库,这里讲得仅仅是核心库。JSTL的核心库中,提供了通用标签,条件标签,迭代标签和url标签,在这里,也不对核心库中所有的标签进行讲解,只讲解最常用到的几个标签。

通用标签

<c:out>
这是最常用到的标签了,主要是用来输出变量值的,它的主要属性如下:

属性

类型

描述

value

Object,默认是字符串,如果是变量,需要显示使用EL

${变量}

将变量输出到JSP页面上

Default

Object,默认是字符串

如果访问不到value里面的值,那么将输出默认值

escapeXml

Boolean

默认为true,会对<>&这些html特殊字符进行编码

使用案例,假设用户登录成功,那么用户跳转到欢迎页面Welcome.jsp,这个页面上输出文本:欢迎回来,xxx。首先,用户登录成功后,将User类的变量user设置到session中去。在欢迎页面 使用<c:out value=”${sessionScope.user.username}”/>就可以输出登录成功的用户的用户名。

<c:set>

该标签是用来往内置对象page,equest,session,application中设置变量或者Java Bean中设置属性的。它的主要属性如下:

属性

类型

描述

Value

Object

变量值

Var

String

对应的名称

scope

String

设置的范围,可以是pagerequestsessionapplication

target

String

支持往JavaBean或者Map中设置属性

Property

Object

Java Bean中的属性

当往内置对象page,request,session,application中设置变量时,相等于调用对应的setAttribute("name",xxx)。比如旧时的在JSP页面上验证用户登录ValidationLogin.jsp,在验证用户登录成功后,使用<c:set var=”user” value=”${pageScope.user}” scope=”session”/>这样就相当于session.setAttribute(“user”,user);比如用户修改了密码,可以在页面上使用<c:set property=”password” target=”${sessionScope.user}”/>,就可以在JSP页面上设置变量。

<c:remove>

这个标签支持我们设置内置对象和Java Bean、Map的属性,很强大。移除内置对象page、request、session、application的属性变量,相当于page/request/session/application.setAttribute(“name”, null)。主要的属性如下:

属性

类型

描述

Var

String

内置对象的变量名称

Scope

String

指定内置对象,可以是pagerequestsessionapplication

使用案例,如果用户在注销页面选择了注销,那么,我们需要把session中的user属性给移除,那么就可以使用<c:remove var=”user” scope=”session”/>,就相当于设置了session.setAttribute(“user”, null);

<c:catch>

在通常的java代码中,我们可以使用try…catch来进行异常捕捉,那么在JSP页面上,使用<c:catch>可以对一段脚本进行异常捕捉。它的主要属性如下:

属性

类型

描述

Var

String

将捕捉到的异常信息放入变量中

使用案例,在页面上对用户传递过来的参数进行类型转换
<c:catch var=”exception”>
<%
  String str_num = request.getParameter(“num”);
  Int num = Integer.parseInt(str_num);
%>
</catch>
这样即使程序在上段代码中抛出异常了,也能正常运行,而不是出现500错误,此外,通过判断exception中的值是否为空或者null就可以知道到底有没有抛出异常
<if test=”${pageScope.exception==null or pageScope.exception.equals(“”)”>
  你输入的参数非法

</if>

迭代标签

<c:forEach>
迭代标签主要用来遍历集合。它的主要属性如下:

属性

类型

描述

Var

String

迭代的变量名称

Items

Object

需要迭代的集合或者书籍

VarStatus

String

迭代时代表迭代状态的变量

Begin

int

集合开始的下标

End

Int

集合结束的下标

Step

int

迭代时候的步进量,默认为1

使用实例,假设request对象中存在一个records属性,类型是List<User> ,使用<c:iterator>来进行遍历该变量
<c: iterator items=”${request.records}” var=”user” varstatus=”stat”>
  序号<c:out value=”${stat.index + 1}” />
  用户名称<c:out value=”${user.username}” />

</c:iterator>

条件标签

最常用到的控制标签就是条件判断了,在JSTL核心库中,主要属性就只有一个,那就是test="表达式"。

<c:if test="expression">body</c:if>和和<c:choose>
  <c:when test="expression1">
    body1
  </c:w]hen>
  <c:when test="expression 2">
    body2
  </c:when>
  <c:otherwise>
    body3
  </c:otherwise>
</c:choose><c:if>只是相当于if(condition){},如果符合了test中的EL表达式条件,那么就会输出body中的内容。而<c:choose>则是相当于if...else if...else if...else...,如果满足EL表达式,则输出body内部内容。

url标签

<c:url>

用来生成一个url,它的使用如下:

<c:url value="url地址" var="varName" [context="context"] [scope="page|request|session|application"]/>

如果需要带参数,就带上body:

<c:url value="url地址" var="varName" [context="context"] [scope="page|request|session|application"]>

  <c:param name="paramName" value="paramValue"/>

</c:url>

<c:redirect>

用于客户端重定向,支持带参数的重定向:

<c:redirect url="yourUrl" [context="context"]>

  <c:param name="paramName" value="paramValue"/>

</c:redirect>

0 0
原创粉丝点击