Day45-9大内置对象、JSP标签、JSTL标签、EL表达式、JavaBean

信道估计之MMSE算法 信道估计之MMSE算法前言MMSE估计的原理总结 前言        前篇分析了LS信道估计算法,也说明了由于没有考虑SNR的影响,所以LS算法不适合在低信噪比的情况下使用。本篇来学习信道估计的另外一种常用的算法–MMSE。        为什么说LS没有考虑噪声小的情况呢,因为LS算法使用的是实际观测量与估计观测量的误差,这并不能精确的代表估计量的真值与估计值的误 阅读详情

Day45-9大内置对象、JSP标签、JSTL标签、EL表达式、JavaBean

9大内置对象

  • PageContext 存东西

  • Request 存东西

  • Response

  • Session 存东西

  • Application [ServletContext] 存东西

  • config [ServletConfig]

  • out

  • page

  • exception

<%--两种转发方式--%>
<%
    pageContext.forward("/index.jsp");
    request.getRequestDispatcher("/index.jsp").forward(request,response);
%>

补充:双亲委派机制

  1. 当Application ClassLoader 收到一个类加载请求时,他首先不会自己去尝试加载这个类,而是将这个请求委派给父类加载器Extension ClassLoader去完成。
  2. 当Extension ClassLoader收到一个类加载请求时,他首先也不会自己去尝试加载这个类,而是将请求委派给父类加载器Bootstrap ClassLoader去完成。
  3. 如果Bootstrap ClassLoader加载失败(在<JAVA_HOME>\lib中未找到所需类),就会让Extension ClassLoader尝试加载。
  4. 如果Extension ClassLoader也加载失败,就会使用Application ClassLoader加载。
  5. 如果Application ClassLoader也加载失败,就会使用自定义加载器去尝试加载。
  6. 如果均加载失败,就会抛出ClassNotFoundException异常。

pageContextDemo01.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--脚本片段中的代码,会被原封不动的生成到.JSP.java中
要求:
这里面的代码必须保证java语法的正确性
--%>
<%--内置对象--%>
<%
    pageContext.setAttribute("name1","小赵1号");//保存的数据只在一个页面中有效
    request.setAttribute("name2","小赵2号");//保存的数据只在一次请求中有效,请求转发会携带这个数据(用pageContext.forward实现转发到其他页面,那么其他页面也可以使用这个数据)
    session.setAttribute("name3","小赵3号");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute("name4","小赵4号");//保存的数据只在服务器中有效,从打开服务器到关闭服务器
%>
<%--通过PageContext取出我们保存的值,通过寻找方式来--%>
<%--从底层到高层(作用域)--%>
<%
    String name1 = (String)pageContext.findAttribute("name1");
    String name2 = (String)request.getAttribute("name2");
    String name3 = (String)session.getAttribute("name3");
    String name4 = (String)application.getAttribute("name4");
%>
<%--使用EL表达式输出--%>
<h1>取出的值为:</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
</body>
</html> 

测试:

在这里插入图片描述

request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如新闻、用户看完没用的。

session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如购物车…

application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他的用户还可能继续使用,比如:聊天数据…

JSP标签、JSTL标签、EL表达式

EL表达式:

  • 获取数据
  • 执行运算
  • 获取web开发的常用对象

JSP标签

页面跳转

jsptag01.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>1</h1>
<jsp:forward page="/jsptag02.jsp">
    <%--在跳转中添加参数--%>
    <jsp:param name="name" value="xiaozhao"></jsp:param>
    <jsp:param name="age" value="18"></jsp:param>
</jsp:forward>
</body>
</html>

jsptag02.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>2</h1>
<%--取出参数--%>
名字:<%=request.getParameter("name")%>
年龄:<%=request.getParameter("age")%>
</body>
</html>

测试

在这里插入图片描述

JSTL

JSTL标签库的使用就是为了弥补HTML标签不足,它自定义许多标签,可以供我们使用,标签的功能和Java代码一样

  • 核心标签(掌握部分)

在这里插入图片描述

  • 格式化标签
  • SQL 标签
  • XML 标签
