JSTL与EL表达式

JSTL与EL表达式

  • JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段。
  • EL是指Expression Language简称:主要用于查找作用域中的数据,然后对它们执行简单操作
  • JSTL(JSP Standard Tag Library,JSP标准标签库)
  • 作用是能够减少我们在jsp中写java代码

核心标签
格式化标签

  • 使用JSTL, javaEE1.4平台则必须引用jstl.jar和 standard.jar两个包;(eclipse必须要导包)

EL表达式

1.概念以及作用

  • 概念:EL是指Expression Language简称
  • 作用:主要用于查找作用域中的数据,然后对它们执行简单操作

EL是取值用的,会从page、request、session、application
基本用法:${name}
标准写法: ${变量名}

代码展示:

<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="cn.gok.User"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<!--  el 表达式  作用 : 存取作用域里面的值 还可以进行一些操作  -->
	<!--  标准写法 ${变量名} -->
	<%
		//普通变量
		request.setAttribute("name", "ccgok");
		//存一个对象
		User u = new User();
		u.setName("uanme");
		request.setAttribute("u", u);//怎么获取他的名字 
		Map<String, String> map = new HashMap<>();
		map.put("aaa", "aaavalue");
		request.setAttribute("map", map);
		//
	%>
	<%-- ${name} --%>
	<%-- ${u.name}   [默认是从request  request没有 回去session sesison 没有 再去 application]
	 --%>
	<!-- 也可以用中括号 但是属性要加引号  ${u["name"]} 获取名字是u这个对象的name属性-->
	<%-- ${u["name"]} --%>
	<!--  获取map的某个value的时候 必须使用中括号 -->
	${map["aaa"] }
	<!--  el的 非空判断 ${empty 变量名 }  空就返回true  非空就false-->
	${empty  u}
	<!--  亦可以在查找的时候 指定作用域 -->
	${sessionScope.map["aaa"] }
</body>
</html>

2.运算符

  1. 算术运算符 +、-、*、/(或 div)和 %(或 mod)
  2. 关系运算符 ==(或eq)、!=(或ne)、<(或lt)、>(或gt)、<=(或le) 和 >=(或ge)
  3. 逻辑运算符 &&(或 and)、||(或or)和 !(或 not)
  4. 验证运算符(重要)
    ${empty name}

JSTL

概念以及作用
概念
JSTL(JSP Standard Tag Library,JSP标准标签库)
作用
能够减少我们在jsp中写java代码
怎么使用?
JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段。
1导入包

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>

2在jsp页面前进入

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

JSP的标签分为核心标签和格式标签
Core的操作作用域变量标签

  • 输出 out 用于输出,value 输出的值
<c:out value="11111"></c:out>
  • 设置变量 set var=""
<c:set var="aaa" value="1111" ></c:set>
  • 移除变量 remove var=""
<c:remove var="aaa"/>

代码展示:

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!--  导入 jstl那句话  prefix 是前缀  uri 该标签库的地址 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<%-- 获取输出作用域中变量.
<c:out >      属性: value [default] [escapeXml] 
定义作用域中变量
<c:set >      属性: value var [scope]
删除作用域中变量
<c:remove >   属性: var [scope] --%>
	<%
		//普通变量
		request.setAttribute("name", "ccgok");
		//
	%>
	<c:out value="11111"></c:out>
	还可以输出el表达式中的值
	<br>
	<c:out value="${name }"></c:out>
	<!-- 变量名字用的var   -->
	<c:set var="aaa" value="1111" ></c:set>
	<br>
	<!-- 删除作用域中变量 -->
	<c:remove var="aaa"/>
	<c:out value="${aaa}"></c:out>
</body>
</html>

Core的条件控制标签

if
单分支 <c:if>

<%
		request.setAttribute("ii", 10);
	%>
	<!-- c:if test="" test跟条件 条件满足就执行if里面的东西 判断的条件要写在${} -->
	<c:if test="${ii>3}">输出10大于3</c:if>
	<c:if test="${empty ii}">null</c:if>

多分支 <c:choose><c:when> <c:otherwise>

<!-- <if else if() else if() -->

	<c:choose>
		<c:when test="${ii <= 0}">
       太惨了。
    </c:when>
		<c:when test="${ii > 1000}">
       不错的薪水,还能生活。
    </c:when>
		<c:otherwise>
        什么都没有。
    </c:otherwise>
	</c:choose>

