且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

JSTL应用2

更新时间:2022-08-13 08:26:36

1、<c:if> 标签的使用 

第一种:  

   <c:if   test="条件表达式"   var="变量名" scope="范围"/>         

 第二种: 

<c:if   test="条件表达式"   var="变量名" scope="范围">

程序体

</c:if> 

test如果等于"true"那么执行代码  如果不等于true 那么不执行     

var 是一个 bool型的变量用于保存 条件结果 

scope是一个取值的范围  

下面是一个简单使用代码:

<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib uri="
http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Insert title here</title>
</head>
<body>


<c:if test="${3>1}"  var="aa">
<c:out value="${aa}"></c:out>
</c:if>


</body>
</html> 

2、<c:choose> <c:when>  <c:otherwise> 标签的使用   这个标签相当于java中的 switch语句 

<c:choose>
   <c:when test="${1>2}">    //对test进行赋值的时候 一定要把表达式结果转换为 字符串 
   代码段  

   </c:when>
   <c:when test="${2>1}">
   代码段
   </c:when>
</c:choose>

 

实例代码

<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib uri="
http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<c:choose>
   <c:when test="${1>2}">
   <c:out value="1大于2"></c:out>
   </c:when>
   <c:when test="${2>1}">
   <c:out value="1小于2"></c:out>
   </c:when>
</c:choose>
</body>
</html>

3、<c:forEach>  标签可以迭代 实现了  java.util.Collection接口类  

                                                        以及实现了 java.util.Map接口的 键值对 

                                                         或者数组  

 

<c:forEach>有2种标签

 第一种:

是迭代集合或者键值对  对于迭代次数未知

<c:forEach  items="集合对象的名字要转换成字符串类型"  var="集合中每一个值"    varStatus="当前的状态变量" >

程序体。。。。。

</c:forEach> 

 

varStatus 有四个属性  

first 是否是第一个元素

last 是否是最后一个元素

count  当前迭代的次数 

index表示 当前元素的下标

 

第二种:

<c:forEach  begin="开始的变量大小"   end="结束时候变量的大小" step="步长">    //这个类似于 for循环

循环体 

</c:forEach>

 

第二种比较简单因此我只写出迭代 实例:

<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib uri="
http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%
   String []name={"one","two","three","four","five"}; 
   request.setAttribute("name", name); //java中数组也是引用数据类型
%>
<c:forEach items="${name}" var="currentVar" varStatus="currentStatus">
<c:out value="${currentVar}<br>" escapeXml="false"/>
<c:if test="${currentStatus.first}">
第一个元素<br>
</c:if>
<c:if test="${currentStatus.last}">
最后一个元素<br>
</c:if>
<c:out value="当前元素下标:${currentStatus.count}"></c:out>
</c:forEach>
</body>
</html>

 

4、

<c:forTokens>  可以用来迭代一个字符串 这个字符串有个特点 被多个符号分割开来  

这个标签会自动将分割后的字符串编程一个字符串数组   我们不仅可以迭代输出 也可以进行指定下标的元素输出

用法和 <c:forEach>类似

<c:forEach  items="可拆分的字符串" delims="分隔符号"  [var="保存每次迭代的变量名" ]   [begin="分割后的字符串数组第一个下标"]  [end="分割后字符串数组最后下标"]  

[step="步长"]    [varStatus="迭代状态变量这里和上面的一样"]>

</c:forEach>

 

下面是简单的例子

<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib uri="
http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%
  String str="张三|李四|王五|马六";
  request.setAttribute("strName", str);
%>
<c:forTokens items="${strName}" delims="|" var="myName">
<c:out value="${myName}<br>" escapeXml="false"/>
</c:forTokens>
</body>
</html>

 

 

5、<c:import >标签用来将文本包含到 当前页面  文本可以使动态也可以是静态    如果url是null  或者不存在 那么都会抛出一个JspException异常

<c:import  url="文本的url"    [var="变量"]  [scope="范围"]  [charEncoding="字符编码"]>

<c:import ....> 等子程序

</c:import >

<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib uri="
http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<c:import url="
http://127.0.0.1/1.txt"></c:import>
</body>
</html>

 

6、<c:url  value="跳转的页面路径"  [var="变量接收路径"]  [scope="范围"]/>   不带参数的页面跳转我们可以这样使用

<a href="<c:url value='idnex.jsp'/>">点击去首页</a>

如果带参数那么 就需要有body 

<c:url value="index.jsp" var="go">
 <c:param name="param" value="参数"/>
</c:url>
<c:out value="${go}"/>

相比之下我们可以看到 第二个产生的url是   index.jsp;jsessionid=C1C2E5EAE9F2797E44971A409A1F01D5?param=%b2%ce%ca%fd  带上一个参数 

第一个不带参数的url是 idnex.jsp

 

7、<c:redirect  url="要跳转的网页,不止是本地网络上其他页面也可以"   />      当一个请求到来的时候会自动跳转到指定网页  和  response.sendRedirect(String  url); 类似

       

下面带body的标签是可以重定向页面 并且传递参数过去 

   <c:redirect  url="网页url">  

 <c:param name="param1"  value="value">   

</c:redrect>

   

加入页面时  http://www.baidu.com那么 之后的参数就是

http://www.baidu.com/?param1=555