当前位置: 首页 > backend >正文

Jsp技术入门指南【六】jsp脚本原理及隐式对象

Jsp技术入门指南【六】jsp脚本原理及隐式对象

  • 前言
  • 一、JSP 脚本元素
    • 1.1 声明
    • 1.2 表达式
    • 1.3 脚本标签
  • 二、JSP 的隐式对象是什么
  • 三、隐式对象详解
    • out
    • request
    • session
    • application
    • config
    • exception


前言

  • 在之前的博客中,我们已经介绍了JSP的环境搭建、编译文件查找以及生命周期等基础知识。这些内容为理解JSP的工作原理奠定了基础
  • 接下来,我们将深入剖析JSP页面的核心结构,探索动态页面开发的底层逻辑。
  • 掌握JSP页面结构是高效开发动态Web应用的关键。
  • 本文将从基础部件到核心指令逐步解析,帮助你夯实JSP开发基础,为后续的实战开发做好准备

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482


一、JSP 脚本元素

1.1 声明

  • 在 JSP 里,声明用于定义变量与方法。这些声明会被转换为 Servlet 类的成员变量和方法。声明的语法格式如下:
<%!// 变量声明int count = 0;// 方法声明public void incrementCount() {count++;}
%>

在上述示例中,count 是成员变量,incrementCount 是成员方法。

1.2 表达式

表达式用于在 JSP 页面输出值。它会被转换为 Servlet 中 out.print() 方法的调用。表达式的语法格式如下:

<%= 表达式 %>

示例如下:

<%int num = 10;
%>
<p>数字是: <%= num %></p>

上述代码会输出 数字是: 10

1.3 脚本标签

脚本标签用于在 JSP 页面中嵌入 Java 代码。它会被转换为 Servlet 中 _jspService 方法的一部分。脚本标签的语法格式如下:

<%// Java 代码int a = 5;int b = 3;int sum = a + b;out.print("两数之和是: " + sum);
%>

二、JSP 的隐式对象是什么

  • JSP 隐式对象指的是在 JSP 页面里无需显式声明就能够使用的对象
  • 这些对象是由 JSP 容器自动创建并提供的,在 JSP 页面中可以直接使用。常见的隐式对象有 outrequestresponsesessionapplicationconfigpagepageContextexception

三、隐式对象详解

out

out 对象属于 JspWriter 类的实例,用于向客户端输出内容。示例如下:

<%out.print("欢迎访问本页面!");
%>

request

request 对象是 HttpServletRequest 类的实例,用于获取客户端发送的请求信息,像请求参数、请求头、请求方法等。示例如下:

<%String username = request.getParameter("username");out.print("你输入的用户名是: " + username);
%>

session

session 对象是 HttpSession 类的实例,用于在多个请求之间跟踪用户会话。在一个会话里,session 是唯一的。

<%--Created by IntelliJ IDEA.User: DELLDate: 2025/4/10Time: 19:09To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%out.print("hello111");int a; // 这里声明了变量 a,但未使用String username = request.getParameter("uesename");if (username != null && username.equals("admin")) {session.setAttribute("username", username);System.out.println("-----" + session.getId());response.sendRedirect("../body.jsp");}
%></body>
</html>

这段代码的功能如下:

  1. 向客户端输出 hello111
  2. 从请求参数中获取 username
  3. 检查 username 是否为 admin,若为 admin,就将 username 存入 session 中,打印 session 的 ID,然后重定向到 ../body.jsp 页面。

application

application 对象是 ServletContext 类的实例,用于在整个 Web 应用程序中共享数据。可以在 web.xml 里配置初始化参数,然后在 JSP 页面中通过 application 对象获取。

web.xml 配置示例

<context-param><param-name>appName</param-name><param-value>MyWebApp</param-value>
</context-param>

JSP 页面获取参数示例

<%String appName = application.getInitParameter("appName");out.print("应用程序名称是: " + appName);
%>

config

config 对象是 ServletConfig 类的实例,用于获取 Servlet 的配置信息。可以在 web.xml 里配置 Servlet 的初始化参数,然后在 JSP 页面中通过 config 对象获取。

exception

exception 对象是 Throwable 类的实例,用于处理 JSP 页面中出现的异常。要使用 exception 对象,需要在 <%@ page %> 指令中设置 isErrorPage="true"

示例

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head><title>错误页面</title>
</head>
<body><h1>发生错误</h1><p>错误信息: <%= exception.getMessage() %></p>
</body>
</html>

综上所述,JSP 隐式对象为开发人员提供了便捷的方式来处理请求、管理会话、共享数据和处理异常等。通过合理运用这些隐式对象,能够开发出功能强大的 Web 应用程序。


以上就是这篇博客的全部内容,下一篇我们将继续探索JSP的更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

http://www.xdnf.cn/news/268.html

相关文章:

  • 关于AI提示工程的详解,分点说明其核心概念、关键技巧和应用场景
  • 语音合成之二TTS模型损失函数进化史
  • 极狐GitLab 项目和群组的导入导出速率限制如何设置?
  • Linux 文件查找终极指南:find, locate, grep 等命令详解
  • 18-算法打卡-哈希表-两数之和-leetcode(1)-第十八天
  • 智能体时代的产业范式确立,中国企业以探索者姿态走出自己的路
  • [密码学实战]详解gmssl库与第三方工具兼容性问题及解决方案
  • Python语言基础教程(上)4.0
  • 15.4K Star!Vercel官方出品,零基础构建企业级AI聊天机器人
  • 进程(转账,卖票)
  • C#核心笔记——(六)框架基础
  • 【MySQL】数据库和表的操作详解
  • 6.6 “3步调用ChatGPT打造高可靠Python调度器,零依赖实现定时任务自动化“
  • Linux工具学习之【vim】
  • 医学图像中的不同模态图像详细介绍
  • VirtualBox导入 .ova 文件出错,怎么解决
  • Java入门-Map双列集合
  • 通过C# 将Excel表格转换为图片(JPG/ PNG)
  • 51单片机实验七:EEPROM AT24C02 与单片机的通信实例
  • 《计算机视觉度量:从特征描述到深度学习》—工业检测大模型RAG白皮书
  • 12芯束装光纤不同包层线颜色之间的排列顺序
  • Linux 内核开发/测试工具对比 Windows 驱动验证工具 (Driver Verifier)
  • 从数据集到开源模型,覆盖无机材料设计/晶体结构预测/材料属性记录等
  • 70. 爬楼梯
  • 环境搭建与入门:Flutter SDK安装与配置
  • 《数据结构初阶》【时间复杂度 + 空间复杂度】
  • Echart 地图放大缩小
  • SQL SERVER里面也可以插入存储过程,操作TCP,WEBSOCKET吗?数据发生改变时用于通知客户端
  • C++手撕STL-其一
  • 1、企业级在线办公套件推荐:OnlyOffice 全面介绍