ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaEE中级.20190613.JSTL的使用. if标签.choose、when和otherwise标签.forEach标签.formatNumber标签.formatDate标签.

2019-06-13 20:56:32  阅读:192  来源: 互联网

标签:标签 formatNumber when item num 格式 otherwise


一.JSTL

      1.JSTL的使用
        1)引入标签库的jar包(每个项目拷贝一次)
               jstl.jar和standard.jar
        2)在jsp页面通过taglib指令导入指定的类库(每个jsp页面需要单独引用)
              <%@taglib uri="要引入的标签库的路径" prefix="标签库的前缀" %>
              前缀可以自定义,程序员习惯设置为指定的前缀名
              core核心库:c
              fmt格式化标签库:fmt 
              注:jstl标签操作的一般都是域对象

      2.  if标签
                 格式:
                       无主体内容:<c:if test="条件" var="限域变量名" scope="域对象的范围 page|request|session|application"></c:if>
                       有主体内容:
                           <c:if test="条件" var="限域变量名" scope="域对象的范围 page|request|session|application">
                                    主体内容
                           </c:if>
                 常用属性:
                        test:判断的条件,返回true或false,操作的是域对象的值;必须要设置的属性
                        var:限域变量名,存在域对象中的变量名,可以通过el表达式获取到该变量名对应的值
                        scope:限域变量名的域范围,四个范围 page|request|session|application 
                 注:if标签没有对应else,所以如果需要做else判断,需要设置两个完全相反的if条件判断

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>if标签</title>
</head>
<body>

 <%
 	request.setAttribute("str", "a");
 	request.setAttribute("str2", "a");
 %>
<%--  <c:if test="${1==1 }" var="flag" scope="request"></c:if> ${flag } <br>
 <c:if test="${1 == '1' }" var="flag2" ></c:if>${flag2 } <br>
 <c:if test="${'1' == '1' }" var="flag3" ></c:if>${flag3 } <br>
 <c:if test="${'a' eq 'a' }" var="flag4" ></c:if>${flag4 } <br>
 <c:if test="${'1==1' }" var="flag5" ></c:if>${flag5 } <br> --%>
 
  <c:if test="${str == str2 }" var="flag6" ></c:if>${flag6 } <br>
  
  <br><br>
  
 <c:if test="${str == str2 }">
 	
 </c:if>

<hr> <br>
<%
	request.setAttribute("num", 80);
%>

<c:if test="${num > 60 && num < 80 }">
	<div style="background-color: blue;">
		<h2>哎哟不错哦!</h2>
	</div>
</c:if>
<c:if test="${num >= 80 }">
	<div style="background-color: green;">
		<h2>你很棒棒哦!</h2>
	</div>
</c:if>
 
 
<hr>
 
<%
	// 获取域对象中的值
	Integer num = (Integer) request.getAttribute("num");
	
	// 条件判断
	if (num < 60) {
%>
	<div style="background-color: purple;">
		<h2>你个渣渣!不及格!</h2>
	</div>
<%		
	} else if (num == 60) {
%>
	<div style="background-color: pink;">
		<h2>分不在高,及格就行!</h2>
	</div>
<%		
	}
%>
</body>
</html>

      3.choose、when和otherwise标签
              格式:
                   <c:choose>
                      <c:when test="条件">
                          满足条件会执行的内容
                      </c:when>
                      <c:when test="条件">
                          满足条件会执行的内容
                      </c:when>
                      ...
                     <c:otherwise>
                          当所有的when条件不成立时,才会执行的内容
                     </c:otherwise
                  </c:choose>
              注意:
                  1)choose标签中只能包含when和otherwise标签,而when和otherwise标签中可以嵌套其他标签
                        报错:Illegal child tag in "c:choose" tag
                  2)choose和otherwise标签没有属性,而when标签必须设置test属性
                  3)choose标签中至少有一个when标签,可以没有otherwise标签
                  4)when标签必须设置在otherwise标签之前
                  5)otherwise标签只有在所有的when标签都不成立的条件下,才会执行

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>choose</title>
</head>
<body>
<%
	request.setAttribute("num", 80);
%>

<c:choose>
	<c:when test="${num < 60 }">
		<h3>不及格!</h3>
	</c:when>
	<c:when test="${num == 60 }">
		<h3>运气不错!</h3>
	</c:when>
	<c:when test="${num > 60 && num < 80 }">
		<h3>哎哟不错哦!</h3>
	</c:when>
	<c:otherwise>
		<h3>你很棒棒哦!</h3>
	</c:otherwise>
