JSP、EL表达式、JSTL标签

目录

一、JSP

1、指令

2、注释

3、内置对象

二、EL表达式

1、概念和作用

2、语法

3、忽略EL表达式

4、EL 表达式的使用

三、JSTL 标签

1、if 标签

2、choose 标签

3、 foreach 标签


一、JSP

1、指令

【1】作用

  • 用于配置JSP页面,导入资源文件

【2】格式

  • <%@  指令名称  属性名1=属性值1  属性名2=属性值2  .....  %>

【3】分类

  • page:配置JSP页面的
    • contenType:等同于response.setContentType()
      • 设置响应体的mime类型以及字符集
      • 设置当前JSP页面的编码(高级IDE,如果是低级编译器,需要设置 pageEncoding 属性来设置字符集)
    • import:导包
    • errorPage:当前页面发生异常后,会自动跳转到指定的错误提示页面
    • isErrorPage:标识当前页面是否为错误页面
      • true:是,可以使用内置对象 exception
      • false:否,默认值,不可以使用内置对象 exception
  • include:页面包含的,导入页面资源文件
    • <%@include  file="top.jsp"%>
  • taglib:导入资源
    • <%@  taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>

2、注释

  • <!--  -->:只能注释HTML代码片段
  • <%--  --%>:可以注释所有代码片段

3、内置对象

在JSP页面中不需要创建,可以直接使用的对象称为内置对象,一共有 9 个内置对象

变量名真实类型作用
pageContextPageContext当前页面共享数据,可以获取其他 8 个对象
requestHttpServletRequest一次请求访问的多个资源(转发)
sessionHttpSession一次会话的多个请求
applicationServletContext所有用户间数据共享
responseHttpServletResponse响应对象
pageObject当前页面(Servlet)对象
outJspWrite输出对象,输出数据到页面上
configServletConfigServlet的配置对象
exceptionThrowable异常对象

二、EL表达式

1、概念和作用

  • Expression Language(表达式语言),主要用来替换和简化JSP页面中的java代码

2、语法

  • ${表达式}

3、忽略EL表达式

  • 设置JSP中page指令:isElignored="true"  忽略JSP中所有的 EL 表达式
  • \${表达式}:忽略当前的EL表达式

4、EL 表达式的使用

【1】运算符

  • 算数运算符:+    -    *    /(div)    %(mod)
  • 比较运算符:>    <   >=    <=    ==    !=
  • 逻辑运算符:&&(and)    ||(or)    !(not)
  • 空运算符:empty  
    • ${empty str}:用于判断字符串,集合数组对象是否为null或者长度是否为 0
    • ${not empty str}:表示判断字符串、集合、数组对象是否不为null并且长度大于 0

【2】获取值

  • EL 表达式只能从域对象中获取值
    • 格式:${域名称.键名}  ==>  从指定的域中获取指定的键值
      对应的域名称
      pageContextpageScope
      requestrequestScope
      sessionsessionScope
      applicationapplicationScope

      ${键名}:表示依次从最小的域中查找是否有该键对应的值

    • 获取对象:${域名称.键名.属性名}
      本质上是调用Javabean中的getter方法

    • 获取 List 集合:${域名称.键名[索引]}

    • 获取 Map 集合

      • ${域名称.键名.key名称}

      • ${域名称.键名["key名称"]}

【3】隐式对想

EL 表达式中有 11 个隐式对象,这里主要说 pageContext 隐式对象,pageContext 隐式对象主要功能有:

  • 获取 JSP 其他八个内置对象
  • 动态获取虚拟目录:
