JSP标准标签库——JSTL

JSP标准标签库——JSTL

JSTL是实现Web应用程序中常见的通用功能的定制标签库集。

JSTL分为5大类:

1、 核心标签库

2、 国际化/格式化标签库

3、 数据库标签库

4、 XML标签库

5、 Function标签库(Functions)

Core标签库

核心标签库主要包括通用标签、条件标签、迭代标签和与URL相关的标签

在使用Core标签库的JSP的开始部分,添加代码:%@tagliburi=”http://java.sun.com/jsp/jstl/core” prefix=”c”%

通用标签:

•         <c:out>标签

–       用于将表达式的结果输出到当前的JspWriter对象中。其功能类似于JSP的表达式<%=  %>,或者EL表达式${}。

–       语法
<c:out value=“value” [default=“default value”] [escapeXml=“true|false”]/>
<c:out value=“value”  [escapeXml=“true|false”]><!--为true时,对输出内容中的<、>、“、‘和&字符进行转义,分别转成&lt、&gt、&#039、&#034和&amp-->
           default value
</c:out>

Eg:

    <%

    request.setAttribute("user","lisi");

   %>

<c:out value="helloworld"/><br/>

<c:out value="${userName}"default="xxxx"/><br/>

<c:out value="<h1>你好!!!</h1>" escapeXml="false"/><br/>

<c:out value="${userName}">文本内容</c:out>

•         <c:set>标签

–       <c:set>标签用于设置JSP页面的各种域范围中的变量,或者设置java.util.Map对象或JavaBean对象的属性。

–       语法

•         <c:set value=“value”var=“name” [scope=“范围”]/>将value的值保存到名为name的变量中,同时name变量保存到选定的作用范围中。例如,
<c:set value=“sunwk” name=“username” scope=“session”/>

范围可以是:可以是page|request|session|application

•         <c:set var=“name” [scope=“范围”] >
      value
</c:set>
将标签体中的内容保存到名为name的变量中,同时name变量保存到选定的作用范围中。例如,
<c:set var=“username” scope=“session”>
    sunwk
</c:set>

•         <c:set value=“value”target=“target” property=“propertyName” />将value的值保存到target对象的propertyName属性中。

•         <c:set target=“target”property=“propertyName”>
      value
</c:set>
将标签体的内容保存到target对象的propertyName属性中。

Eg:

<c:set value="sunwukong"var="user" scope="request"></c:set>

${user}<br/>

<c:set var="user"scope="request">

zhubajie

</c:set>

${user }<br/>

<%

    Map map=new HashMap();

    request.setAttribute("map",map);

 %>

 <!-- 给指定范围内的某一个集合去设置键值对 -->

 <c:set value="tangseng"property="aaa" target="${map}"></c:set>

${map.aaa }<br/>

<!-- 给javaBean里的属性赋值 -->

<%

    Person p=new Person();

    request.setAttribute("person",p);

 %>

 <c:set value="Jerry"property="name" target="${person}"></c:set>

${person.name}

•         <c:remove>标签

–       <c:remove>标签用于移除JSP页面中指定域范围中的变量。

–       语法
<c:remove var=“name” [scope=“范围”]/>

<c:remove var="person"scope="request"/>

<c:out value="${person.name}" default="没有该人"/>

•         <c:catch>标签

–       <c:catch>标签用于捕获嵌套在标签体内的内容抛出的异常对象,并将异常信息保存到变量中。

–       语法
<c:catch [var=“name”]>
           body content
</c:catch>
将可能发生异常的代码放到该标签中,如果发生异常,异常信息保存到name变量中。

<!-- catch捕获异常,将可能发生异常的内容放在catch中

,异常对象会以属性的方式保存在某个作用域中,

var是在指定范围内存异常对象的内容 -->

<c:catch var="myex">

<%

    int i=10/0;

 %>

</c:catch>

异常:<c:out value="${myex }"></c:out><br/>

异常的原因是:<c:out value="${myex.cause}"></c:out><br/>

异常消息:<c:out value="${myex.message}"></c:out>

 异常堆栈轨迹:<c:out value="${myex.stackTrace}"></c:out>

条件标签

•         <c:if>标签

–       <c:if>标签用来做条件判断,功能类似于JSP中的<%if(boolean){}%>。

注意:对于判断标签的test属性,可以使用一些关系操作符,如==、!=、<、>、>=、<=等,也可以将这些关系操作符用eq、ne、lt、le、gt、ge取代。

Eg:

<c:if test="${userName==null }"var="xx" scope="request">

 该用户没有登录

 </c:if>

•         <c:choose>、<c:when>、<c:otherwise>标签

–       <c:choose>标签用于提供条件选择的上下文,它必须与<c:when>和<c:otherwise>标签一起使用。

–       <c:when>作为<c:choose>的子标签,<c:when>有一个test属性,该属性的值为布尔型,如果test的值为true,则执行<c:when>标签体的内容。

–       <c:otherwise>标签没有属性,它必须作为<c:choose>标签的最后分支出现。

Eg:

