Java Web - JSTL

JSTL 叫做 JSP 标准标签库,来控制 JSP 页面的输出,可以替代页面中用于控制输出的 Java 脚本(<% ...; %>)


  • 1.. 导入jstl

导包jstl.jar、standard.jar
使用 taglib 指令导入标签库:

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

prefix="c":指定标签库的前缀,这个前缀可以随便给值,但大家都会在使用 core 标签库时指定前缀为 c;
uri="http://java.sun.com/jstl/core":指定标签库的 uri,它不一定是真实存在的网址,但它可以让 JSP 找到标签库的描述文件;

  • 2.. core 标签

    1)  out 
    

<c:out> 标签主要是用来输出数据对象(字符串、表达式)的内容或结果。

    <c:out value=” 数据对象”  [default=” 默认值”]/>
    <c:out value=” 数据对象” > 默认值 </c:out>
2)  set 

<c:set> 标签用于把某一个对象存在指定的域范围内,或者将某一个对象存储到 Map 或者 JavaBean 对象中。

a)

<c:set value=1var=”name1” [scope=”…”]/>

    含义:把一个变量名为 name1 值为 “值 1” 的变量存储在指定的 scope 范围内。

b)
    

<c:set var=”name2” [scope=”page|request|session|application”]>
    值 2
</c:set> 

    含义:把一个变量名为 name2,值为值 2 的变量存储在指定的 scope 范围内。

c)
    

<c:set value=3target=”对象” property=”属性名”/>

    含义:把一个值为 “值 3” 赋值给指定的 JavaBean 的属性名。相当与 setter() 方法。
  
d)

<c:set target=”JavaBean 对象” property= 属性名”>
  值 4
</c:set>

    含义:把一个值 4 赋值给指定的 JavaBean 的属性名。
 
  从功能上abcd的效果是一样的,只是把 value 值放置的位置不同。
ab是向 scope 范围内存储一个值,cd是给指定的 JavaBean 赋值

3)  remove 

<c:remove> 标签主要用来从指定的 JSP 范围内移除指定的变量

<c:remove var= 变量名” [scope=”page|request|session|application”]/>
4)  if 

if 标签的 test 属性必须是一个 boolean 类型的值,如果 test 的值为 true,那么执行 if 标签的内容,否则不执行。

<c:set var="a" value="hello"/>  
<c:if test="${not empty a}">  
    <c:out value="${a}"/>  
</c:if> 
5)  choose 

choose 标签对应 Java 中的 if/else if/else 结构。when 标签的 test 为 true 时,会执行这个 when 的内容。当所有 when 标签的 test 都为 false 时,才会执行 otherwise 标签的内容。

<c:set var="score" value="${param.score}"/>  
    <c:choose>  
         <c:when test="${score> 100 || score < 0}"> 错误分数:${score}</c:when>  
         <c:when test="${score>= 90 }">A 级 </c:when>  
        <c:when test="${score>= 80 }">B 级 </c:when>  
         <c:otherwise>C 级 </c:otherwise>  
</c:choose> 
6)  forEach 

forEach 标签有多种两种使用方式:
使用循环变量,指定开始和结束值,类似 for(int i = 1; i <= 10; i++) {};
循环遍历集合,类似 for(Object o : 集合);

循环变量:

<c:set var="sum" value="0" />   
<c:forEach var="i" begin="1" end="10">   
   <c:set var="sum" value="${sum + i}" />   
</c:forEach>  

<c:out value="sum = ${sum}"/>  
<c:set var="sum" value="0" />  
<c:forEach var="i" begin="1" end="10" step ="2">  
    <c:set var="sum" value="${sum + i}" />  
</c:forEach>  

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

遍历集合或数组方式:

<%  
    String[] names = {"zhangSan", "liSi", "wangWu", "zhaoLiu"};  
    pageContext.setAttribute("ns", names);  
%>  
<c:forEach var="item" items="${ns}">  
    <c:out value="name: ${item}"/><br/>  
</c:forEach> 

遍历 List:

<%  
    List<String> names = new ArrayList<String>();  
    names.add("zhangSan");  
    names.add("liSi");  
    names.add("wangWu");  
    names.add("zhaoLiu");  
    pageContext.setAttribute("ns", names);  
