Java基础入门day58

day58

EL表达式

概念

EL:expression language

EL使得JSP写起来更简单、简介,主要用于获取作用域中的数据

语法

可以使用${}获取指定作用域中的数据

用于替换作用域.getAttribute("name")

${scope.name}获取指定的某个作用域中的数据

${name}获取作用域中的数据,安装作用域从小到大的顺序获取(pageContext, request, session, application)

EL和JSP脚本的区别

  • <%=request.getAttribute(“name”)>如果没有找到name, 则返回为null值

  • ${requestScope.name}没找到则返回“”

应用

<%@ page import="com.saas.entity.Student" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2024/5/24
Time: 9:08
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>EL</title>
</head>
<body>
<%Student s = new Student();
​s.setId("9527");s.setName("zhouxingxing");s.setPassword("123456");s.setAge(18);s.setSex(true);s.setAddress("huafu");s.setEmail("zhouxing@qq.com");s.setPhone("110");s.setScore(100.0);
​pageContext.setAttribute("s", s);
%>
​
<%--EL表达式1. 获取对象中的属性值2. 获取对象的方法3. 获取数组中的元素4. 获取集合中的元素5. 获取request域中的属性6. 获取session域中的属性7. 获取application域中的属性8. 获取cookie9. 获取ServletContext10. 获取ServletRequest11. 获取ServletResponse12. 获取ServletConfig13. 获取Servlet14.获取ServletContext --%>
​
<form action="ELServlet" method="post">id:<input type="text" name="id" value="${s.id}"><p />name:<input type="text" name="name" value="${s.name}"><p />age:<input type="text" name="age" value="${s.age}"><p />password:<input type="text" name="password" value="${s.password}"><p />score:<input type="text" name="score" value="${s.score}"><p />email:<input type="text" name="email" value="${s.email}"><p />sex: <input type="radio" name="sex" value="true" checked="checked">男phone:<input type="text" name="phone" value="${s.phone}"><p />address:<input type="text" name="address" value="${s.address}"><p /><input type="submit" value="submit">
​
</form>
</body>
</html>
<%@ page import="com.saas.entity.Student" %><%--Created by IntelliJ IDEA.User: AdministratorDate: 2024/5/24Time: 9:08To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>EL</title>
</head>
<body>
<%int[] arrs = new int[]{100, 22, 333, 44, 505};
​pageContext.setAttribute("arrs", arrs);
%>
arrs[0] = ${arrs[0]}
arrs[1] = ${arrs[1]}
arrs[2] = ${arrs[2]}
arrs[3] = ${arrs[3]}
arrs[4] = ${arrs[4]}
<hr />
</body>
</html>
<%@ page import="com.saas.entity.Student" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %><%--Created by IntelliJ IDEA.User: AdministratorDate: 2024/5/24Time: 9:08To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>EL</title>
</head>
<body>
<%List<Student> stus = new ArrayList<>();
​stus.add(new Student("9527", "zhouxingxing", "123456", 19, true, "huafu", "zhouxing@qq.com", "110", 100.0));stus.add(new Student("9528", "qiuxiang", "123456", 18, false, "huafu", "qiuxiang@qq.com", "110", 100.0));stus.add(new Student("9529", "shiliujie", "123456", 20, false, "huafu", "zhouxing@qq.com", "110", 100.0));stus.add(new Student("9530", "chuanxiang", "123456", 18, false, "huafu", "chuanxiang@qq.com", "110", 100.0));stus.add(new Student("9531", "jiangjun", "123456", 38, true, "huafu", "zhouxing@jiangjun.com", "110", 100.0));
​pageContext.setAttribute("stus", stus);
%>
<table border="1"><tr><td>id</td><td>name</td><td>password</td><td>age</td><td>sex</td><td>address</td><td>phone</td><td>email</td><td>score</td><td>操作</td></tr><tr><td>${stus[0].id}</td><td>${stus[0].name}</td><td>${stus[0].password}</td><td>${stus[0].age}</td><td>${stus[0].sex}</td><td>${stus[0].address}</td><td>${stus[0].phone}</td><td>${stus[0].email}</td><td>${stus[0].score}</td><td><a href="">修改</a><a href="">删除</a></td></tr>
</table>
<hr />
</body>
</html>
<%@ page import="com.saas.entity.Student" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--Created by IntelliJ IDEA.User: AdministratorDate: 2024/5/24Time: 9:08To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>EL</title>
</head>
<body>
<%Map<String, String> names = new HashMap<>();
​names.put("jack", "杰克");names.put("rose", "肉丝儿");
​pageContext.setAttribute("names", names);
%>
​
jack : ${names["jack"]}
</body>
</html>
<%--Created by IntelliJ IDEA.User: AdministratorDate: 2024/5/24Time: 9:33To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>EL</title>
</head>
<body>
<%request.setAttribute("num", 1234);
%>
<h3>算数运算</h3>
num + 1 = ${num + 1}<br />
num - 1 = ${num - 1}<br />
num * 2 = ${num * 2}<br />
num / 2 = ${num / 2}<br />
num / 1 = ${num div 2}<br />
num % 2 = ${num % 2}<br />
num % 2 = ${num mod 2}<br />
​
<h3>关系运算</h3>
num > 1 = ${num > 1}<br />
num < 1 = ${num < 1}<br />
num >= 1 = ${num >= 1}<br />
num <= 1 = ${num <= 1}<br />
num == 1 = ${num == 1}<br />
num != 1 = ${num != 1}<br />
​
<h3>逻辑运算</h3>
num > 1 && num < 10 = ${num > 1 && num < 10}<br />
num > 1 || num < 10 = ${num > 1 || num < 10}<br />
!(num > 1) = ${!(num > 1)}<br />
num > 1 and num < 10 = ${num > 1 and num < 10}<br />
num > 1 or num < 10 = ${num > 1 or num < 10}<br />
!(num > 1) = ${!(num > 1)}<br />
num > 1 and num < 10 = ${num > 1 and num < 10}<br />
num > 1 or num < 10 = ${num > 1 or num < 10}<br />
​
​
</body>
</html>