</c:choose>

</body>
</html>

      4.  forEach标签
                格式:
                       1)遍历内容多次,相当于java中   for(int i = 0; i < length; i++) {}
                            <c:forEach begin="开始数" end="结束数" var="限域变量名" step="间隔数">
                               ${限域变量名}
                            </c:forEach>
                       2)迭代集合,相当于java中的   for(String str : strings) {}
                             <c:forEach items="要被迭代的数据(List、Map等)" var="限域变量名" varStatus="当前成员的相关信息">
                                ${限域变量名}
                            </c:forEach>

<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="com.shsxt.model.User"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>forEach标签</title>
</head>
<body>
 <%
 	List list = new ArrayList();
	for (int i = 0; i < 10; i++) {
	 	list.add("A:" + i);
    }
	request.setAttribute("mylist", list);
	
	List<User> userList = new ArrayList<>();
	User user = new User();
	user.setUserId(1);
	user.setUserName("zhangsan");
	user.setUserPwd("123455");
	User user2 = new User();
	user2.setUserId(2);
	user2.setUserName("lisi");
	user2.setUserPwd("123123");
	User user3 = new User();
	user3.setUserId(3);
	user3.setUserName("wangwu");
	user3.setUserPwd("34667");
	userList.add(user);
	userList.add(user2);
	userList.add(user3);
	request.setAttribute("userList", userList);
	
	for(User u : userList) {
		
	}
	
	
	Map<String,Object> map = new HashMap<String,Object>();
	map.put("map1", "shsxt");
	map.put("map2", "bjsxt");
	map.put("map3", "sxt");
	map.put("map4", 12);
	request.setAttribute("map", map);
 
 %>
 <h3>迭代集合</h3>
 <c:forEach items="${mylist }" var="item">
 	${item }
 </c:forEach>
 <br>
 <c:forEach items="${userList }" var="item">
 	${item } -- ${item.userId } -- ${item.userName } -- ${item.userPwd }  <br>
 </c:forEach>
 <br>
<table border="1" style="border-collapse: collapse;width:800px">
	<tr>
		<th>用户ID</th>
		<th>用户姓名</th>
		<th>用户密码</th>
		<th>下标</th>
		<th>第几次被循环到</th>
		<th>是否属第一个被循环的</th>
		<th>是否属最后一个被循环的</th>
	</tr>
	<c:forEach items="${userList }" var="item" varStatus="itemp">
		<tr>
			<td>${item.userId }</td>
			<td>${item.userName }</td>
			<td>${item.userPwd }</td>
			<td>${itemp.index }</td>
			<td>${itemp.count }</td>
			<td>${itemp.first }</td>
			<td>${itemp.last }</td>
		</tr>
 	</c:forEach>
</table>
 <hr>
<h3>迭代Map</h3>
<c:forEach items="${map }" var="item">
	键:${item.key } -- 值:${item.value } <br>
</c:forEach>  
 <hr>
 <h3>循环内容多次</h3>
 <table border="1" style="border-collapse: collapse;">
 	<c:forEach begin="1" end="9" var="i" step="1">
 		<tr>
 			<c:forEach begin="1" end="${i }" var="j" step="1">
 				<td>${j } * ${i } = ${j*i }</td>
 			</c:forEach>
 		</tr>
 	</c:forEach>
 </table>

<hr>
<table border="1" style="border-collapse: collapse;">
	<%
		for(int i = 1; i < 10; i++ ) {
	%>
		<tr>
	<%		
			for(int j = 1; j <= i; j++) {
	%>
			<td>
				<%=j %> * <%=i %> = <%=j*i %>
			</td>
	<%			
			}
	%>
		</tr>
	<%
		}
	%>
</table>	
</body>
</html>

      5.  formatNumber标签
                 格式:
                       无主体内容:
                         <fmt:formatNumber value="要被格式化的值" type="格式化的类型number|percent|currency" var="限域变量名" />
                             有主体内容:
                        <fmt:formatNumber type="格式化的类型number|percent|currency" var="限域变量名">
                             要被格式化的值
                        </fmt:formatNumber>
                      type属性的默认值是number        
                    注:如果设置了var属性,格式化后的结果会被限域变量名所接收;若未设置var属性,则格式化的结果会直接显示。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>formatNumber标签</title>