%>  
<c:forEach var="item" items="${ns}">  
    <c:out value="name: ${item}"/><br/>  
</c:forEach>  

遍历 Map:

<%  
    Map<String,String> stu = new LinkedHashMap<String,String>();  
    stu.put("number", "N_1001");  
    stu.put("name", "zhangSan");  
    stu.put("age", "23");  
    stu.put("sex", "male");  
    pageContext.setAttribute("stu", stu);  
%>  
<c:forEach var="item" items="${stu}">  
    <c:out value="${item.key}: ${item.value }"/><br/>  
</c:forEach>  

varStatus属性:
这个属性用来指定接收 “循环状态” 的变量名,例如:<forEach varStatus=”vs” …/>,这时就可以使用 vs 这个变量来获取循环的状态了。
• count:int 类型,当前以遍历元素的个数;
• index:int 类型,当前元素的下标;
• first:boolean 类型,是否为第一个元素;
• last:boolean 类型,是否为最后一个元素;
• current:Object 类型,表示当前项目。

<c:forEach var="item" items="${ns}" varStatus="vs">  
    <c:if test="${vs.first}"> 第一行:</c:if>  
    <c:if test="${vs.last}"> 最后一行:</c:if>  
    <c:out value="第 ${vs.count} 行:"/>  
    <c:out value="[${vs.index}]:"/>  
    <c:out value="name: ${vs.current}"/><br/>  
</c:forEach>  
  • 7) URL

    a) <c:import> 标签
    可以把其他静态或动态文件包含到本 JSP 页面,与 <jsp:include> 的区别为:<jsp:include > 只能包含同一个 web 应用中的文件。而 < c:import > 可以包含其他 web 应用中的文件,网络上的资源。

<c:import 
    url=”url” 
    [context=”context”]
    [value=”value”]
    [scope=”page|request|session|application”] 
    [charEncoding=”encoding”]/>

<c:import url="http://localhost:8080/day07/one">
        <c:param name="school" value="testschool"></c:param>
</c:import>
  • b) <c:url> 、<c:redirect>标签
    两者类似,实现 URL 重写、重定向
<c:url  value="http://www.baidu.com"  var="paramUrl">
         <c:param name="userName" value="root"/>
         <c:param name="pwd">123456</c:param>
</c:url>
  • c) <c:param> 标签
    在 JSP 页面进行 URL 的相关操作时,经常要在 URL 地址后面附加一些参数。<c:param> 标签可以嵌套在 < c:import>、<c:url > 或 < c:redirect > 标签内,为这些标签所使用的 URL 地址附加参数

  • 8) 其它

    • a) catch
      <c:catch> 标签用于捕获嵌套在标签体中的内容抛出的异常。
<c:catch [var="varName"]> 容易产生异常的代码 </c:catch>

var 为捕获的异常对象,保存在 page 域

  1. fmt 常用标签
    fmt 标签库是用来格式化输出的,通常需要格式化的有时间和数字。

    格式化时间

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>  
    ......  
<%  
    Date date = new Date();  
    pageContext.setAttribute("d", date);  
%>  
<fmt:formatDate value="${d}" pattern="yyyy-MM-dd HH:mm:ss"/>  

2) 格式化数字

<%  
    double d1 = 3.5;  
    double d2 = 4.4;   
    pageContext.setAttribute("d1", d1);  
    pageContext.setAttribute("d2", d2);  
%>  
<fmt:formatNumber value="${d1}" pattern="0.00"/><br/>  
<fmt:formatNumber value="${d2}" pattern="#.##"/>  
  • 4.. function

    • 1) 函数

函数 描述
function

2) 语法

<c:set var="str" value="stringStRiNg"/>  
<c:set var="t" value="tr"/>  
<c:out value="${str} = ${fn:length(str)}"/>  
<c:out value="${fn:toLowerCase(str)}"/>  
<c:out value="${fn:toUpperCase('   ')}"/>  

<c:out value="${fn:substring('asdfefg',0,3)}"/><br>  

<c:out value="${fn:trim(' sd dew e ')}"/><Br>  
<c:out value="d sd dew e"/><Br>  
<c:out value="${fn:replace(str,'ing','IN')}"/><Br>  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值