JSTL标签使用步骤

前提:

在Tomcat中也需要引入JSTL包,如果报错了(JSTL解析错误)可能就是没有引入jstl的包,需要手动引入jstl的包。

引入JSTL核心标签库,我们才能使用JSTL标签

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  1. 引入对应的taglib

  2. 使用其中的方法

登录判断案列

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入JSTL核心标签库,我们才能使用JSTL标签--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h4>if测试</h4>
<hr>
<%--把表单里的数据提交到这个页面,我们再通过这个页面来获取--%>
<form action="coreif.jsp" method="get">
  <%--
  EL表达式获取表达中的数据
  ${param.参数名}
  --%>
  <input type="text" name="username" value="${param.username}">
  <input type="submit" value="登录">
</form>
<%--判断如果提交的用户名是管理员,则登录成功--%>
<c:if test="${param.username=='admin'}" var="isAdmin">
  <c:out value="小赵管理员欢迎您!"></c:out>
</c:if>
<c:out value="${isAdmin}"></c:out>
</body>
</html>

测试

登录失败

在这里插入图片描述

登录成功

在这里插入图片描述

成绩判断

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入JSTL核心标签库,我们才能使用JSTL标签--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--定义一个变量score,值为95--%>
<c:set var="score" value="95">
</c:set>
<c:choose>
    <c:when test="${score>=90}">
        你的成绩为:优秀
    </c:when>
    <c:when test="${score>=60}">
        你的成绩为:良好
    </c:when>
    <c:when test="${score<=60}">
        你的成绩为:不及格
    </c:when>
</c:choose>
</body>
</html>

测试

在这里插入图片描述

c foreach遍历

<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入JSTL核心标签库,我们才能使用JSTL标签--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html>
<head>
    <title>Title</title>
</head>
<body>
<%
  ArrayList<String> people = new ArrayList<>();
  people.add(0,"小赵1号");
  people.add(1,"小赵2号");
  people.add(2,"小赵3号");
  people.add(3,"小赵4号");
  request.setAttribute("list",people);
%>
<%--
遍历:
var 每一次输出来的变量
items 要遍历的对象
--%>
<c:forEach var="people" items="${list}">
  <c:out value="${people}"/><br>
</c:forEach>
<hr>
<%--
begin  起始位置
end    结束位置
step   步长
--%>
<c:forEach var="people" items="${list}" begin="1" end="3" step="2">
  <c:out value="${people}"/><br>
</c:forEach>
</body>
</html>

测试

在这里插入图片描述

JavaBean

实体类

JavaBean有特定的写法:

  • 必须有一个无参构造
  • 属性必须私有化
  • 必须有对应的get/set方法

一般用来和数据库的字段做映射 ORM;

ORM:对象关系映射

  • 表–>类
  • 字段–>属性
  • 行记录–>对象
idnameageaddress
1小赵1号16永恒梦境
2小赵2号17彩虹之森
3小赵3号18吾心安处
class People{
    private int id;
    private String name;
    private int age;
    private String address;
}
class A{
    new People(1,"小赵1号",16,"永恒梦境");
    new People(2,"小赵2号",17,"彩虹之森");
    new People(3,"小赵3号",18,"吾心安处");
}

JavaBean标签

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
//    People people =new People();
//    people.setAddress();
//    people.setAge();
//    people.setId();
//    people.setName();
%>
<jsp:useBean id="people" class="com.xiaozhao.pojo.People" scope="page"/>
<%--设置值--%>
<jsp:setProperty name="people" property="id" value="1"/>
<jsp:setProperty name="people" property="name" value="小赵"/>
<jsp:setProperty name="people" property="age" value="18"/>
<jsp:setProperty name="people" property="address" value="吾心安处"/>
<%--取值--%>
ID:<jsp:getProperty name="people" property="id"/>
姓名:<jsp:getProperty name="people" property="name"/>
年龄:<jsp:getProperty name="people" property="age"/>
住址:<jsp:getProperty name="people" property="address"/>
</body>
</html>

测试

