Java基础入门day58

2024-05-29 11:52
文章标签 java 基础 入门 day58

本文主要是介绍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所对应的变量接收

这篇关于Java基础入门day58的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1013595

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]