<%

    request.setAttribute("age",18);

  %>

  <c:choose>

    <c:when test="${age>70}">

        老年人

    </c:when>

    <c:when test="${age<=70&& age>35}">

        中年人

    </c:when>

    <c:when test="${age<=35&& age>18 }">

        青年人

    </c:when>

    <c:when test="${age<=18&& age>0}">

        少年或儿童

    </c:when>

    <c:otherwise>

        输入错误

    </c:otherwise>

 

  </c:choose>

迭代标签:

•         <c:forEach>标签

–       <c:forEach>标签用于对包含了多个对象的集合进行迭代,重复执行它的标签体,或者重复迭代固定的次数。

注意:

Ø      items属性并不是一定要有的属性,但是当没有使用items属性时,就一定要使用begin和end属性。

Ø      varStatus:用来保存现有遍历计数相关的信息。例如,如果varStatus=“i”,那么会将相应信息放到名称为i的变量中,i变量有四个属性值,index、count、first和last。

Index是现在操作的成员的索引

Count是操作成员总数

First是所操作成员是否是第一个成员

Last是所操作成员是否是最后一个成员

Eg:

<c:forEach begin="1" end="10"step="1">

    helloworld

 </c:forEach><br/>

 Eg2:按照表格类型显示,奇数行和偶数行颜色不同,当光标放到栏位上时,整个栏位会变色

<head>

    <style type="text/css">

    .even{

    background-color:#ffff99;

    color:#ff0000;}

    .odd{

    background-color:#ffff00;

    color:#ff0000;}

    tr:hover{

    background-color:#0000ff;}

    </style>

</head>

<body>

<%

    Listlist=new ArrayList();

    list.add("aaa");

    list.add("bbb");

    list.add("ccc");

    list.add("ddd");

    list.add("eee");

    list.add("fff");

    list.add("ggg");

    list.add("hhh");

    list.add("iii");

    list.add("jjj");

    request.setAttribute("list",list);

  %>

  <!--varStatus存的是状态对象,在迭代过程中的状态信息,不支持EL表达式,状态信息有4个属性:index,count,first和last -->

 <table border="1"width="50%">

  <c:forEach items="${list}"var="str" begin="1"end="9" step="1"varStatus="status">

 <!--status.count%2!=0判断是否是奇数行,奇数行——even,偶数行——odd -->

  <tr class="${(status.count%2!=0)?'even':'odd'}">

  <td>${str}</td>

  <td>${status.index}</td>

  <td>${status.first}</td>

  <td>${status.last}</td>

<td>${status.count}</td>

</tr>

  </c:forEach>

  </table>

</body>

•         <c:forTokens>标签

–        <c:forTokens>标签用来浏览一字符串中所有的成员,其成员是由定义符号(Delimiters)所分隔的。

Eg:

<c:forTokens items=“a:b:c:d” delims=“:”var=“token”>

       <c:outvalue=“${token}” /> <br>

</c:forTokens>

注意:这个标记的使用效果相当于java.util.StringTokenizer类。将字符串“a:b:c:d”以“:”分隔符分开,token是循环到当前所分割得到的字符串。

URL相关的标签:

<c:import>标签:可以把其他静态或者动态文件包含到本身的JSP页面中。与JSP的动作<jsp:include>的区别在于:<jsp:include>只能包含和自己在同一个Web应用中的文件,<c:import>不仅能包含和自己在同一个Web应用下的文件,还可包含其他Web应用或其他网站的文件。

Eg:

  <!-- 如果写var属性的话,MyJsp.jsp中的内容会包含到secondPage中,必须用EL表达式在本页显示一下 -->

 <c:import url="/MyJsp.jsp"var="secondPage"/>

 ${secondPage}

•         <c:url>标签

–        <c:url>标签在JSP页面构造一个URL,它提供了3个功能元素,它们可以在URL前面附加当前Servlet上下文的名称;可以为会话管理重写URL;可以对请求参数名称和值进行URL编码,这些功能在为J2EE Web应用程序构造URL时特别有用。

•         <c:param>标签

–        <c:param>标签的作用是为一个URL添加请求参数,在前面的<c:url>、<c:redirect>和<c:import>标签中都已经见过<c:param>的用法。

<%session.setAttribute("xxxxx","xxxxx"); %>

 

 <%

    session.setAttribute("user","www");

  %>

 <!-- value构建地址,以var属性名来存储到作用域,scope存储的作用域 -->

 <!-- index.jsp加/,下面再显示时,会显示详细的路径 -->

 <c:url value="/index.jsp"var="strUrl" scope="request">

 <!-- c:param给url附加参数 -->

    <c:param name="pageNo" value="2"></c:param>

 </c:url>

 ${strUrl}

 <a href="${strUrl}">首页</a>

 <a href="<c:url value='/index.jsp'/>">首页</a>

 

•         <c:redirect>标签

–        <c:redirect>标签用于向用户的浏览器发送HTTP重定向响应,它是JSTL中与 javax.servlet.http.HttpServletResponse的sendRedirect()方法功能相当的标记。

Eg:

<!-- url重定向的地址 -->

<c:redirect url="/MyJsp.jsp">

   

</c:redirect>

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值