IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 2022/3/20 Java开发之Java web编程 第八章 使用EL和JSTL简化JSP -> 正文阅读

[JavaScript知识库]2022/3/20 Java开发之Java web编程 第八章 使用EL和JSTL简化JSP

目录

一、EL表达式

????????1、概念

????????2、作用

????????3、语法

????????4、注意

????????5、使用

6、隐式对象

7、c:set、c:out和c:remove

1.

2.

3.

二、JSTL

????????1、概念

????????2、作用

????????3、使用步骤

????????4、常用的JSTL标签

???????(1)if:相当于java代码的if语句

????????(2)choose:相当于java代码的switch语句

????????(3)foreach:相当于java代码的for语句

????????5、练习

三丶本章总结


一、EL表达式


????????1、概念

????????????????Expression Language 表达式语言

????????2、作用


????????????????替换和简化jsp页面中java代码的编写

????????3、语法


????????????????${表达式}

????????4、注意


????????????????jsp默认支持el表达式的。如果要忽略el表达式
????????????????设置jsp中page指令中:isELIgnored="true",忽略当前jsp页面中所有的el表达式
????????????????\${表达式}:忽略当前这个el表达式

????????5、使用

????????(1)运算

????????????????运算符:

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

????????(2)获取值

  • el表达式只能从域对象中获取值
  • 语法:
    • ${域名称.键名}:从指定域中获取指定键的值

      • 域名称:

          1. pageScope		--> pageContext
          2. requestScope 	--> request
          3. sessionScope 	--> session
          4. applicationScope --> application(ServletContext)
        
      • 举例:在request域中存储了name=张三

      • 获取:${requestScope.name}

    • ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。

????????(3)获取对象、List集合、Map集合的值

  • 对象${域名称.键名.属性名}

    • 本质上会去调用对象的getter方法
  • List集合${域名称.键名[索引]}

  • Map集合

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

6、隐式对象

  • el表达式中有11个隐式对象
  • pageContext
    • 获取jsp其他八个内置对象
      • ${pageContext.request.contextPath}动态获取虚拟目录

7、c:set、c:out和c:remove

1.<c:set>


<c:set>标签用于设置变量值和对象属性。它会计算表达式的值,然后使用计算结果来设置 JavaBean 对象或 java.util.Map 对象的值。

属性

  • value:要存储的值
  • var:存储信息的变量
  • target:要修改的属性所属的对象
  • property:要修改的属性
  • scope:var属性的作用域

2.<c:out>

<c:out>标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是<c:out>标签可以直接通过"."操作符来访问属性。

举例来说,如果想要访问customer.address.street,只需要这样写:<c:out value=“customer.address.street”>。

<c:out>标签会自动忽略XML标记字符,所以它们不会被当做标签来处理。

属性

  • value:要输出的内容
  • default:输出的默认值
  • escapeXml:是否忽略XML特殊字符(默认值为true表示会自动进行转义处理,手动设置为false后可以显示标签)

3.<c:remove>

<c:remove>标签用于移除指定作用域内的指定变量。

<c:remove var="<string>" scope="String">
  • var:待移除的变量名称
  • scope:?待移除变量所在的作用域(默认为page)

二、JSTL

????????1、概念

  • ????????????????JavaServer Pages Tag Library JSP标准标签库
  • 是由Apache组织提供的开源的免费的jsp标签?<标签>

????????2、作用

  • ????????????????用于简化和替换jsp页面上的java代码

????????3、使用步骤

  • 导入jstl相关jar包
  • 引入标签库:taglib指令: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • 使用标签

????????4、常用的JSTL标签

  • ???????(1)if:相当于java代码的if语句

  • ? ? 属性:
  • test必须属性,接受boolean表达式
    • 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
    • 一般情况下,test属性值会结合el表达式一起使用
  • 注意:
    • c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签
  • ????????(2)choose:相当于java代码的switch语句

  • 使用choose标签声明 相当于switch声明
  • 使用when标签做判断 相当于case
  • 使用otherwise标签做其他情况的声明 相当于default
  • ????????(3)foreach:相当于java代码的for语句

  • 语法
    <c:forEach items="collationName" var="varName"
        varStatus="varStatusName" begin="beginIndex" end="endIndex"
        step="step">
        主体内容
    </c:forEach>
  • items属性指被迭代的集合对象,可以通过EL表达式获取。
  • var属性是对当前成员的引用,即如果当前循环到第一个成员,var就引用第一个成员,?如果当前循环到第二个成员,var就引用第二个成员,以此类推。
  • varStatus属性用于存放var属性引用的成员的相关信息,如索引等。
  • begin属性表示开始位置,默认为0,该属性可以省略。
  • end属性表示结束位置,该属性可以省略。
  • step表示循环的步长,默认为1,该属性可以省略。