JSTL

现有问题

  • EL表达式主要用于获取作用域中的数据,虽然可以做运算判断,但是得到的都是一个结果,用来做展示

  • EL不存在流程控制,比如无法做判断

  • EL表达式可以获取集合中的数据,但是也仅限于获取集合中的某一个元素,但是不能实现遍历操作,比如循环

概念

JSTL: JSP standard tag library: JSP的标准标签库

JSTL是一个JSP的标签集合

作用

  • 可对EL获取的数据进行逻辑操作

  • 与EL合作完成数据的展示

使用

需要两个jar包:standard.jar和jstl.jar

在页面中引入核心标签库

在页面中使用JSTL

核心标签

if条件判断

语法:

<c:if test='条件'></c:if>

如果test中的条件成立,执行c:if中的代码,否则不执行里面的代码

<c:if test='${8 > 2}'>8 > 2成立</c:if>
<c:if test='${8 < 2}'>8 < 2成立</c:if>
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2024/5/24
Time: 11:25
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>jstl</title><%@ taglib prefix="ccc" uri="http://java.sun.com/jsp/jstl/core" %>
</head>
<body><ccc:if test="${8 > 2}">8 > 2 成立</ccc:if><ccc:if test="${8 < 2}">8 < 2 成立</ccc:if>
</body>
</html>

以上结果中,由于8 > 2判断成立,则第一个if里面的代码将执行

8 < 2 不成立,则第二个if里面的代码将 不会执行

多条件判断choose when

语法:

<c:choose><c:when test="条件1"结果1</c:when><c:when test="条件2>结果2</c:when><c:when test="条件3>结果3</c:when><c:otherwise>结果4</c:otherwise>
</c:choose>
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2024/5/24
Time: 11:30
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>jstl</title><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
</head>
<body>
<c:set var="score" value="100" scope="page" />
<c:choose><c:when test="${score >= 90}">优秀</c:when><c:when test="${score >= 80}">良好</c:when><c:when test="${score >= 60}">及格</c:when><c:otherwise>不及格</c:otherwise>
</c:choose>
</body>
</html>
迭代foreach

语法:

<c:forEach var="i" begin="1" end="10" step="1" items="">循环代码
</c:forEach>

var: 变量名

begin:起始下标

end:结束下标

step:间隔长度

items:要遍历的集合

