JSP 页面之间处理错误
如何在 JSP 页面中处理错误JSP 页面的错误处理主要分为页面内局部处理和全局统一错误页面两类,核心目标是捕获异常并返回友好提示,而非直接暴露异常堆栈给用户。 方式 1:页面内局部错误处理(page 指令配置)通过page指令的errorPage和isErrorPage属性,实现单个页面的异常跳转: errorPage:指定当前页面抛出未捕获异常时,跳转的错误处理页面路径; isErrorPage:标记当前页面为错误页面(设为true后可使用exception隐式对象)。 步骤示例:① 业务页面(index.jsp):配置错误跳转 123456<%@ page contentType="text/html;charset=UTF-8" errorPage="error.jsp" %> <%-- 异常时跳转到error.jsp --%><% // 模拟抛出异常 int a = 10 / 0; // 算术异常%> ②...
JSP 页面之间共享数据
如何在 JSP 页面之间共享数据JSP 页面间共享数据的核心是利用不同作用域的隐式对象,数据会绑定到对应作用域中,其他页面可通过getAttribute()或 EL 读取,按作用域从窄到宽分为 4 类方式: 作用域 核心对象 数据生命周期 适用场景 page(页面) pageContext 仅当前 JSP 页面有效(跳转后失效) 单个页面内的临时数据 request(请求) request 单次请求内有效(转发后仍可用) 同一请求的多个页面(如转发) session(会话) session 单个用户会话内有效(默认 30 分钟) 跨请求的用户专属数据(如登录信息) application(应用) application 整个 Web 应用运行期间有效 全局共享数据(如系统配置) 方式 1:page 作用域(仅当前页面)通过pageContext绑定数据,仅当前页面可访问,跳转 / 刷新后失效: 1234<%-- 绑定数据 --%><% pageContext.setAttribute("msg",...
JSP简介
JSP简介JSP(Java Server Pages)是由 Sun Microsystems(现 Oracle)推出的动态网页开发技术,它以 Java 语言为核心,允许在 HTML/XML 等静态页面中嵌入 Java 代码、标签和表达式,最终由 Web 服务器(如 Tomcat)编译成 Servlet 执行,生成动态的 HTML 响应返回给客户端。 简单来说,JSP 是 Servlet 的 “语法糖”—— 它本质上是 Servlet 的一种简化形式,将页面的静态展示(HTML)和动态逻辑(Java)融合,降低了动态网页开发的复杂度。 优点 动静结合:直接在 HTML 中嵌入 Java 逻辑,无需像纯 Servlet 那样通过out.println()拼接 HTML,页面结构更清晰,前端开发与后端逻辑可分离协作。 跨平台性:基于 Java,可在所有支持 Java 的 Web 服务器(Tomcat、Jetty、JBoss 等)和操作系统(Windows/Linux/Mac)上运行。 组件化复用:支持通过...
<%@ include %>`和`<jsp:include>`有什么区别
<%@ include %>和<jsp:include>有什么区别?<%@ include %>(include 指令)和<jsp:include>(include 动作)均用于在 JSP 中包含其他资源,但执行时机、编译方式、数据共享等核心逻辑差异显著,是 JSP 开发的高频考点: 维度 <%@ include file="xxx.jsp" %>(指令) <jsp:include page="xxx.jsp" />(动作) 执行时机 编译阶段(JSP → Servlet 时) 运行阶段(Servlet 处理请求时) 编译结果 被包含文件的内容直接嵌入当前 JSP,最终生成单个 Servlet 被包含文件单独编译为 Servlet,当前 Servlet 运行时调用其输出,最终生成多个 Servlet 资源路径 仅支持静态路径(如header.jsp),不能用变量 /...
I/O流与I/O框架
I/O流与I/O框架全面总结一、Java I/O流基础1. I/O流分类按数据流向 输入流:从数据源读取数据(InputStream/Reader) 输出流:向目标写入数据(OutputStream/Writer) 按数据类型 字节流:以字节为单位(8位),处理二进制数据 InputStream/OutputStream 字符流:以字符为单位(16位),处理文本数据 Reader/Writer 按功能 节点流:直接操作数据源/目标的流 处理流:对现有流进行包装,提供增强功能 2. 核心类体系字节流体系text 123456789101112131415InputStream (抽象类)├─ FileInputStream (文件输入)├─ ByteArrayInputStream (内存数组输入)├─ FilterInputStream (装饰器父类)│ ├─ BufferedInputStream (缓冲流)│ ├─ DataInputStream...
异常和泛型
异常和泛型知识点总结异常处理异常概念 异常是程序运行时发生的不正常情况,会中断正常的指令流 Java中所有异常都继承自Throwable类,分为Error和Exception两大类 异常分类 Error:严重错误,程序无法处理(如内存溢出) Exception: 检查异常(Checked Exception):必须处理(如IOException) 非检查异常(Unchecked Exception/RuntimeException):可选择性处理(如NullPointerException) 异常处理机制 try-catch-finally: java 123456789try { // 可能抛出异常的代码} catch (ExceptionType1 e) { // 处理特定异常} catch (ExceptionType2 e) { // 处理另一种异常} finally { //...
匿名内部类与Lambda表达式
Stream流知识点总结Steam流是Java 8引入的一个强大的API,用于处理集合数据的函数式编程方式。以下是关于Steam流的主要知识点总结: 1. 基本概念 Stream:不是数据结构,而是对数据源(集合、数组等)的高级抽象,用于高效处理大量数据 特点: 不存储数据(只是数据源的视图) 不修改源数据(操作会产生新Stream) 惰性执行(终端操作时才执行) 可消费性(Stream只能被消费一次) 2. 创建Stream的方式java 1234567891011121314// 从集合创建List<String> list = Arrays.asList("a", "b", "c");Stream<String> stream = list.stream();// 从数组创建String[] array = {"a", "b", "c"};Stream<String> stream =...
集合框架概述
集合框架概述Java集合框架(Java Collections Framework)是一组用来存储和操作数据的类和接口,位于java.util包中。它提供了高效的数据结构和算法,简化了程序员的工作。 集合框架主要接口1. Collection接口 (根接口) List:有序集合,元素可重复 Set:无序集合,元素不可重复 Queue:队列,先进先出(FIFO) 2. Map接口 (独立于Collection) 键值对存储结构 主要实现类List接口实现类 ArrayList 基于动态数组实现 随机访问快(O(1)),插入删除慢(O(n)) 线程不安全 LinkedList 基于双向链表实现 插入删除快(O(1)),随机访问慢(O(n)) 实现了Deque接口,可用作队列或栈 Vector 类似ArrayList,但线程安全 性能较差,已被ArrayList取代 Stack...
匿名内部类与Lambda表达式
匿名内部类与Lambda表达式知识点总结匿名内部类基本概念 匿名内部类是没有名字的内部类 用于快速创建某个类或接口的子类/实现类的实例 适合只使用一次的类实现 语法结构java 1234new 父类构造器(参数列表) | 实现接口() { // 匿名内部类的类体部分 方法重写/实现}; 特点 必须继承一个父类或实现一个接口 只能创建一个实例 没有构造方法(但可以有实例初始化块) 可以访问外部类的成员,包括私有成员 如果访问局部变量,该变量必须是final或事实上final的 使用场景 事件监听器 线程实现 需要快速实现某个接口或抽象类 Lambda表达式基本概念 Java 8引入的函数式编程特性 用于简化函数式接口的实现 本质是一个匿名函数 语法结构java 123(parameters) -> expression或(parameters) -> { statements;...
集合框架概述
一、抽象类(Abstract Class)1. 基本特性 使用abstract关键字声明 可以包含抽象方法和具体方法 不能直接实例化(不能new) 可以包含成员变量、构造方法、普通方法 2. 语法结构java 1234567891011121314151617public abstract class Animal { // 成员变量 protected String name; // 构造方法 public Animal(String name) { this.name = name; } // 抽象方法(无实现) public abstract void makeSound(); // 具体方法 public void eat() { System.out.println(name + "正在吃东西"); }} 3....



