一、JSP 概述

1. 什么是 JSP

JSP 全称Java Server Pages(Java 服务器页面),是运行在服务器端的动态网页技术,由 Sun 公司主导制定。它本质是HTML + Java 代码的结合体,最终会被服务器编译为 Servlet(Java 后端程序),用于快速开发动态交互的 Web 页面(如登录、数据展示、表单提交等)。

2. JSP 核心特点

  1. 简化开发:直接在 HTML 中嵌入 Java 代码,不用像纯 Servlet 那样拼接 HTML 字符串;
  2. 跨平台:一次编写,可在 Windows、Linux 等所有支持 Java 的服务器上运行;
  3. 本质是 Servlet:服务器会将 JSP 翻译成.java文件,再编译为.class字节码文件执行;
  4. 职责分离:负责页面展示(视图层),搭配 JavaBean、Servlet 实现 MVC 架构。

3. JSP 执行流程(关键)

  1. 客户端浏览器请求 JSP 页面;
  2. 服务器将 JSP翻译为 Java Servlet 源文件;
  3. 服务器将 Servlet 源文件编译为字节码文件;
  4. 加载执行字节码,生成 HTML 响应给浏览器。

二、JSP 脚本元素

JSP 脚本元素是嵌入在 HTML 中的 Java 代码,用于实现页面的动态逻辑,共分为 3 种:

1. 表达式脚本(<%= %>)

作用:直接输出变量、表达式的结果到页面,自动打印,无需 out.print ()

语法

<%= 变量/表达式/常量 %>

示例

当前时间:<%= new java.util.Date() %> 
用户名:<%= "张三" %>
计算结果:<%= 10 + 20 %>

特点:结尾不能加分号,代码会被翻译到out.print()中。

2. 脚本片段(<% %>)

作用:编写多行 Java 逻辑代码(循环、判断、变量定义等)。

语法

<% 多行Java代码 %>

示例

<%
    // 定义变量
    String name = "JSP学习";
    // 循环输出
    for(int i=1; i<=3; i++){
        out.print("第"+i+"次:"+name+"<br>");
    }
%>

特点

  • 可以编写任意 Java 代码;
  • 多个脚本片段之间可以互相访问变量;
  • 代码会被原封不动翻译到 Servlet 的_jspService()方法中。

3. 声明脚本(<%! %>)

作用:定义 JSP 页面的全局成员(成员变量、方法、静态代码块)。

语法

<%! 全局变量/方法/静态代码块 %>

示例

<%!
    // 全局成员变量
    private int count = 0;
    // 全局方法
    public int add(int a,int b){
        return a+b;
    }
%>

<!-- 调用声明的变量和方法 -->
访问次数:<%= count++ %>
求和结果:<%= add(10,5) %>

特点

  • 代码会被翻译到 Servlet 类中,方法之外
  • 所有客户端共享声明的成员变量;
  • 不能直接使用 JSP 内置对象(如 out、request)。

三、JSP 指令

JSP 指令是给服务器看的配置信息,不会直接输出内容到页面,用于设置页面全局属性、导入资源等。

通用语法

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

三大核心指令

1. page 指令(最常用)

作用:定义 JSP 页面的全局配置(导包、编码、会话等)。常用属性

  • import:导入 Java 类 / 包(唯一可重复写的属性);
  • pageEncoding:设置页面编码格式(如 UTF-8);
  • contentType:设置响应内容类型和编码;
  • session:是否启用 session(true/false);
  • errorPage:指定当前页面出错时跳转的错误页面。

示例

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date,java.util.List"%>
<%@ page errorPage="error.jsp" session="true" %>
2. include 指令

作用静态包含其他页面(JSP/HTML),将多个页面合并为一个 Servlet 编译执行。特点:编译时合并,效率高,共享同一个作用域。

语法

<%@ include file="被包含的页面路径" %>

示例

<!-- 包含公共头部 -->
<%@ include file="header.jsp" %>
<!-- 包含公共底部 -->
<%@ include file="footer.html" %>
3. taglib 指令

作用:引入 JSP 标签库(如 JSTL 标准标签库、自定义标签),替代脚本片段,简化页面。

语法

<%@ taglib prefix="前缀" uri="标签库地址" %>

示例(引入 JSTL 核心标签库):

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 使用标签 -->
<c:out value="Hello JSTL"></c:out>

总结

  1. JSP 概述:服务器端动态网页技术 = HTML + Java,本质是 Servlet;
  2. 脚本元素
    • <%= %>:输出内容到页面;
    • <% %>:编写 Java 逻辑代码;
    • <%! %>:定义全局成员;
  3. 三大指令
    • page:页面全局配置;
    • include:静态包含页面;
    • taglib:引入标签库。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