在这里插入图片描述

IIC协议常见误区解析:从时序图到实际波形(附逻辑分析仪实测) 本文深入解析IIC协议在实际应用中的常见误区,从理想时序图到逻辑分析仪实测波形的差异,揭示通信故障的根本原因。通过硬件设计优化、软件时序调优和高级调试技巧,帮助开发者有效规避IIC通信中的隐形陷阱,提升系统稳定性。 阅读详情

相关推荐

ONVIF协议简介与协议测试工具使用详解

Onvif协议及协议测试工具使用详解

dvlinker的技术专栏 3万+

JavaWeb - JSP:概述和语法,内置对象JavaBean 组件,MVC 设计模式

JSP 的概述 概念 JSPJava Server Pages 的简称,跟 Servlet 一样可以动态生成 HTML 响应, JSP 文件命名为 xxx.jsp。 与 Servlet 不同,JSP 文件以 HTML 标记为主,然后内嵌 Java 代码段,用于处理动态内容。 示例 <%@ page import="java.util.Date" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %&gt

qq_40286307的博客 420

基于STM32F4XX 、HAL库的SHT40-CD1B-R3温湿度传感器驱动应用C语言程序设计

define SHT40_ADDR_READ 0x8B // CD1B 读地址 ((0x45 << 1) + 1)#define SHT40_ADDR_WRITE 0x8A // CD1B 写地址 (0x45 << 1)// 初始化 I2C1 (根据 CubeMX 生成的函数)// 湿度: -6%RH + 125%RH * (raw / 2^16)// 温度: -45°C + 175°C * (raw / 2^16)// 返回值: 0=成功, 1=失败(CRC错误或I2C通信错误)

PP_Cottage的博客 204

jsp内置对象application以及javabean封装

1.application属于jsp9内置对象之一 jsp9内置对象: out,request,response,session,application config,page,pageContext,exception 2.application同时也属于jsp的四域对象之一 域对象:跨页面临时存储数据 jsp的四域对象:pageContext,request ...

weixin_54401885的博客 1402

Spring 源码系列(23): SpringApplication.run() 启动全流程

本文深入解析了SpringApplication.run()的核心流程,通过源码拆解揭示了从启动到容器就绪的完整生命周期。文章重点分析了三个关键阶段:prepareEnvironment的配置加载逻辑(系统属性>环境变量>配置文件)、createApplicationContext的容器类型推断机制(基于classpath判断Web/Reactive/普通应用),以及callRunners的启动后回调特性(按@Order执行初始化任务)。同时澄清了常见误区,如内嵌Tomcat实际在refresh阶段的onR

不才不才不不才的博客 385

Java 并发灵魂拷问:notify/signal 唤醒顺序是规范还是实现?

本文探讨了Java中Object.notify()和Condition.signal()唤醒线程的顺序问题。关键结论如下: Object.notify(): JVM规范未规定唤醒顺序,HotSpot实现虽采用FIFO(从WaitSet头部取线程),但这属于实现细节而非规范要求 由于synchronized是非公平锁,被唤醒线程需重新竞争锁,最终执行顺序无法保证 严禁业务代码依赖该顺序 Condition.signal(): 严格按FIFO顺序唤醒(AQS等待队列头部线程) 是设计约定,业务可合理依赖该特性

weixin_68315058的博客 362

[Java]-微服务面试题

服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃。微服务的负载均衡主要使用了一个组件Ribbon,比如,我们在使用feign远程调用的过程中,底层的负载均衡就是。2,我们还在skywalking设置了告警规则,特别是在项目上线以后,如果报错,我们分别设置了可以给相关负责人。简历上写的微服务,只要是发生了多个服务之间的写操作,都需要进行分布式事务控制。2,在客户端的配置文件中,可以配置某一个服务调用的负载均衡策略(局部)

. 611

49. 【Java】JDK 21的虚拟线程(上):革命性的并发模型