<%@ page import="com.saas.entity.Student" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2024/5/24
Time: 11:30
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>jstl</title><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
</head>
<body>
<%int[] arr = new int[]{1, 2, 3, 4, 5, 99, 33, 11, 7};pageContext.setAttribute("arr", arr);List<Student> stus = new ArrayList<>();stus.add(new Student("9527", "zhouxingxing", "123456", 19, true, "huafu", "zhouxing@qq.com", "110", 100.0));stus.add(new Student("9528", "qiuxiang", "123456", 18, false, "huafu", "qiuxiang@qq.com", "110", 100.0));stus.add(new Student("9529", "shiliujie", "123456", 20, false, "huafu", "zhouxing@jiangjun.com", "110", 100.0));stus.add(new Student("9530", "chuanxiang", "123456", 18, false, "huafu", "chuanxiang@qq.com", "110", 100.0));stus.add(new Student("9531", "jiangjun", "123456", 38, true, "huafu", "zhouxing@jiangjun.com", "110", 100.0));pageContext.setAttribute("stus", stus);
%>
<c:forEach var="i" begin="2" end="6" step="2" items="${arr}">${i}<p />
</c:forEach><hr><c:forEach items="${stus}" var="s">${s.id}${s.name}${s.password}${s.age}${s.sex}${s.address}${s.phone}${s.email}${s.score}<hr />
</c:forEach>
</body>
</html>

循环items中的元素,每一个元素将用var所对应的变量接收

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/18692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【java-数据结构19-队列的模拟实现】

上篇文章&#xff0c;小编已经带大家一起认识了队列&#xff0c;并且对队列的方法进行调用测试&#xff0c;下面我们将模拟实现一个队列&#xff0c;话不多说&#xff0c;上正文~ 1.队列的模拟实现 队列的实现方法和链表的实现方式一模一样&#xff0c;这里我们首选双链表&…

VirtualBox虚拟机与bhyve虚拟机冲突问题解决@FreeBSD

问题 在安装完bhyve虚拟系统的主机上启动VirtualBox虚拟机的时候&#xff0c;报错&#xff1a;不能为虚拟电脑 debian 打开一个新任务. VirtualBox cant operate in VMX root mode. Please close all other virtualization programs. (VERR_VMX_IN_VMX_ROOT_MODE). 返回 代码…

UWP与WPF:微软两大UI框架

在微软的开发者生态系统中&#xff0c;UWP(Universal Windows Platform)与WPF(Windows Presentation Foundation)是构建Windows应用的两大明星框架。它们各自携带独特的设计理念和技术特性&#xff0c;服务于不同的开发需求和应用场景。本文将深入探讨这两者之间的异同&#xf…

项目成功的关键要素:进度管理

在项目管理中&#xff0c;进度管理是决定项目成败的关键因素之一。它关乎项目能否在预定的时间范围内高效、准确地完成既定目标。 一、进度管理的重要性 1、时间控制&#xff1a;项目的成功往往与时间的把握息息相关。进度管理能够确保项目在既定的时间框架内有序进行&#x…

uni-app学习完结

昨天空余一天&#xff0c;并未写记录&#xff0c;是昨天属于项目完结&#xff0c;这里把最后的打包上线等这里说下。 打包成微信小程序 打包成微信小程序&#xff0c;这需要再微信公众平台里面&#xff0c;进行登陆和设置。这里说下&#xff0c;注册的后&#xff0c;选择需要…

LeetCode---链表

203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 代码示例1&#xff1a;(直接使用原来的链表来进行移除节点操作) //时间复杂度: O(n) //空间复杂度: O(1) class Solu…

算法训练营36

题目1&#xff1a; 根据通过情况反复挑战最终AC过了&#xff0c;这里和原来的差别是他的排序是用绝对值排序的&#xff0c;这样的思路会很简单 class Solution { public:int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(), nums.end())…

数据通信基本概念汇总

1. 数据通信基础 网关: 提供协议转换&#xff0c;路由选择&#xff0c;数据交换的网络设备 报文: 网络中所传递的一个数据单元。 数据载荷: 最终要传递的信息 封装: 给数据载荷添加头部和尾部的过程(形成新的报文) 解封装: 给数据载荷去掉头部和尾部的过程(获取数据载荷) 终端设…

C语言中的位段

