Java标准标签库(JSTL)

JSTL(Java Standard Tag Library) –Java标准标签库

JSTL组成:

JSTL –Core 核心标签库。 - 这是本部分的重点
JSTL – I18N - 国际化标签库。Internationalization-    I18N
JSTL – SQL – 数据库操作标签(有悖于MVC设计模式不用不讲)。
JSTL - Functions – 函数库。
JSTL - XML ,对XML的操作(同SQL标签)。在jstl-1.2.jar包的META-INF目录中,
保存着各种tld文件的版本。请查看。

使用JSTL核心标签:
如果你的Web项目是基于JavaEE2.5或以上的。可以在你项目的任意页面上
通过<%@ taglib 指令使用JSTL的核心标签库。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
uri是引用标签库的资源定位符,并不代表一个实际的地址。
Prefix是自定义的前缀。
如果你的项目是JavaEE2.5以下的项目,必须在在你项目中的lib目录下,
存在以下两个jar文件为:
Jstl.jar、standard.jar

具体使用:

JSTL-Core一共包含以下几个子标签:
<c:out>  ${name}输出标签
<c:set>   pageContext.setAttirbute(key,value,scope);声明标签
c:remove删除某个范畴内的数据
<c:if> 判断c:else,c:elsfif
<c:choose><c:when><c:otherwise> 判断分枝c:if,c:else if c:
<c:forEach> 遍历
<c:forTokens> 分隔
<c:import> 导入其他资源,相当于动态包含共享同一个request
<c:url>  - 重写url
<c:redirect> 重定向  response.sendRedirect(‘’..)


下面对具体的操作进行解释与演示:

<c:out>    

<c:out  value=…/>用于在页面上输出结果。
<c:out value=“${requestScope.name}”/> -将request中的name值输出
<c:out value=“${param.username}”/> - 用于将参数输出到页面上。
<c:out value=“${name}” default=“hello”/>从page到application开始查找,

如果没有找到,就显示默认值hello.
另一种设置默认值的方式:

<c:out value=“${name}”>
			Default-value-默认值。
		</c:out>

只有当要求的信息为null或不存在时才会输出默认值。
excapeXml属性:默认值为true,用于将html等标签转换成&lt;等转换元素,示例:
 
<%
     String name="<font color='red'>Red</font>";
      pageContext.setAttribute("name",name);
  %>
<c:out value=“${name}” escapeXml=“false”></c:out> 不对xml或html进行转换,直接输出,这样就会在页面上看到红色的Red字符,因为浏览器会解析html数据。

<%
   		pageContext.setAttribute("name", "jack_P");
   		request.setAttribute("name", "jack_R");
   		request.setAttribute("name2", "<font color='red'>你好,中国</font>");
   		 %>
   		 ${name }  //从小范围到大开始查找<br/>
   		<c:out value="${name }"></c:out>  -------输出标签
   		 <hr/>
<!-- c:out标签一定会让所显示的内容原样输出,避开html的解析 -->
${name2 }<br/>    可以解析html语言<br/>
<c:out value="${name2 }"></c:out> -------不可以解析html语言,原样输出

<c:set>

<c:set/>标签的作用如下:

为String类型的命名变量设置值。
<c:set var=“变量名” value=“变量的值” scope=“page|request|session|application”/>
<c:set var=“name” value=“${param.name}”/>直接从参数中取出数据给name赋值。
如果变量为JavaBean则为这个JavaBean的属性设置值。
<c:set target=“JavaBean的变量名” property=“设置的属性” value=“值”/> 
示例:
<jsp:useBean id="person" class="cn.itcast.Person"></jsp:useBean>
 <c:set target="${pageScope.person}" property="name" value="Jack"/>
 <c:set target="${pageScope.person}" property="age" value="99"/>
如果变量为Map则,给Map中的key设置值。
<c:set target=“代表Map的变量” property=“key” value=“value”/>,示例:
<jsp:useBean id="map" class="java.util.HashMap" scope="request"></jsp:useBean>
  <c:set target="${requestScope.map}" property="name" value="Jack"/>
  <c:out value="${requestScope.map.name}"/>
为String类型的命名变量设置值。
<c:set var=“变量名” value=“变量的值” scope=“page|request|session|application”/>
<c:set var=“name” value=“${param.name}”/>直接从参数中取出数据给name赋值。
如果变量为JavaBean则为这个JavaBean的属性设置值。
<c:set target=“JavaBean的变量名” property=“设置的属性” value=“值”/> 
示例:
<jsp:useBean id="person" class="cn.itcast.Person"></jsp:useBean>
 <c:set target="${pageScope.person}" property="name" value="Jack"/>
  <c:set target="${pageScope.person}" property="age" value="99"/>
如果变量为Map则,给Map中的key设置值。
<c:set target=“代表Map的变量” property=“key” value=“value”/>,示例:
<jsp:useBean id="map" class="java.util.HashMap" scope="request"></jsp:useBean>
 <c:set target="${requestScope.map}" property="name" value="Jack"/>
 <c:out value="${requestScope.map.name}"/>

	 		 <!-- c:set标签可以设置变量的值  scope默认放在page容器当中-->
   		 <c:set var="a" value="jack中国"></c:set>
   		 ${a } <br/>
   		 <!-- 指定范围以后,需要从指定范围去取,不然会自动从小到大开始查找 -->
   		 <c:set var="a" value="jack中国2" scope="request" ></c:set>
   		 ${requestScope.a } <br/>
   		 <hr/>
   		 

<c:if>