????????5、练习

  • 需求:在request域中有一个存有User对象的List集合。需要使用jstl+el将list集合数据展示到jsp页面的表格table中
  • 代码如下:
  • <%@ page import="java.util.List" %>
    <%@ page import="java.util.ArrayList" %>
    <%@ page import="com.allen.domain.User" %>
    <%@ page import="java.util.Date" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
        <title>test</title>
    </head>
    <body>
    
    <%
        List list = new ArrayList();
        list.add(new User("张三",23,new Date()));
        list.add(new User("李四",24,new Date()));
        list.add(new User("王五",25,new Date()));
    
        request.setAttribute("list",list);
    
    %>
    <table border="1" width="500" align="center">
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>年龄</th>
            <th>生日</th>
        </tr>
        <%--数据行--%>
        <c:forEach items="${list}" var="user" varStatus="s">
            <c:if test="${s.count%2 == 0}">
                <tr bgcolor="green">
                    <td>${s.count}</td>
                    <td>${user.name}</td>
                    <td>${user.age}</td>
                    <td>${user.birStr}</td>
                </tr>
            </c:if>
            <c:if test="${s.count%2 != 0}">
                <tr bgcolor="red">
                    <td>${s.count}</td>
                    <td>${user.name}</td>
                    <td>${user.age}</td>
                    <td>${user.birStr}</td>
                </tr>
            </c:if>
    
        </c:forEach>
    
    </table>
    
    </body>
    </html>
    
  • package Servlet;
    import entity.Dog;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    @WebServlet("/TextServlet")     //用注解给这个文件取个路径
    public class TextServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            req.setAttribute("a",10);
            req.getSession().setAttribute("b",20);
            Dog d1=new Dog("小白",2,"白色");
            Dog d2=new Dog("小黑",3,"黑色");
            List<Dog>list=new ArrayList<>();
            list.add(d1);
            list.add(d2);
            req.getSession().setAttribute("list",list);
            req.getSession().setAttribute("Flag",1);
            req.getSession().setAttribute("html","<a>点我啊</a>");
            req.getRequestDispatcher("index.jsp").forward(req,resp);
        }
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req,resp);
        }
    }
  • <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
      <%--用于从作用域中取值--%>
      <%--page<requset<session<application--%>
      <%--可以不用写作用域,它会从小到大去寻找--%>
      ${requestScope.a}
      ${sessionScope.b}
      <table border="2">
      <c:forEach var="ob" items="${list}">
        <tr>
          <td>${ob.name}</td>
          <td>${ob.age}</td>
          <td>${ob.color}</td>
        </tr>
      </c:forEach>
      </table>
      <c:if test="${Flag>0}">
       <h1>欢迎你,啊啊啊!</h1>
      </c:if>
      <c:if test="${Flag<=0}">
        <h1>请登录!</h1>
      </c:if>
    <%--  var:键  value:值  scope:作用域--%>
      <c:set var="cd" value="123" scope="session">
      </c:set>
      <c:out value="${html}" escapeXml="true"></c:out>
      <c:out value="${html}" escapeXml="false"></c:out>
      <c:out value="${cd}"></c:out>
      </body>
    </html>
    

三丶本章总结

  1. EL表达式的语法有$和{}两个要数,两者缺一不可。
  2. EL表达式提供了pageScope丶requestScope丶sessionScope丶applicationScope丶param丶paramValues丶pageContext丶cookie丶initParam等隐式对象。
  3. EL表达式具有类型无关性,可以使用点操作符或[]操作符取得某个属性的值。
  4. JSTL核心标签库中常用的标签有如下三类。
    1. 通用标签:<c:set>丶<c:out>丶<c:remove>。
    2. 条件标签:<c:if>丶<c:choose>丶<c:when>丶<c:otherwise>。
    3. 迭代标签:<c:forEach>。
  5. EL表达式与JSTL标签结合使用,可以在很大程度上减少在JSP中嵌入的Java代码,有利于程序的维护和扩展。

?

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 20:40:43  更:2022-03-21 20:42:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:55:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码