<%@ page import="Test.User" %>
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  ${3 > 4}
  \${3 > 4}
  <hr>
  <h3>算数运算符</h3>
  ${3 + 4}<br>
  ${3 / 4}<br>
  ${3 % 4}<br>
  <h3>比较运算符</h3>
  ${3 == 4}<br>
  <h3>逻辑运算符</h3>
  ${3 > 4 && 3 < 4}
  ${3 > 4 and 3 < 4}
  <hr>

  <h3>在域中获取值</h3>
  <%
      //在request域中存储值
      request.setAttribute("name","oneStar");
      //在session域中存储值
      session.setAttribute("age","18");
  %>
  ${requestScope.name}
  ${sessionScope.age}
  ${name}

  <h3>获取对象值</h3>
  <%
      User user = new User();
      user.setName("oneStar");
      user.setAge(18);
      user.setBirthday(new Date());
      request.setAttribute("u",user);
  %>
  ${requestScope.u.name}<br>
  ${requestScope.u.age}<br>
  ${requestScope.u.birthday}<br>

  <h3>获取List集合</h3>
  <%
      List list = new ArrayList();
      list.add("oneStar");
      list.add("twoStar");
      list.add("threeStar");
      request.setAttribute("list",list);
  %>
  ${requestScope.list}<br>
  ${requestScope.list[2]}<<br>

  <H3>获取map集合</H3>
  <%
      Map map = new HashMap<>();
      map.put("name","oneStar");
      map.put("age","18");
      request.setAttribute("map",map);
  %>
  ${requestScope.map}<br>
  ${requestScope.map.name}<br>
  ${requestScope.map["age"]}<br>

  <h3>隐式对象</h3>
  ${pageContext.request}
  <h4>在JSP页面动态获取虚拟目录</h4>
  ${pageContext.request.contextPath}
  </body>
</html>

三、JSTL 标签

JSTL 标签(JavaServer Pages Tag Library),即JSP标准标签库,是由 Apache 组织提供的开源免费的JSP标签,主要是用来简化和替换JSP页面上的Java代码,具体使用步骤如下:

  1. 导入jstl相关jar包
  2. 引入标签库:taglib指令引入:<%@ taglib %>
  3. 使用标签

1、if 标签

  • 属性:test 属性,为必须属性,接受 boolean 表达式
  • 一般情况下,test属性值会结合 EL 表达式一起使用
  • if 标签没有else情况,如果想要else效果,可以定义多个 if 标签

2、choose 标签

choose 标签就相当于switch 语句,switch 需要配合 case、default 来使用,而choose则需要配合when、otherwise 来使用

  • 使用choose标签声明:相当于 switch 声明
  • 使用 when 标签做判断:相当于 case
  • 使用 otherwise 标签做其他情况的声明:相当于default

3、 foreach 标签

【1】完成重复操作

属性

  • begin:开始值
  • end:结束值
  • var:临时变量
  • step:步长
  • varStatus:循环状态对象
    • index:容器中元素的索引,从 0 开始
    • count:循环次数,从 1 开始

【2】遍历容器

属性

  • items:容器对象
  • var:容器中元素的临时变量
  • varStatus:循环状态对象
    • index:容器中元素的索引,从 0 开始、
    • count:循环次数,从 1 开始
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>OneStar</title>
</head>
<body>
    <h3>if标签</h3>
    <%
        List list = new ArrayList();
        list.add("oneStar");
        list.add("twoStar");
        request.setAttribute("list",list);
    %>
    <c:if test="${not empty list}">
        集合非空
    </c:if>
    <c:if test="${3 % 2 != 0}">
        是奇数
    </c:if>
    <hr>

    <h3>choose标签</h3>
    <%
        request.setAttribute("number","12");
    %>
    <c:choose>
        <c:when test="${number == 1}">星期一</c:when>
        <c:when test="${number == 2}">星期二</c:when>
        <c:when test="${number == 3}">星期三</c:when>
        <c:when test="${number == 4}">星期四</c:when>
        <c:when test="${number == 5}">星期五</c:when>
        <c:when test="${number == 6}">星期六</c:when>
        <c:when test="${number == 7}">星期日</c:when>
        <c:otherwise>不正确字符!!!</c:otherwise>
    </c:choose>

    <h3>foreach标签</h3>
    <c:forEach begin="0" end="10" var="i" step="1">
        ${i}
    </c:forEach><br>
    <%
        List lists = new ArrayList();
        lists.add("oneStar");
        lists.add("twoStar");
        request.setAttribute("lists",lists);
    %>
    <c:forEach items="${lists}" var="list" varStatus="s">
        ${s.index} ${s.count} ${list}<br>
    </c:forEach>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ONESTAR博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值