本文深入解析JDK 21引入的虚拟线程(Virtual Threads)技术,从传统平台线程的资源瓶颈出发,阐述虚拟线程的轻量级特性、M:N调度模型及其工作原理。详细介绍了两种创建虚拟线程的方法,并通过性能对比实验展示其在I/O密集型场景下的显著优势。总结了虚拟线程的适用场景、使用注意事项以及与平台线程的核心差异,帮助开发者掌握这一革命性的并发编程工具。

gugucoding的博客 526

Java Spring 批量修改,实体、接口、方法的定义

本文描述了一个批量更新车辆类型的接口实现。该功能通过Controller层接收包含出库单ID列表和车辆类型的请求参数,调用Service层进行处理。实现层采用事务管理,首先验证参数有效性,然后查询对应出库单数据并批量更新车辆类型字段,最后返回操作结果(成功更新记录数或错误信息)。该接口主要用于快递业务中其他出库单的车辆类型批量修改操作,包含完整的参数校验、异常处理和事务管理机制。

LYBWWP 44

并发 13 · 异步编排

摘要:本文探讨了异步编排在秒杀下单场景中的应用,分析了传统Future的局限性,并介绍了CompletableFuture如何通过链式调用解决任务依赖与并行问题。文章详细讲解了创建异步任务、串联任务(thenApply/thenCompose)、合并任务(thenCombine/allOf)以及异常处理等核心方法,强调使用独立线程池避免阻塞公共资源。最后结合秒杀案例,展示了如何构建高效、清晰的异步流水线,优化响应时间。全文提供代码示例和选型建议,帮助开发者实现高性能异步流程编排。

记录后端技术的深水区:MySQL、并发、JVM、分布式。原理为主,实战为辅,能少踩一个坑是一个。 389

简单聊聊 OpenFeign 框架源码

骨架:JDK 动态代理 + 方法元数据 + handler 分发,和 MyBatis 同一套路;主线:调用 → 填 RequestTemplate → 拦截器 → 负载均衡选实例 → Client 执行 → Decoder 解码,异常走 ErrorDecoder/Retryer/fallback;Spring 整合三件事扫描注册 FactoryBean、懒构建代理、给每个客户端独立配置;面试主线。

weixin_47626220的博客 376

Spring配置文件

本文系统介绍了配置文件的作用、Spring Boot支持的配置文件格式及其特点。首先阐述了配置文件解决硬编码问题、实现程序灵活配置的核心价值,并以手机字体小为例说明其应用场景。接着详细讲解了Spring Boot支持的三种配置文件格式(.properties、.yml、.yaml),包括它们的加载优先级和共存规则。最后分别深入分析了properties配置文件的键值对语法、@Value注解读取方式及其冗余信息缺点,以及yml配置文件的基本语法、引号使用规则和优缺点对比,为开发者选择合适的配置文件格式提供参

qq_71356343的博客 242

LangChain4J

Prompt:好比UI层,进行用户交互Langchain4j, Spring AI:好比Controller,调用AI模型各类AI模型:好比Service,提供人工智能服务向量数据库:好比Mapper,进行数据存储。

渔阳的博客 188

Spring Boot 实现数据脱敏:自定义注解 + Jackson 序列化器

加了它之后,@Sensitive 就等价于 @JsonSerialize(using = SensitiveJsonSerializer.class) ,Jackson才能识别并触发我们的序列化器。Jackson默认不认识我们自定义的 @Sensitive 注解,@JacksonAnnotationsInside 的作用是:允许把 @JsonSerialize 组合进自定义注解。时,数据库里存的一直是完整值,脱敏是一个展示的动作,而存储层要保护数据应该使用。的这一层比较好,下面是具体实现。

sjkflw121150的博客 208

零信任架构实战:基于天远企业年报信息核验构建自动化供应商准入网关

破解供应商准入核查痛点:从传统人工资质初筛到自动化数据穿透 在型 B2B 供应链采购平台的微服务架构中,供应商准入尽职调查(KYC)是保障平台交易生态健康的核心防线。传统的准入流程往往依赖业务人员手工收取企业营业执照、年度审计报告等纸质或电子扫描件,并登录多平台逐一核对。这种模式不仅流程繁琐、效率极低,而且难以实时防范非存续异常主体或信息不匹配资质的问题,

