EL表达式和JSTL

EL表达式

EL表达式和基本语法

  • EL表达式:Expression Language表达式语言
  • 目的:简化jsp中java代码开发,代替脚本表达式<%=username%>
  • 它不是一种开发语言,是jsp中获取数据的一种规范
  • 格式如: ${EL表达式} 等价于<%=pageContext.findAttribute(name)%>

EL的具体功能

获取简单数据

  • 代码如下:
  ${username}

获取实体类对象中的属性值

  • 代码如下:
  ${user.address.addr }

使用List和Map集合

  • 代码如下
<h1>1.以数组的下标形式获取list值</h1>
${list[0]}<br>
${list[1]}<br>
${list[2]}<br>
<h1>2.以提供的方法get(index)</h1>
${list.get(0)}

<h1>3.使用El表达式获取map中的值(以key的形式获取)</h1>
${map.aa}<br>
${map.bb}<br>
${map.cc}<br>
<h1>4.使用El表达式获取map中的值</h1>
${map['aa']}

使用EL表达式执行运算、empty关键字

  • 代码如下
	<!--算术运算-->
	${10+20 }<br/>
	${10-20 }<br/>
	${10*20 }<br/>
	${3%5}<br/>

	<!--关系运算-->
	${10==9 }<br/>
	${"abc"=="abc" }<br/>
	${s1==s2 } equals<br/>
	${s1 eq s2 }<br/>
	${10>20}<br/>
	${10 gt 20}<br/>
	${5 < 10}<br/>
	${5 lt 10}<br/>
	${5 != 10}<br/>
	${5 ne 10}<br/>
	
	<!--三目运算-->
	${score>80?"优秀":"一般" }<br/>  
	${flag==0?"没有激活":flag==1?"激活":"删除" }<br/>  
	${sex==0?"男":"女" }<br/>  
	
  <!--逻辑运算-->
	${true && false}<br/> 
	${true || false}<br/> 
	${!true}<br/> 
	${true and  false}<br/> 
	${true or false}<br/> 
	${not true}<br/> 

	<!-- empty关键只要内容是空true -->
	${empty s1}<br>
	${empty  list1}<br>

隐式对象(11个)

  • JSP 表达式语言定义了一组隐式对象,其中许多对象在 JSP servlet和表达式中可用:
  • pageContext:页面上下文,可以获取jsp中其他八个内置对象
  • pageScope、requestScope、sessionScope、applicationScope表示四个域对象中集合
  • param 表示request.getParameter(“username”); ${param.username}
  • paramvalues 表示request.getPrameterValues(“hobby”); ${paramValues.hobby}
  • header 表示 request.getHeader(“accept”); ${header.accept};
  • headerValues 表示 request.getHeaderValues(“accept-encoding”); ${headerValues[“accept-encoding”][0]}
  • cookie 表示 request.getCookies(); ${cookie.JSESSIONID}
  • initParam 表示 ServletContext(application)初始化参数

JSTL

什么是JSTL

  • JSTL:全称Java Server Pages Standard Tag Library,JSP标准标签库,代替jsp页面的脚本,实现逻辑控制。

JSTL的作用

  • 实现JSP页面中逻辑处理。如判断,循环等;

使用JSTL

  • 必须在JSP页面添加tablib指令库
  • 下载JSTL库,https://archive.apache.org/dist/tomcat/taglibs/
  • jstl.jarstandard.jar放入WEB-INF/lib目录下
  • 代码示例:
  <% @taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c">

常用标签介绍

通用标签set,out,remove

  • 代码示例:
  <!-- 基础标签:声明变量,输出变量,移除变量,变量默认值 -->
	<h3>基础标签:声明变量,输出变量,移除变量,变量默认值</h3>
  <!--1.声明变量k   var:是变量名  value:变量的值(必须是EL表达式)-->
	<c:set var="k" value="${1+1}"></c:set>
  <!--2.输出变量k   value:使用EL表示表示变量-->
	移除前输出的内容:<c:out value="${k}"></c:out><br>
  <!--3.移除指定变量  -->	
	<c:remove var="k"/>
	移除后输出的内容:<c:out value="${k}"></c:out><br>
  <!--4.给指定变量赋默认值  -->
	默认值:<c:out value="${m}" default="123456"></c:out>

条件标签if,choose

  • 代码示例:
  <!-- 条件标签:if  choose -->
  <!-- test属性中是条件,但是条件需要使用EL表达式来书写 -->
  <h3>条件标签:if</h3>
  <c:if test="${8>2 }">
      8大于2是成立的
  </c:if>
  <!--  如果只是一个基本数据类型直接书写不需要${} -->
  <c:set var="m" value="5"></c:set>
  <c:if test="${m>3}">
      5大于3是成立的
  </c:if>
  <!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
  <h3>条件标签:choose(等价于java中switch)</h3>
  <!-- 测试成绩等级 >90 优秀   >80  良好    >70 中等   >60及格-->
  <c:set var="score" value="80"></c:set>
  <c:choose>
      <c:when test="${score>=90 }">优秀</c:when>
      <c:when test="${score>=80 }">良好</c:when>
      <c:when test="${score>=70 }">中等</c:when>
      <c:when test="${score>=60 }">及格</c:when>
      <c:otherwise>不及格</c:otherwise>
  </c:choose>

迭代标签foreach

  • 代码示例:
  <!-- 遍历for:输出1到10 的值 -->
	<!--var: 变量,把遍历的每一个值都存储在变量中进行输出
   begin:开始   如果是变量使用EL表达式表示
   end:结束    如果是变量使用EL表达式表示
   step:间隔的长度
  -->
  <c:forEach var="i" begin="1" end="10" step="2">
      ${i}<br>
  </c:forEach>
  <h3>测试list集合遍历获取学生列表</h3>
  <table border="1" width="80%" bordercolor="red" cellspacing="0" align="center">
  <tr>
      <th>学号</th>
      <th>姓名</th>
      <th>成绩</th>
      <th>班级</th>
      <th>是否是第一个</th>
      <th>是否是最后一个</th>
      <th>计数count</th>
      <th>索引index</th>
  </tr>
  <!-- varStatus:变量状态:遍历出的每一项内容的状态:
      isFirst()      first 第一个元素
      isLast()       last  最后一个元素
      getCount()     count 计数  重要的
      getIndex()     index 索引
  -->
  <!-- var :遍历出的每一项使用变量先存储
      items:集合(使用El表达式)
  -->
  <c:forEach var="stu" items="${students}" varStatus="vs">
      <tr>
          <td>${stu.id}</td>
          <td>${stu.name}</td>
          <td>${stu.score}</td>
          <td>${stu.classes}</td>
          <td>${vs.first}</td>
          <td>${vs.last}</td>
          <td>${vs.count}</td>
          <td>${vs.index}</td>
      </tr>
  </c:forEach>
  </table>

url标签

  • 语法:
  <c:url var="" value="">
  • 代码举例:
  <c:url var="loc" value="/stu.jsp">
      <c:param name="username" value="张三"></c:param>
  </c:url>

  <a href="${loc}">学生列表</a>


转载请注明:Memory的博客 » 点击阅读原文

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