位段是通过结构体实现的&#xff0c;可以在一定程度上减小空间浪费&#xff0c;位段的声明和结构体类似&#xff0c;有以下几个不同&#xff1a; ①位段的成员必须是整形&#xff08;int,char,short等&#xff09;。 ②成员后边有冒号和数字&#xff0c;表示该成员占几个bit位…

LeetCode---栈与队列

232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int pee…

深入理解Java面向对象设计的六大原则

目录 单一职责原则&#xff08;SRP&#xff09; 开放封闭原则&#xff08;OCP&#xff09; 里氏替换原则&#xff08;LSP&#xff09; 依赖倒置原则&#xff08;DIP&#xff09; 接口隔离原则&#xff08;ISP&#xff09; 迪米特法则&#xff08;LoD&#xff09; 结语 …

Mac快速搭建前端环境创建前端项目【Vue】

Mac快速搭建前端环境&创建前端项目 官网&#xff1a; vue&#xff1a;https://cn.vuejs.org/vue-router&#xff1a;https://www.axios-http.cn/pinia&#xff1a;https://pinia.vuejs.org/zh/getting-started.htmlaxios&#xff1a;https://www.axios-http.cn/ant-design&…

Advanced Installer 问题集锦

1、界面在主题中显示的图标&#xff0c;如logo、发布者名称、产品名称就算在设计界面时删除&#xff0c;但是下次打开工程依然存在 解决办法&#xff1a;“可见”属性设置为禁用 2、在不关闭软件的情况下&#xff0c;使用"文件->打开"来切换项目&#xff0c;再次…

c++按索引同时删除多个元素

文章目录 代码结果 这个时候不能从前往后删&#xff0c;因为会破坏後面的元素的索引值&#xff0c;比如如果第删除了第2个元素&#xff0c;第3个元素的索引就会变为第2个元素的索引&#xff0c;造成混乱&#xff0c;甚至引起程序崩溃。应该从後往前删。 代码 #include<iost…

学习笔记——数据通信基础——数据通信网络(基本概念)

数据通信网络基本概念 网络通信&#xff1a;是指终端设备之间通过计算机网络进行的通信。 数据通信网络(Data Communication Network)&#xff1a;由 路由器、交换机、防火墙、无线控制器、无线接入点&#xff0c;以及个人电脑、网络打印机&#xff0c;服务器等设备构成的通信…

软考 系统架构设计师系列知识点之杂项集萃(21)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;20&#xff09; 第30题 软件结构化设计包括&#xff08; &#xff09;等任务。 A. 架构设计、数据设计、过程设计、原型设计 B. 架构设计、过程设计、程序设计、原型设计 C. 数据设计、过程设…

探秘GPT-4o:人工智能语言模型的新纪元

目录 前言1 GPT系列版本演变1.1 GPT-1到GPT-3的演变1.2 GPT-4的引入 2 GPT-4o与GPT-4的区别2.1 参数规模和架构优化2.2 训练数据和方法改进2.3 多模态能力 3 GPT-4o在语言生成和理解方面的技术能力3.1 更自然的语言生成3.2 更深刻的语境理解3.3 强大的跨语言能力3.4 自适应学习…

服务器硬件基础知识全面解析

在信息技术领域&#xff0c;服务器作为支撑各类业务运行的基石&#xff0c;其稳定性和性能至关重要。服务器硬件作为服务器的核心组成部分&#xff0c;直接决定了其处理能力、可靠性和扩展性。本文将深入浅出地介绍服务器硬件的基础知识&#xff0c;帮助IT专业人士及对服务器技…

git都在自己的个人分支开发吗?功能分支和个人分支工作流

在实际的开发过程中&#xff0c;使用分支的策略可以根据项目的需求和团队的工作流程进行调整。以下是两种常见的分支策略&#xff1a; 1. 功能分支&#xff08;Feature Branches&#xff09; 每个功能或修复一个独立的分支。这种方法通常被称为“功能分支工作流”。 优点 隔…

如何通过手机自学编程入门:探索四、五、六、七方面的学习路径

如何通过手机自学编程入门&#xff1a;探索四、五、六、七方面的学习路径 在信息爆炸的时代&#xff0c;手机已不仅仅是通讯工具&#xff0c;更是知识的宝库和学习的利器。对于渴望入门编程的初学者来说&#xff0c;手机自学编程成为了一种便捷而高效的选择。本文将围绕四个方…