JSTL核心标签

  核心标签库主要用来完成JSP页面的常用功能,减少内嵌代码量。其中JSTL核心标签库包含表达式标签,条件标签,循环标签和URL操作4类。

  使用JSTL核心标签之前必须在JSP首行使用使用指令taglib来包含JSTL库:<%@ taglib

Prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %> 其它标签库的引入类似。

1】表达式标签

   <c:out>输出标签主要用于将表达式的值输出到JSP页面当中,该标签可以代替JSP表达式<%=表达式%>,<c:out>有以下两种标签格式,有标签体和没有标签体。没有标签体语法格式如:<c:out value=”expression” [escapeXML=”true|false”] [defaultValue=”defaultValue”] /> 有标签体的语法如:<c:out value=”expression” [escapeXML=”true|false”] >defaultValue</c:out>

Value:是一个Object对象,用于要指定的变量或表达式;

escapeXML:是一个boolean值,用于指定是否转换特殊字符,默认为true,表示转换defaultValue:是一个Object对象,用于指定value属性值等于null值时,显示的默认值。

<c:set>设置标签用于在指定范围(page,request,session,application)内定义保存某个变量或者指定对象设置属性值。使用这个标签就可以在页面中定义变量,而不用在JSP页面中嵌入打乱HTML结构的Java代码。用于设置变量的标签语法:<c:set value=”value” var=”name”

[scope=”request|page|session|application] /> 用于设置对象的标签语法:<c:set value=”value”

Target=”object” property=”propName” />

Value:是一个Object对象,用于指定变量值

var:是一个String对象,用于指定变量名

Target:是一个Object对象,用于指定目标对象,可以是JavaBeanMap集合对象

property:是一个String对象,用于指定目标对象存储数据的属性名

scope:是一个String对象,用于指定变量作用域,默认值是页面(page)

   <c:remove>标签可以从指定的JSP范围内移除指定的变量,语法如:<c:remove var=”name”

[scope=”request|page|session|application] />

Var:用于指定要移除的变量名称

Scope:用于指定变量的存在范围,默认值是页面(page)

   <c:catch>标签用于捕捉异常,还能将异常信息保存在指定的变量中,用一个例来说明这个标签的使用:

<c:catch var="exception">

<%

int number=Integer.parseInt(request.getParameter("number"));

out.println("合计金额为:"+0.8*number);

%>

</c:catch>

<c:out value="${exception}"/>

2】条件标签

   <c:if>标签可以根据不同的条件处理不同的业务,执行不同的代码。相对于Java代码当中的IF语句。语法如下:

<c:if test=”condition” var=”name” [scope=”request|page|session|application] />(无标签主体格式)Test:boolean类型,并且是必选属性用于指定条件表达式,可以引用EL表达式

Var:String类型,指定存储判断结果的变量,如果不存在就创建。不可以引用EL表达式。

  <c:chose> <c:when> <c:otherwise>标签组结构来完成条件选择逻辑,根据不同条件选择不同的代码来完成不同的业务功能。语法如下:

  <c:choose>

     <c:when test=”condition”>

     </c:when>

       ....<!--多个<c:when>标签-->

     <c:otherwise>

     </c:otherwise> <!--默认逻辑处理-->

  </c:choose>

3】循环标签

  <c:forEach>标签可以根据循环条件遍历数组和集合类中的所有或部分数据。主要用于遍历从数据库获得的数据。如:数组,java.util.Listjava.util.Map对象,它们封装了从数据库中所取出的数据,可以使用循环标签来遍历这些数据,使页面看起来更加整洁。

  数字索引迭代语法格式如下:

<c:forEach begin=”start” end=”finish” [var=”name”] [varStaus=”stausName”][step=”step”]>

  标签主体

</c:forEach>

  集合成员迭代语法如下:

<c:forEach items=”data”  [begin=”start”]  [end=”finish”]  [var=”name”]  [step=”step”]

 [varStaus=”stausName”]>

  标签主体

</c:forEach>

Beginint类型,循环的起始位置,默认从集合的第一个开始

Endint类型,循环的结束位置,默认

varString类型,循环体的变量,用于存储items指定的对象成员

stepint类型,循环的步长

items:集合对象,被循环遍历的对象,多用于数组与集合类

varStausString类型,循环的状态信息有以下四个:

indexint型,说明当前循环的索引值,从0开始。

Countint型,当前的循环计数肉1开始。

Lastboolean型,否为最后一次循环。

Firstboolean型,否为第一次循环。

例如:

<span style="font-family:Times New Roman;font-size:18px;"><%List list=new ArrayList();
list.add("明日科技");
list.add("编程词典");
list.add("www.bccd.com");
request.setAttribute("list",list);%>
<c:forEach items="${requestScope.list}" var="keyword" varStatus="id" begin="1">
${id.index } ${keyword}<br>
</c:forEach></span>


  <c:forTokens>标签是根据指定的分隔符将字符串分开,再进行循环的一种标签。语法格式:

<c:forTokens items=”string” delims=”char” [var=”name”] [begin=”start”]  [end=”finish”]

[varStaus=”stausName”]>

   标签主体

</c:forTokens>

Items:被循环遍历的字符串对象。

delims:字符串的分割字符。

例如:

<span style="font-family:Times New Roman;font-size:18px;"><c:forTokens items="${sourceStr}" delims=",、。" var="item">
${item}<br>
</c:forTokens></span>


4URL操作标签

   <c:import>标签可以导入站内或其它网站的静态和动态文件到web页面中,可以用此标签导入其它网站的天气信息加入自己的网页中,相比于<jsp:include>动作标签只能导入站内资源,这个标签更加有用。两种语法格式如下:

(1)<c:import url=”url” [context=”context”][var=”name”][charEncoding=”encoding”]

scope=”request|page|session|application]>标签主体

</c:import>

(2)<c:import url=”url” varReader=”name”] [context=”context”] [charEncoding=”encoding”]/>

  Url:被导入文件资源的URL

  Context:上下文路径,其值必须以’/’开头,如果指定该属性,那么url也必须以’/’开头

  Var:变量名称,将获取的资源存取在该变量中

  varReader:以Reader类型存储包含文件内容

  charEncoding:被导入文件的编码格式

例如:

<span style="font-family:Times New Roman;font-size:14px;"><%@ page language="java" pageEncoding="GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
  <head>
    <title>应用<c:import>标签在网页中显示天气预报</title>
  </head>
  
  <body>
  <c:catch var="error">
<c:import url="http://m.weather.com.cn/m/p11/weather1.htm" charEncoding="GBK"/>
  </c:catch>
  <c:if test="${!empty error}">
  	该网址不存在,请确认是否登录到Internet!
  </c:if>
 
<c:url value="http://localhost:8080/userServlet" var="url" scope="session">
<c:param name="action" value="query"/>
</c:url>
<a href="${url}">查询全部用户信息</a>
 
  </body>
</html></span>


<c:redirect>标签可以将客户端发出的request请求重定向到其它URL服务端,由其它程序处理用户请求。在此期间可以对此请求的属性进行添加或者修改,然后再进行传递。两种语法格式如下:

(1)<c:redirect url=”url” [context=”/context”]/>

(2)<c:redirect url=”url” [context=”/context”]>

    <c:param/>......<!--用于转发时添加参数-->

 </c:redirect>

<c:param name=”paramName” value=”paramValue” />用于传递参数信息,并且name属性可以引用EL表达式。

猜你喜欢

转载自blog.csdn.net/lovequanquqn/article/details/51365534