栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

EL 表达式JSTL标签的快速使用(javaWeb中的四大域对象)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

EL 表达式JSTL标签的快速使用(javaWeb中的四大域对象)

1、EL 表达式JSTL标签

用于简化jspu页面内的java代码

主要功能:获取数据

语法:${expression} 获取服务器中储存的key为brands的数据

如下快速入门代码

快速入门代码

创建服务器对象,储存信息到域里面,并请求转发到 el-demo.jsp

package com.zcl.web; 

import com.zcl.pojo.Brand;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/demo")
public class ServletDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1、准备数据
        List brands = new ArrayList();
        brands.add(new Brand(1,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1));
        brands.add(new Brand(2,"优衣库","优衣库",200,"优衣库,服适人生",0));
        brands.add(new Brand(3,"小米","小米科技有限公司",1000,"为发烧而生",1));
        // 2、储存数据到域中
        request.setAttribute("brands",brands);
        // 3、转发到jsp-demo.jsp
        request.getRequestDispatcher("/el-demo.jsp").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

el-demo.jsp获取页面信息

<%--
  Created by IntelliJ IDEA.
  User: zcl
  Date: 2022/3/26
  Time: 20:35
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    ${brands}



页面的输出效果

[Brand{id=1, brandName='三只松鼠', companyName='三只松鼠', ordered=100, description='三只松鼠,好吃不上火', status=1}, Brand{id=2, brandName='优衣库', companyName='优衣库', ordered=200, description='优衣库,服适人生', status=0}, Brand{id=3, brandName='小米', companyName='小米科技有限公司', ordered=1000, description='为发烧而生', status=1}]
javaWeb中的四大域对象

page:当前页面有效request:当前请求有效session:当前会话有效application:当前应用有效

el 表达式获取数据,会依次从这4个域中寻找,直到找到为止。而这四个域对象的作用范围如下图所示

例如: ${brands},el 表达式获取数据,会先从page域对象中获取数据,如果没有再到 requet 域对象中获取数据,如果再没有再到 session 域对象中获取,如果还没有才会到 application 中获取数据。

2、JSTL标签

2.1、 if 标签 快速入门演示

1、导入标签


        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        
        
        
        
            javax.servlet.jsp
            jsp-api
            2.2.1-b03
            provided
        
        
        
        
            jstl
            jstl
            1.2
        
        
            taglibs
            standard
            1.1.2
        

    

2、在jsp页面上引入jstl标签库

名称:c是可以随便起的,用来定义标签

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

3、使用标签来获取逻辑判断


    

true

false

jstl结合el表达式判断

域中储存数据

package com.zcl.web; 

import com.zcl.pojo.Brand;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/demo")
public class ServletDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1、准备数据
        request.setAttribute("status",1);
        // 2、转发到jstl-demo.jsp
        request.getRequestDispatcher("/jstl-demo.jsp").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

使用if标签判断是否等于1

<%--
  Created by IntelliJ IDEA.
  User: zcl
  Date: 2022/3/27
  Time: 20:36
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    Title


<%--
c:if 用来完成逻辑判断 true或false
--%>
<%--
    

true

false

--%> <%-- 上面的逻辑判断是写死的不利于后面的使用 1、结合el获取域中数据来判断 具体步骤: 1.1、在ServletDemo1域中储存一个数据 1.2、请求ServletDemo1路径/demo,通过请求转发到当前的jsp判断 1.3、修改ServletDemo1中的请求转发路径 --%>

启用

禁用

2.2、 forEach 标签

:相当于 for 循环。java中有增强for循环和普通for循环,JSTL 中的 也有两种用法

用法一

类似于 Java 中的增强for循环。涉及到的 中的属性如下

items:被遍历的容器

var:遍历产生的临时变量

varStatus:遍历状态对象

如下代码,是从域对象中获取名为 brands 数据,该数据是一个集合;遍历遍历,并给该集合中的每一个元素起名为 brand,是 Brand对象。在循环里面使用 EL表达式获取每一个Brand对象的属性值


    
        ${brand.id}
        ${brand.brandName}
        ${brand.companyName}
        ${brand.description}
    

演示代码

同时使用到了c:if判断

<%--
  Created by IntelliJ IDEA.
  User: zcl
  Date: 2022/3/27
  Time: 20:56
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>



  
  Title




<%--items 遍历的对象 var 临时存放遍历的对象 varStatus 获取到遍历的索引--%> <%----%> <%-- 从0开始--%>
序号 品牌名称 企业名称 排序 品牌介绍 状态 操作
${brand.id}${status.index}${status.count} ${brand.brandName} ${brand.companyName} ${brand.ordered} ${brand.description} 启用 禁用 修改 删除
用法二

类似于 Java 中的普通for循环。涉及到的 中的属性如下

begin:开始数

end:结束数

step:步长

实例代码:

从0循环到10,变量名是 i ,每次自增1


    ${i}

使用场景:分页工具条

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781598.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号