Java Web

来源:互联网 发布:windows安装centos引导 编辑:程序博客网 时间:2024/06/03 23:00

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>