</head>
<body>

 <%
 	request.setAttribute("num", "100");
 %>
 <fmt:formatNumber value="${num }" type="number" /> <br>
 <fmt:formatNumber value="${num }" type="number" var="val" /> ${val } <br>
 
 <fmt:formatNumber>
 	${num }
 </fmt:formatNumber>
 <br>
  <fmt:formatNumber var="val2">
 	${num }
 </fmt:formatNumber>
 ${val2 } <br>
 
 <fmt:formatNumber type="currency">
 	${num }
 </fmt:formatNumber><br>
 <fmt:formatNumber type="percent">
 	${num }
 </fmt:formatNumber><br>
 
 <!-- 设置区域 -->
 <fmt:setLocale value="en-US"/>
  <fmt:formatNumber type="currency">
 	${num }
 </fmt:formatNumber><br>
</body>
</html>

      6. formatDate标签
              <fmt:formatDate value="要格式化的日期型数据" type="日期类型|时间类型|日期+时间类型" dateStyle="日期的格式"                         timeStyle="时间的格式" pattern="具体的格式" var="限域变量名"/> 
           常用属性:
                   value:取值的是日期型
                   type:格式的类型
                   date日期格式 默认值
                   time时间格式
                   both日期+时间格式
                   dateStyle:日期格式的具体格式 Long、short、Full等
                   timeStyle:时间格式的具体格式Long、short、Full等
                   pattern:具体的格式化格式  y M d H m s
                   注:如果设置了var属性,格式化后的结果会被限域变量名所接收;若未设置var属性,则格式化的结果会直接显示。

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>formatDate标签</title>
</head>
<body>
<%
	request.setAttribute("myDate", new Date());
%>
${myDate } <br>
<fmt:formatDate value="${myDate }"/><br>
<fmt:formatDate value="${myDate }" type="date" var="date1"/> ${date1 }<br>
<fmt:formatDate value="${myDate }" type="time" /> <br>
<fmt:formatDate value="${myDate }" type="both" /> <br>
<fmt:formatDate value="${myDate }" type="both" dateStyle="Long" timeStyle="Long"/> <br>
<fmt:formatDate value="${myDate }" pattern="yyyy-MM-dd HH:mm:ss"/> <br>
<fmt:formatDate value="${myDate }" pattern="yyyy/MM/dd HH:mm:ss"/> <br>
<fmt:formatDate value="${myDate }" pattern="dd/MM/yy HH:mm:ss"/> <br>
</body>
</html>

      7. parseNumber标签
                  利用 parseNumber 标签可以将数字、货币或百分比的字符串表示法解析成指定语言环 境的数字。即解析一个代表着数字,货币或百分比的字符串。
                 <fmt:parseNumber type="需要被格式化的字符串的类型number|percent|currency">
                      要格式化的指定格式的字符串
                </fmt:parseNumber>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>parseNumber标签</title>
</head>
<body>

 <%
 	request.setAttribute("num", "10");
 	request.setAttribute("num2", "10%");
 	request.setAttribute("num3", "¥10.00");
 %>
 <fmt:parseNumber type="number">
 	${num }
 </fmt:parseNumber>
 <br>
 <fmt:parseNumber type="percent">
 	${num2 }
 </fmt:parseNumber>
 <br>
 <fmt:parseNumber type="currency">
 	${num3 }
 </fmt:parseNumber>
 <br>
</body>
</html>

      8.parseDate标签
          <fmt:parseDate type="date|time|both" pattern="日期字符串对应的格式"></fmt:parseDate>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>parseDate标签</title>
</head>
<body>
 <%
 	request.setAttribute("date1", "2018-05-05 12:45:54");
 	request.setAttribute("date2", "12:45:54");
 	
 	request.setAttribute("date3", "03/12-2019");
 %>
 
 <fmt:parseDate>
 	${date1 }
 </fmt:parseDate>
 <br>
  <fmt:parseDate type="time">
 	${date2 }
 </fmt:parseDate>
 <br>
   <fmt:parseDate type="both">
 	${date1 }
 </fmt:parseDate>
 <br>
 
  <br>
 <fmt:parseDate pattern="MM/dd-yyyy">
 	${date3 }
 </fmt:parseDate>
 <br>
 
</body>
</html>

 

标签:标签,formatNumber,when,item,num,格式,otherwise
来源: https://blog.csdn.net/LiangEdward/article/details/91890033

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有