<c:if/>用于实现Java语言中的if语句。它的语法如下:
<c:if test=“逻辑表达式”   var=“代表逻辑表达式值的命名变量”  scope=../>
示例:
<c:if test=“${name!=‘Jack’}”>
       当name的值为Jack时输出此行信息
</c:if>
上面的判断等价于下面的代码片段:
if(pageContext.getAttribute(“name”)!=null && !..equals(“Jack”)){
out.println(“…..”);
}

 <hr/>
   		 <c:set var="age" value="20">
   		 </c:set>
   		 <c:if test="${age>25 }" var="aa">
   		 	<h2>比25大咯!!</h2>
   		 </c:if>
   		 <c:if test="${!aa }">
   		 	<h3>比25小咯!!</h3>
   		 </c:if>
   		 <hr/>

choose,when,otherwise

这几个标签共同使用可以实现Java中的if…else语句的功能。
<c:choose>
  <c:when test="${empty param.name}">
  用户没有输入name参数
  </c:when>
  <c:when test="${param.name=='Admin'}">
  ${param.name}是管理员
  </c:when>
  <c:otherwise>
  用户是:${param.name}
  </c:otherwise>
  </c:choose>
使用c:when必须遵循以下语法规则:
<c:when/>和<c:otherwise/>不能单独使用,它必须位于<c:choose内。
<c:otherwise/>必须位于c:when之后。

   		 <c:set var="age" value="-18"></c:set>
   		 <c:choose>
   		 	<c:when test="${age>20 }">
   		 		大于20!!
   		 	</c:when>
   		 	<c:when test="${age>10 }">
   		 		大于10!!
   		 	</c:when>
   		 	<c:when test="${age<10 }&&${age>0 }">
   		 		小于于10!!
   		 	</c:when>
   		 	<c:otherwise> 
   		 		这就是属于其他的了 。。。
   		 	</c:otherwise>
   		 </c:choose>
   		 <hr/></span>

<c:remove>移除某个标签

 <hr/>
   		 <!-- 移除属性 c:remove  默认是从pageScope中移除-->
   		 <c:remove var="a" scope="request"/>
   		  aaa ${requestScope.a }
   		 <hr/>

<c:ForEach>迭代标签

forEach用于遍历集合中的对像。
基本语法:
<c:forEach var=“迭代变量” item=“${集合名称}” varStatus=“迭代下标变量”>
       迭代部分
</c:forEach>
forEach的begin(开始索引)、end(结束索引)、step(步长)属性:
<c:forEach begin=0 end=10 step=“2”>…</c:forEach>将输出0,2,4,6,810

 <hr/>
   		 <!--  c:forEach  增强for循环 -->
   		 <!-- 普通版本 -->
   		 <c:forEach begin="0" end="10" var="x" step="2">
   		  	${x } <br/>
   		  </c:forEach>
   		   <hr/>
   		 <%
   		 String[] a={"小王","晓明	","小杨","新哥"};
   		 request.setAttribute("a", a);
   		  %>
   		  <c:forEach items="${requestScope.a }" var="i">
   		  	${i }<br/>  <!-- 一定要注意取值的范围 -->
   		  </c:forEach>
   		 <hr/>
   		<!-- 演示list用jstl -->
   		<%
   		List<String> list=new ArrayList<String>();
   		list.add("123a");
   		list.add("123d");
   		list.add("123b");
   		list.add("123c");
   		list.add("123e");
   		list.add("大新哥");
   		session.setAttribute("list", list);//后面用el表达式取得是参数
   		
   		 %>
   		 <c:forEach items="${sessionScope.list }" var="li">
   		 	${li } <br/>
   		 </c:forEach>
   		 <hr/>
 		 
   		 
   		 <!-- 采用map的方式演示jstl -->
   		 <%
   		 //演示map采用el表达式
   		 Map<String,Object> map=new HashMap<String,Object>();//存储以hash值存储
   		 map.put("aa", 123);
   		 map.put("cc", 567);
   		 map.put("bb", 345);
   		 map.put("dd", 789);
   		 application.setAttribute("map", map);
   		  %>
   		  <c:forEach items="${ applicationScope.map}" var="mm" varStatus="idx">
   		  	${mm.key }  ${mm.value }<br/> ${idx.index } ${idx.count }
   		  </c:forEach>
   		 <hr/>
   		 <hr/>

<c:forTokens>对字符进行分割,以某某分割

<!-- 分割字符串,相当于split() -->
   		 <c:forTokens items="aa,bb,cc,dd,ee,ff" delims="," var="x">
   		 	${x }
   		 </c:forTokens>
   		 <hr/>

其他标签

<c:import/>包含其他web资源,功能类似与<jsp:include/>(动态包含)。
<c:import url=“web资源”/>
<c:url/>按特定的方式重写URL。
<c:url value=“/aaa.jsp”/>总是以/开头,如果只使用value属性为直接使用或输出。
<c:url value=“/…” var=“someVar” scope=“…”/>也可以通过这样的方式将重写
的url放到某个范围中,然后再取出来使用。


<c:redirect/>负责重定向。
<c:redirect url=“重定向到的资源”/>
在使用<c:redirect时可以带更多的参数:
<c:redirect url=“/…”>
     <c:param name=“someName” value=“someValue”/>
</c:redirect>
 <!-- c:url -->
   		 <a href="<c:url value="/Servlet"></c:url>">调转到土豪界面</a>
   		 
  <%-- 
   		 <c:redirect url="/Servlet"></c:redirect>
   		--%>
   		 <a href="<c:url value='/jsps/jstldemo2.jsp'></c:url>">利用css+jstl技术进行演示</a>
   		 <hr/>

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值