JSP 隐式对象
JSP 指令JSP 指令(Directive)是告知 JSP 容器如何编译当前 JSP 页面的配置型标签,作用于整个 JSP 页面,不产生任何输出内容,仅影响 JSP 的编译过程。 语法格式:1<%@ 指令名 属性1="值1" 属性2="值2" ... %> 核心分类(3 类常用指令):(1)page 指令(最核心)作用:定义 JSP 页面的全局属性(编码、语言、错误页面、会话等)。常用属性: language:指定页面使用的脚本语言(默认java); contentType:设置响应的 MIME 类型和编码(如text/html;charset=UTF-8); pageEncoding:设置 JSP 页面本身的编码(推荐与contentType编码一致); import:导入 Java 类 /...
JSP 隐式对象
JSP 隐式对象JSP 隐式对象(Implicit Objects)是容器自动创建、无需手动声明即可在 JSP 页面中直接使用的内置对象,本质是 JSP 编译为 Servlet 后,_jspService()方法中预先定义的局部变量。 这些对象封装了 Web 请求 / 响应、会话、上下文等核心信息,简化了开发者对 Web 容器资源的操作。核心隐式对象及作用如下: 隐式对象 类型 核心作用 request HttpServletRequest 封装单次请求的所有信息(参数、头信息、Cookie 等),作用域为当前请求 response HttpServletResponse 封装对客户端的响应(设置响应头、状态码、输出内容等) session HttpSession 封装用户会话信息,作用域为当前会话(默认 30 分钟无操作失效) application ServletContext 封装整个 Web 应用的上下文信息,作用域为应用级(全局共享) out JspWriter 向客户端输出内容(替代 Servlet...
JSP 和 Servlet 有什么区别
JSP 和 Servlet 有什么区别JSP 和 Servlet 本质上是 “同源” 的(JSP 最终编译为 Servlet 执行),但在语法形式、适用场景、开发方式上有核心区别,具体对比如下: 维度 Servlet JSP 本质 纯 Java 类(继承HttpServlet) 带 Java 嵌入的 HTML 页面(编译后为 Servlet) 语法形式 完全用 Java 代码编写,需通过out.println()拼接 HTML HTML 为主,Java 代码嵌入在<% %>等标签中,无需拼接 HTML 开发侧重 适合处理业务逻辑、后台控制(如接收请求、调用服务、跳转页面) 适合处理页面展示(动态渲染 HTML 内容) 执行流程 直接编译为字节码,启动即加载(可配置) 首次请求时编译为 Servlet,后续复用编译结果 调试难度 纯 Java 代码,调试工具(IDEA/Eclipse)支持好 混合 HTML 和 Java,调试需定位到编译后的 Servlet...
JSP 动作标签
JSP 动作标签JSP 动作标签(JSP Action Tags)是基于 XML 语法的内置标签,用于在 JSP 页面中执行特定的动态操作(如跳转页面、包含文件、操作 JavaBean、传递参数等),替代部分 Java 脚本代码,让 JSP 更简洁、易维护。 动作标签由 JSP 容器直接解析执行,无需编译为 Java 代码(区别于脚本元素),核心特点是 “声明式编程”—— 无需写 Java 逻辑,仅通过标签配置完成操作。 语法格式:12345<jsp:动作标签名 属性1="值1" 属性2="值2" ... /><!-- 或带体的形式 --><jsp:动作标签名> 子标签/内容</jsp:动作标签名> 常用核心动作标签: 动作标签 核心作用 <jsp:include> 动态包含另一个资源(JSP/HTML/Servlet),在运行时加载并执行被包含资源,与当前页面生成两个...
JSP 脚本元素
JSP 脚本元素JSP 脚本元素(Scripting Elements)是嵌入在 JSP 页面中、用于编写 Java 代码的标签集合,是 JSP 实现动态逻辑的核心载体。脚本元素的代码会被 JSP 容器编译到 Servlet 的对应位置,最终执行并生成动态响应。 根据功能和编译位置的不同,JSP 脚本元素分为三类: 类型 语法格式 核心作用 脚本段(Scriptlet) <% Java代码 %> 编写页面的核心业务逻辑(如变量定义、条件判断、循环、调用方法等),编译后嵌入_jspService()方法中 声明标签 <%! Java代码 %> 定义 JSP 对应的 Servlet 类的成员变量 / 成员方法(如全局变量、自定义方法),编译后位于_jspService()方法外 表达式标签 <%= 表达式 %> 输出 Java 表达式的结果到客户端(无需写out.println()),编译后转为out.print(表达式) 12345678910111213141516<%-- 声明标签:定义成员变量和方法...
JSP 的生命周期
JSP 的生命周期JSP 的生命周期本质上是Servlet 的生命周期(因为 JSP 最终会被编译为 Servlet 类),分为以下 7 个阶段: 阶段 1:编译阶段(JSP → Servlet) Web 容器(如 Tomcat)首次接收到 JSP 请求时,会先将 JSP 文件解析为 Java 源文件(Servlet 类,命名规则如xxx_jsp.java); 再将 Java 源文件编译为字节码文件(xxx_jsp.class)。 后续请求若 JSP 文件未修改,容器会跳过编译阶段,直接执行已编译的 Servlet。 阶段 2:加载与实例化容器加载编译后的 Servlet 类,并创建该类的实例(通过newInstance())。 阶段 3:初始化(init ())容器调用 JSP 对应的 Servlet 实例的jspInit()方法(JSP 专属的初始化方法,可通过<%! void jspInit() { ... } %>重写),完成初始化操作(如加载配置、创建数据库连接池)。 该方法仅在实例创建后执行一次。 阶段...
Scriptlet 和 Declaration 标签
JSP 的 Scriptlet 和 Declaration 标签有什么区别?Scriptlet(脚本段)和 Declaration(声明标签)是 JSP 脚本元素的核心,但编译位置、作用域、使用场景完全不同,核心区别如下: 维度 Scriptlet(<% ... %>) Declaration(<%! ... %>) 编译位置 嵌入 Servlet 的_jspService()方法中 位于 Servlet 类的_jspService()方法外(类级别) 变量作用域 局部变量(仅当前请求的_jspService()方法有效) 成员变量(Servlet 实例级别,所有请求共享) 方法定义 不能定义方法(仅能调用方法) 可定义成员方法(整个 Servlet 实例可调用) 生命周期 随每次请求创建 / 销毁(局部变量) 随 Servlet 实例创建 /...
JSP 表达式语言 (EL)
JSP 表达式语言 (EL)JSP 表达式语言(Expression Language,EL)是一种简化 JSP 页面中数据访问的轻量级语言,核心目的是替代 JSP 表达式标签(<%= ... %>)和部分脚本段代码,以更简洁的语法读取不同作用域(page、request、session、application)中的数据,无需编写复杂的 Java 代码。 核心特点: 语法简洁:核心格式为${表达式},支持运算符、隐式对象、数据访问; 自动类型转换:无需手动转换字符串与基本类型(如${10 + "20"}结果为 30); 空值安全:访问不存在的属性 / 变量时不会抛出空指针异常,返回空字符串(""); 与 JSTL 配合:常结合 JSTL 标签(如<c:forEach>)实现逻辑控制,彻底替代脚本段。 核心用法:(1)访问作用域数据123456789101112<%--...
JSP 标签库
JSP 标签库JSP 标签库(Tag Library)是一组预定义 / 自定义的标签集合,以 XML 格式的标签替代 JSP 中的 Java 脚本元素(Scriptlet、声明、表达式),实现 “无脚本化” 的 JSP 开发。 标签库本质是对 Java 代码的封装:每个标签对应一段预定义的 Java 逻辑,开发者只需通过标签的属性配置即可调用对应逻辑,无需编写底层 Java 代码。 核心分类: 标签库类型 示例 核心用途 标准标签库(JSTL) JSTL Core(核心)、JSTL SQL、JSTL Format 提供通用逻辑(循环、条件判断、格式化、数据库操作),是 JSP 官方标准库; 自定义标签库 开发者自行编写的标签 封装业务专属逻辑(如权限校验、数据展示),复用性强; 第三方标签库 Struts 标签库、Spring 标签库 框架提供的专属标签(如表单提交、数据绑定); 使用前提(以 JSTL 为例): 引入标签库依赖(JAR 包); 通过 1taglib 指令在 JSP 页面声明标签库: 12<%--...
isScriptingEnabled 属性
isScriptingEnabled 属性isScriptingEnabled是 JSP page指令的核心属性之一,用于控制当前 JSP 页面是否允许使用 Java 脚本元素(包括 Scriptlet<% ... %>、声明标签<%! ... %>、表达式标签<%= ... %>)。 核心细节: 语法格式:<%@ page isScriptingEnabled="true|false" %>; 默认值:true(允许使用所有 Java 脚本元素); 取值为 false 时的效果 : 页面中所有 Java 脚本元素(<% %>/<%! %>/<%= %>)都会被 JSP 容器拒绝,编译时抛出异常; 强制开发者使用 EL、JSTL、JSP 动作标签替代脚本元素,实现 “无脚本 JSP”(推荐的企业级开发规范)。 应用场景: 规范团队开发:避免 JSP 页面中嵌入大量杂乱的 Java...



