news 2026/5/12 17:57:09

jsp概述和jsp脚本元素和jsp指令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jsp概述和jsp脚本元素和jsp指令

一、JSP 概述

1. 什么是 JSP

JSP:Java Server Pages,Java 服务端页面。Sun 公司推出的动态网页技术,用于代替 Servlet 做页面展示。

2. 核心本质(重点)

JSP 本质就是一个 Servlet

  • JSP 第一次被访问时,Tomcat 会自动把 JSP翻译 → 编译 → 运行
  • 翻译后生成.java文件,继承HttpServlet
  • JSP 只是简化写法:HTML + Java 代码混合编写

3. 为什么要用 JSP

  • Servlet:写页面非常麻烦,需要大量out.write()拼接 HTML
  • JSP:以 HTML 为主,嵌入少量 Java 代码,适合开发视图页面

4. JSP 运行原理

  1. 客户端浏览器访问xxx.jsp
  2. Tomcat 查找 JSP 文件
  3. 翻译:JSP → Java 源文件(Servlet)
  4. 编译:Java → class 字节码文件
  5. 实例化 Servlet,执行_jspService()方法
  6. 生成 HTML 响应给浏览器

5. JSP 与 Servlet 分工

  • Servlet:接收请求、处理业务逻辑、操作数据(控制器)
  • JSP:展示数据、渲染页面(视图)

二、JSP 脚本元素(3 种)

作用:在 JSP 页面中嵌入 Java 代码

1. 脚本片段(代码片段)

格式

jsp

<% Java代码; %>
  • 编写多行 java 代码
  • 代码原样翻译到_jspService()方法内部
  • 局部变量,不能定义方法

示例:

jsp

<% String name = "张三"; int age = 20; System.out.println(name); %>

2. 表达式脚本(输出语句)

格式

jsp

<%= 变量/表达式 %>
  • 作用:向页面输出内容
  • 底层等价于out.print();
  • 不能加分号

示例:

jsp

姓名:<%= name %> 年龄:<%= age %>

3. 声明脚本

格式

jsp

<%! 成员变量/方法 %>
  • 翻译到类体中,不在方法里
  • 可以定义:成员变量、全局方法、静态代码块
  • 极少使用,存在线程安全问题

示例:

jsp

<%! // 成员变量 int num = 10; // 自定义方法 public void test(){ System.out.println("JSP声明方法"); } %>

三种脚本元素 核心区别总结

表格

脚本类型格式翻译位置作用
脚本片段<% 代码 %>_jspService 方法内执行 java 逻辑、定义局部变量
表达式脚本<%= 内容 %>_jspService 方法内页面输出,无分号
声明脚本<%! 代码 %>类体位置定义成员变量、方法

三、JSP 指令 详细分析

1. 指令作用

JSP 指令用来设置 JSP 页面全局属性指挥 Tomcat 如何翻译当前 JSP 文件

通用格式

jsp

<%@ 指令名 属性1="值" 属性2="值" %>

2. 三大常用指令

  • page页面指令
  • include包含指令
  • taglib标签库指令

① page 指令(最常用)

作用:设置当前页面的全局配置

常用属性详解:

jsp

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" import="java.util.List,java.util.ArrayList" session="true" buffer="8kb" isErrorPage="false" %>
  1. contentType设置响应类型与编码,等同于response.setContentType()
  2. pageEncoding当前 JSP 文件本身的编码格式
  3. import导入 Java 类包,多个类用逗号分隔
  4. session是否自动创建 session 对象,默认 true
  5. isErrorPage是否为错误页面,true 可使用异常对象 exception
  6. buffer设置页面输出缓冲区大小

② include 包含指令(静态包含)

格式

jsp

<%@ include file="目标页面路径" %>
  • 特点:静态包含
  • 翻译阶段:把目标页面原封不动合并到当前 JSP
  • 只生成一个 Java 文件
  • 适合引入:顶部导航栏、底部版权栏

③ taglib 指令

格式

jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

作用:引入第三方标签库(如 JSTL 核心标签),替代 JSP 脚本,消除页面 java 代码,项目开发必用。


四、静态包含 vs 动态包含

  1. 静态包含<%@ include file="" %>
  • 编译前合并代码,只生成一个 Servlet
  • 运行效率高,不能传参
  1. 动态包含<jsp:include page=""></jsp:include>
  • 分别翻译为两个 Servlet,运行时调用
  • 可以传递参数,功能更强

五、整体核心概论

  1. JSP 概述JSP 是运行在服务端的动态页面,本质是 Servlet,HTML 中嵌入 Java 代码,专门用于视图展示

  2. 三大脚本元素

  • <% 代码 %>:脚本片段,写逻辑
  • <%= 表达式 %>:页面输出
  • <%! 变量/方法 %>:声明成员,少用
  1. 三大 JSP 指令
  • page:配置页面编码、导包、页面属性
  • include:静态包含,复用公共页面
  • taglib:引入标签库,优化页面
  1. 运行流程:JSP 文件 → 翻译 java → 编译 class → 实例化 Servlet → 运行输出页面。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 17:54:06

开放-构建-创新-连接:AMD AI开发者日即将登陆上海

近日&#xff0c;AMD宣布其面向AI 开发者的年度技术盛会2026年AMD AI 开发者日 (AMD AI DevDay 2026) 将于 5 月 19 日在上海前滩香格里拉酒店举行&#xff0c;AMD 董事会主席兼首席执行官 Lisa Su 博士也将出席并发表演讲。 本着“开放-构建-创新-连接”的理念&#xff0c;本…

作者头像 李华
网站建设 2026/5/12 17:52:10

大厂前端AI项目汇总分析

大厂前端AI项目主要集中在端侧模型推理、智能体&#xff08;Agent&#xff09;框架、AIGC工程化、AI原生工具链、多模态交互五大方向&#xff0c;均有明确落地场景与招聘需求。一、字节跳动&#xff08;前端AI重灾区&#xff09; 1. 豆包多模态交互与端侧推理 负责豆包App/Web端…

作者头像 李华
网站建设 2026/5/12 17:51:07

接入Taotoken后对于API调用成功率与路由容灾的实际感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 接入Taotoken后对于API调用成功率与路由容灾的实际感受 1. 背景与迁移决策 我们团队负责维护一个面向内部员工的智能问答系统&…

作者头像 李华
网站建设 2026/5/12 17:51:04

深度解析:如何通过技术手段绕过Cursor API限制实现无限使用

深度解析&#xff1a;如何通过技术手段绕过Cursor API限制实现无限使用 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached you…

作者头像 李华