2501_94042197的博客 216

Java 并发编程筑基篇

Java并发编程基础摘要 本文档系统介绍Java并发编程核心知识,分为基础概念、进阶原理和实战三部分。基础部分涵盖: 进程/线程/协程:操作系统资源分配与调度的不同层级单位 并发概念:区分并发/并行、同步/异步等关键术语 线程原理:生命周期、状态转换、上下文切换开销 创建方式:Thread/Runnable/Callable/线程池四种实现 线程安全:可见性、原子性、有序性问题及解决方案 进阶部分深入synchronized、volatile、线程池等核心机制,最后通过实战巩固。适合Java基础复习、面试准

2201_75455813的博客 309

家政派单系统开发实战:架构设计与派单算法指南

家政派单系统是连接用户需求与上门服务人员的核心调度平台,其开发难点并不在于简单的CRUD,而是在于如何设计一套能支撑“多角色、多任务类型、高并发抢单”的架构,以及一套能让订单和师傅效率化的派单算法。一旦师傅手动拒绝系统派单,近1小时的接单权重下降50%,防止师傅只接高价单而忽略普通单,导致用户体验受损。建议优先搭建一个可配置化的规则引擎,将派单距离、服务类目、师傅等级做成后台可调整的配置项,这样后期运营调整策略时,无需修改代码。师傅接单后的轨迹追踪,是提升用户体验的关键,也是开发的难点。

zww8949111的博客 321

Helm Chart依赖管理实战

在kind: Podmetadata:spec:关键注解说明:标记为测试 Hook:测试成功后自动删除 Pod。

m0_52572472的博客 223

全国计算机二级Java选择题高频真题20道精选与试题解析

全国计算机等级考试二级Java语言程序设计选择题20道高频真题与标准试题解析,深度剖析二叉树度数计算、异常捕获匹配、多态向上转型、位运算、集合框架与多线程接口。

qq_39121450的博客 215

@Value与@ConfigurationProperties注解使用记录

本文探讨了从YAML配置文件中获取Map类型数据的两种方案:使用@Value注解和@ConfigurationProperties注解。作者首先尝试@Value方案,发现其无法直接注入Map且扩展性差,只能获取单个键值。随后转向@ConfigurationProperties方案,但遇到Map键中的冒号被自动过滤的问题。最终解决方案是调整YAML结构为列表形式,并创建包含key-value对的内部类Item,通过转换方法toMap()获取所需Map结构。文章强调了YAML配置项需采用kebab-case(短

AlickLbc的博客 156

Semaphore 源码解析

摘要: Semaphore是Java并发编程中的计数信号量工具,基于AQS(AbstractQueuedSynchronizer)实现,提供共享模式下的线程同步功能。其核心特性包括: 通过acquire/release方法获取/释放许可,许可数量可动态调整; 支持公平/非公平两种模式(FairSync/NonfairSync),公平模式保证先到先得; 内部使用CAS操作和自旋机制保证线程安全; 提供tryAcquire、drainPermits等扩展方法; 任何线程均可释放许可,不要求先获取许可。

赵丙双的博客 200

【DOCKER容器实战】-1Nginx 与 Tomcat

docker容器应用实战

ordinary的博客 357

基于C++语言的ExpressLRS开源无线电链路设计源码

该项目为ExpressLRS开源无线电链路设计的源码,主要使用C++语言编写,辅以C、Python、JavaScript、HTML、Lua、CSS等语言,共计包含586个文件,涵盖多种类型,如头文件、Python脚本、源代码、配置文件、二进制文件、JSON数据等。ExpressLRS是一款适用于无线电控制应用程序的开源无线电链路解决方案。

高速QPSK调制解调FPGA代码

Vivado工程,Verilog代码,包括调制和解调

上一篇: Day44-JSP基础语法与指令、JVM原理(补充了解)
下一篇: Day46-MVC三层架构、Filter过滤器、监听器
玄月拾忆
博客等级 码龄6年 590粉丝 · 59原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值