整体代码展示:

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!--  导入 jstl那句话  prefix 是前缀  uri 该标签库的地址 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<%
		request.setAttribute("ii", 10);
	%>
	<!-- c:if test="" test跟条件 条件满足就执行if里面的东西 判断的条件要写在${} -->
	<c:if test="${ii>3}">输出10大于3</c:if>
	<c:if test="${empty ii}">null</c:if>
	<!-- <if else if() else if() -->

	<c:choose>
		<c:when test="${ii <= 0}">
       太惨了。
    </c:when>
		<c:when test="${ii > 1000}">
       不错的薪水,还能生活。
    </c:when>
		<c:otherwise>
        什么都没有。
    </c:otherwise>
	</c:choose>
</body>
</html>

循环(重要) <c:forEach>

<!--  c:foreach 用来遍历集合或者数组的   items 要遍历的集合  var每次遍历得到的数据 -->
	<c:forEach items="${arr}" var="a">
		<c:out value="${a }"></c:out>
	</c:forEach>

<c:forEach> 属性:var,items,varStatus,begin,end,step

<%
		request.setAttribute("i", 11);
		int[] array = { 1, 2, 3, 4, 5 };
		request.setAttribute("arr", array);
		List<String> lists = new ArrayList<>();
		lists.add("a");
		lists.add("b");
		lists.add("c");
		request.setAttribute("lists", lists);
	%>
 
 <!--  c:foreach 用来遍历集合或者数组的   items 要遍历的集合  var每次遍历得到的数据 -->
	<c:forEach items="${arr}" var="a">
		<c:out value="${a }"></c:out>
	</c:forEach>
	<br>
	<!-- varStatus 只是varStatus作用域变量中存的是包括运行状态的对象;此对象包含如下属性:
current  index(当前元素的下标)  count  first  last  begin  end  step
		 -->
	<c:forEach items="${lists }" var="i" varStatus="o">
		<c:out value="${i } "></c:out>
		<c:out value="${o.index } "></c:out>
	</c:forEach>
	
	<!-- foreach  写一个简单的循环  (用的不多)-->
	<c:forEach begin="0" end="10"  step="3">
		<c:out value="11111,"></c:out>
	</c:forEach>

整体代码展示:

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!--  导入 jstl那句话  prefix 是前缀  uri 该标签库的地址 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<%
		request.setAttribute("i", 11);
		int[] array = { 1, 2, 3, 4, 5 };
		request.setAttribute("arr", array);
		List<String> lists = new ArrayList<>();
		lists.add("a");
		lists.add("b");
		lists.add("c");
		request.setAttribute("lists", lists);
	%>
	<!--  跟java的 if  else if(条件) else -->
	<c:choose>
		<c:when test="${i==10 }">==10</c:when>
		<c:when test="${i>10 }">大于10</c:when>
	</c:choose>
	<c:choose>
		<c:when test="${i<= 0}">太惨了。</c:when>
		<c:when test="${i > 1000}">不错的薪水,还能生活。</c:when>

	</c:choose>
	<br>
	<!--  c:foreach 用来遍历集合或者数组的   items 要遍历的集合  var每次遍历得到的数据 -->
	<c:forEach items="${arr}" var="a">
		<c:out value="${a }"></c:out>
	</c:forEach>
	<br>
	<!-- varStatus 只是varStatus作用域变量中存的是包括运行状态的对象;此对象包含如下属性:
current  index(当前元素的下标)  count  first  last  begin  end  step
		 -->
	<c:forEach items="${lists }" var="i" varStatus="o">
		<c:out value="${i } "></c:out>
		<c:out value="${o.index } "></c:out>
	</c:forEach>
	
	<!-- foreach  写一个简单的循环  (用的不多)-->
	<c:forEach begin="0" end="10"  step="3">
		<c:out value="11111,"></c:out>
	</c:forEach>
	
</body>
</html>

在JSP中使用format标签

格式化数字

格式化时间

<%
		request.setAttribute("date", new Date());
		request.setAttribute("num", 100.123214);
	%>
	<!-- f:formatDate 格式化时间   value  要格式化的值 pattern 格式化字符串 -->
	<f:formatDate value="${date }" pattern="yyyy/MM/dd HH:mm:ss" />
	<!--  .## 表示保留三位小数 -->
	<f:formatNumber value="${num}" pattern=".##"></f:formatNumber>
发布了81 篇原创文章 · 获赞 25 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_43090158/article/details/98942923