元素⽔平垂直居中的⽅法
元素⽔平垂直居中的⽅法实现元素⽔平垂直居中的⽅式: • 12345678910111213141516171819202122232425<style>.father{width:500px;1234 height:300px;5 border:1px solid #0a3b98;6 position: relative;7 }8 .son{9 width:100px;10 height:40px;11 background: #f0a238;12 position: absolute;13 top:0;14 left:0;15 right:0;16 bottom:0;17 margin:auto;18 }19 </style>20 <div class="father">21 <div class="son"></div>22 </div> 利⽤定位+margin:auto ⽗级设置为相对定位,⼦级绝对定位...
盒⼦模型
盒⼦模型当对⼀个⽂档进⾏布局(layout)的时候,浏览器的渲染引擎会根据标准之⼀的 CSS 基础框盒模型 (CSS basic box model),将所有元素表⽰为⼀个个矩形的盒⼦(box) ⼀个盒⼦由四个部分组成: content 、 padding 、 border 、 margin 从上图可以看到: • 盒⼦总宽度 = width + padding + border + margin; • 盒⼦总⾼度 = height + padding + border + margin 也就是, width/height 只是内容⾼度,不包含 padding 和 border 值 所以上⾯问题中,设置 width 为200px,但由于存在 padding ,但实际上盒⼦的宽度有240px IE 怪异盒⼦模型 • 盒⼦总宽度 = width + margin; • 盒⼦总⾼度 = height + margin; 也就是, width/height 包含了 padding 和 border...
动态代理(Dynamic Proxy)
Java 动态代理(Dynamic Proxy)一、什么是动态代理Java 动态代理是一种在运行时创建代理类并处理方法调用的机制,它不需要事先写好代理类,而是通过反射 API 动态生成代理对象。 它常用于以下场景: 日志记录 权限控制 性能监控 Spring AOP 实现原理 二、JDK 动态代理原理JDK 动态代理主要依赖两个核心类/接口: java.lang.reflect.Proxy java.lang.reflect.InvocationHandler JDK 动态代理要求被代理的类 必须实现接口。 三、使用步骤1. 定义接口1234java复制编辑public interface UserService { void login(String username); void logout();} 2. 实现该接口的类(目标类)1234567891011java复制编辑public class UserServiceImpl implements UserService { @Override ...
反射机制(Reflection)
Java 反射机制(Reflection)一、什么是反射反射(Reflection) 是 Java 提供的一种机制,它允许程序在运行时动态获取类的信息(方法、属性、构造方法等)以及操作对象本身。 通过反射可以: 在运行时获取类的完整结构 动态创建对象 动态调用方法、访问字段 实现解耦、插件式开发、框架封装等 反射是实现诸如 Spring、MyBatis、Junit、Tomcat、IDEA 插件系统 的核心技术之一。 二、反射的核心类反射主要在 java.lang.reflect 和 java.lang.Class 包中,主要类包括: 类/接口 功能说明 Class<?> 表示类或接口的字节码对象 Field 表示类中的成员变量 Method 表示类中的方法 Constructor 表示类的构造方法 Modifier 表示修饰符工具类 三、反射的基本操作1. 获取类的 Class 对象(3种方式)123456789java复制编辑// 方式一:通过类名.classClass<?> clazz1 =...
Java 线程池(Thread Pool)
Java 线程池(Thread Pool)一、什么是线程池线程池 是一种线程管理机制,用于提前创建并复用固定数量的线程,以避免频繁地创建/销毁线程带来的资源开销。 主要优势包括: 降低资源消耗(复用线程) 提高响应速度(任务提交后可立即执行) 方便管理线程(线程数可控,支持超时、拒绝策略等) 二、线程池的核心类:Executor 和 ThreadPoolExecutorJava 中的线程池定义在 java.util.concurrent 包下,主要接口和类包括: 接口/类名 说明 Executor 线程池顶层接口,定义任务执行方法 ExecutorService 扩展接口,支持任务返回值、关闭池 ThreadPoolExecutor 线程池的核心实现类 Executors 工厂类,用于创建常见线程池 Future 代表异步任务结果 三、使用线程池的三种方式1. 使用 Executors 工厂类(不推荐用于生产)1234567java复制编辑ExecutorService pool =...
Request Dispatcher 的 forward () 和 include () 有什么区别?
Request Dispatcher 的 forward () 和 include () 有什么区别?RequestDispatcher(请求调度器)是 Servlet/JSP 中用于在服务器内部转发 / 包含资源的核心接口,forward()(转发)和include()(包含)是其两个核心方法,本质都是服务器内部操作(客户端无感知),但执行逻辑、响应处理、使用场景差异显著: 核心区别对比表: 维度 forward ()(请求转发) include ()(请求包含) 执行逻辑 将请求完全移交到目标资源,当前资源停止输出; 执行目标资源并获取其输出,再回到当前资源继续输出; 响应控制权 目标资源完全接管响应(当前资源的输出会被忽略); 当前资源保留响应控制权,目标资源的输出嵌入当前响应; 输出内容 仅目标资源的输出发送到客户端; 当前资源 + 目标资源的输出合并后发送到客户端; 调用时机 需在当前资源未输出任何内容前调用(否则抛异常); 可在当前资源任意位置调用(即使已有输出); 响应状态码 /...
JSP 中有哪些作用域
JSP 中有哪些作用域JSP 中的作用域(Scope)是数据的有效范围,用于控制页面间数据共享的生命周期,核心分为 4 类,按 “有效范围从窄到宽” 排序: 作用域名称 对应隐式对象 核心类 数据生命周期 访问方式(EL) 典型应用场景 page(页面) pageContext PageContext 仅当前 JSP 页面有效,页面跳转 / 转发后立即失效;(甚至当前页面的不同脚本块执行完也不共享) ${pageScope.xxx} 单个页面内的临时变量(如局部计算结果) request(请求) request HttpServletRequest 单次 HTTP 请求内有效;✅ 服务器内部转发(forward)后仍可用;❌ 重定向(redirect)后失效(新请求) ${requestScope.xxx} 同一请求的多页面数据共享(如表单提交后转发展示) session(会话) session HttpSession 单个用户的会话周期内有效;默认 30...
JSP 中获取表单数据
JSP 中获取表单数据JSP 中获取表单数据的核心是通过request隐式对象(HttpServletRequest),结合 EL/JavaBeans 等方式,支持GET/POST 提交的表单参数读取,具体有以下 3 种常用方式: 前提:表单示例(POST 提交)1234567<form action="submit.jsp" method="post"> 用户名:<input type="text" name="username"/><br> 年龄:<input type="number" name="age"/><br> 爱好:<input type="checkbox" name="hobby" value="读书"/>读书 <input...
JSP 中的 JavaBeans
JSP 中的 JavaBeansJSP 中的 JavaBeans 是遵循特定设计规范的 Java 类,本质是普通的 Java POJO(Plain Old Java Object),用于封装业务数据(如用户信息、订单信息),实现数据与页面逻辑的分离,是 JSP 中实现 “数据封装 - 复用” 的核心组件。 JavaBeans 必须遵循的规范: 类必须是公共的(public),且有无参构造方法(默认或手动定义); 成员变量(属性)私有化(private); 提供公共的 1getter/setter 方法: getXxx():读取属性xxx(布尔类型可简化为isXxx()); setXxx():设置属性xxx; 可选实现java.io.Serializable接口(支持序列化,便于数据传输 / 持久化)。 示例(标准 JavaBean):123456789101112131415161718192021222324252627package com.example;import java.io.Serializable;//...
JSP 中的 autoFlush 属性
JSP 中的 autoFlush 属性autoFlush是 JSP page指令的属性,用于控制 JSP 内置对象out(JspWriter)的缓冲区满时是否自动刷新输出,与buffer属性配合使用(buffer定义缓冲区大小)。 核心细节: 语法格式:<%@ page autoFlush="true|false" buffer="size|none" %>; 默认值:true(缓冲区满时自动刷新); 关键概念 : out对象的缓冲区:JSP 输出内容时,先写入内存缓冲区(默认 8KB),而非直接发送到客户端; 刷新(flush):将缓冲区中的内容一次性发送到客户端,并清空缓冲区。 不同取值的行为: autoFlush 值 缓冲区状态 行为描述 true(默认) 缓冲区未满 内容暂存缓冲区,直到缓冲区满 / 页面结束 / 手动调用out.flush()时发送; true 缓冲区满 自动刷新缓冲区(发送内容 + 清空),无异常,继续执行; false 缓冲区未满 与 true...



