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

JavaWeb开发(九)JSP技术

1. JavaWeb JSP技术

1.1. JSP简介

1.1.1. 什么是JSP

  JSP全名为Java Server Page 是为了简化servlet的工作而出现的替代品。在JSP中java代码与HTML共同存在,其中HTML代码用于展示静态的内容,java代码用来展示动态的内容。

1.1.2. 为什么出现JSP技术

  1997年Java Web中只有servlet,生成html技术也需要在servlet中完成,虽然servlet也可以完成所有的输出工作,但是使用过程比较麻烦,部署也比较复杂。为了克服这些缺点1999年SUN公司推出了JSP技术。该技术在生成HTML代码的时候相比servlet方便了许多。

1.1.2. 对于servlet和JSP技术的理解:

  servlet:在java代码中嵌入html代码,更擅长编写java业务代码JSP:在html中嵌入java代码,更擅长页面展示。

1.2. jsp运行原理

  jsp在第一次被访问时会被Web容器翻译成servlet,即jsp本质上就是Servlet过程。
  第一次访间---->helloservlet.jsp----helloservlet_jsp.java---->编译运行被翻译后的servlet在Tomcat的work目录中可以找到,使用IDEA会单独为项目维护一个目录。
  通过观察发现jsp会转化为java文件,并且间接的继承了HttpServlet,实现了其中的主要方法,init、service、 destory,并且将html代码通过java方式输出给浏览器。

1.3. JSP脚本和注释

1.3.1. JSP脚本

1.<%java代码%>   ----- 内部的java代码翻译到service方法的内部
2.<%=java变量或表达式>  -----会被翻译成service方法内部out.print()
3.<%!java代码%>  ----会被翻译成servlet的成员的内容

1.3.2. JSP注释

1. Html注释:<!--注释内容--> ---可见范围jsp源码、翻译后的servlet、页面显示html源码
2. 2.java注释://单行注释 /*多行注释*/  --可见范围jsp源码 翻译后的servlet
3. 3.jsp注释:<%--注释内容--%> -----ī可见范围 jsp源码可见

在这里插入图片描述
在这里插入图片描述

1.4. jsp指令(3个)

  jsp的指令是指导jsp翻译和运行的命令,jsp包括三大指令:

1.4.1. page指令

  属性最多的指令(实际开发中page指令默认)属性最多的一个指令,根据不同的属性,指导整个页面特性。
  格式:

<%@ page 属性名1=“属性值1” 属性名2=“属性值2...%>

  常用属性如下:
  (1)language:jsp脚本中可以嵌入的语言种类;
  (2)contentType:response.setContentType(text/html;charset=UTF-8);
  (3)session:是否jsp在翻译时自动创建sessionimport:导入java的包;
  (4)errorPage:当当前页面出错后跳转到哪个页面。

<%@ page import="com.zzs.session.SessionServlet " %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<%@include file="/include.jsp" %>
<html>
<head><title>Title</title>
</head>
<body>
<h2>hello jsp</h2>
<!-- html注释 -->
<jsp:include page="/include1.jsp"></jsp:include>
<%//java单行注释/*java多行注释*/String str = "hello jsp";int i = 0;i++;
%>
<%-- jsp注释 --%>
<%="变量i=" + i%>
<%!int x = 0;%>
</body>
</html>

1.4.2. include指令

  页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp五面中格式:

<%@ include file="被包含的文件地址"%>
<jsp:include page="/include1.jsp"></jsp:include>

1.4.3. taglib指令

  在jsp页面中引入标签库(jst1标签库、struts2标签库)格式:

<%@ taglib uri="标签库地址”prefix="前缀”%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

1.5. JSP隐式对象概述

1.5.1. 什么是JSP隐式对象

  当jsp被翻译成servlet的时候,service方法内部有九个对象定义并初始化,这九个对象被称为隐式对象。

1.5.2. 九大隐式对象

在这里插入图片描述
在这里插入图片描述

1.5.3. 九大隐式对象-out对象

在这里插入图片描述

1.5.4. JSP九大隐式对象-epageContext对象

  pageContext对象就是jsp页面的上下文对象
(1)pageContext是一个域对象
  setAttribute(String name, Object obj)
  getAttribute(String name)
  removeAttrbute(String name)
(2)pageContext可以向指定的其他域中存取数据
  setAttribute(String name,Object obj,int scope)
  getAttribute(String name,int   scope)
  removeAttrbute(String name,int scope)
  findAttribute(String name)//获取顺序依次从pageContext域,request域

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%
//    pageContext.setAttribute("name","xiaoming");
//    pageContext.setAttribute("name","zhangsan",PageContext.REQUEST_SCOPE);pageContext.setAttribute("name","lisi",PageContext.SESSION_SCOPE);pageContext.setAttribute("name","wangwu",PageContext.APPLICATION_SCOPE);
%>
<%=pageContext.getAttribute("name",PageContext.REQUEST_SCOPE)%>
<%=pageContext.getAttribute("name",PageContext.APPLICATION_SCOPE)%>
<%=pageContext.findAttribute("name")
%>
</body>
</html>

1.5.5. JSP标签

  (1)页面包含(动态包含):

<jsp:include page="被包含的页面"/>

  (2)请求转发:

<jsp:forward page="要转发的资源”/>

相关文章:

JavaWeb开发(九)JSP技术

1. JavaWeb JSP技术 1.1. JSP简介 1.1.1. 什么是JSP JSP全名为Java Server Page 是为了简化servlet的工作而出现的替代品。在JSP中java代码与HTML共同存在&#xff0c;其中HTML代码用于展示静态的内容&#xff0c;java代码用来展示动态的内容。 1.1.2. 为什么出现JSP技术 19…...

PADS Lyout布局布线实战技巧:布线优化及解决碎铜问题

1、通过加过孔 通过过孔复制 复制粘贴 也可以选择网络&#xff0c;选择右键&#xff0c;添加过孔来。 在一些孤铜的地方加过孔&#xff0c;加不了过孔的情况下&#xff0c;怎么办&#xff1f; 2、通过挖掉&#xff0c;不让铜在孤零零的地方。 右键&#xff0c;选择矩形&a…...

上下游服务间解耦的技术与管理

一、解耦为何至关重要 在当今软件研发的复杂生态中&#xff0c;耦合问题如影随形&#xff0c;困扰着众多开发者与企业。当多个模块、系统或团队紧密交织&#xff0c;相互依赖程度不断攀升&#xff0c;仿佛一张错综复杂的网&#xff0c;牵一发而动全身。就拿电商系统来说&#…...

如何解决HTML和CSS相关的问题,什么情况下会导致元素被遮挡?

在开发过程中&#xff0c;HTML 和 CSS 中的元素遮挡问题通常是由于布局、定位、层级等因素导致的。在使用 Vue.js 时&#xff0c;这些问题依然常见&#xff0c;尤其是涉及到动态渲染、条件渲染和组件嵌套的场景。以下是一些常见的导致元素被遮挡的原因&#xff0c;并通过 Vue.j…...

Infineon PSoC 4 CapSense ModusToolbox IDE - 系统生态篇

本文档说明了 ModusToolbox 软体环境的 4 个层面&#xff0c;该环境为 CapSense 设备和生态系统提供支援。本文是 Infineon PSoC 4 CapSense ModusToolbox IDE-系统介绍的延伸篇 (Infineon PSoC 4 CapSense ModusToolbox IDE -系统介绍篇 - 大大通(简体站))。 什么是ModusToolb…...

[算法]布隆过滤器

布隆过滤器&#xff08;Bloom Filter&#xff09;是一种空间效率很高的概率型数据结构&#xff0c;它可以用来检测一个元素是否在一个集合中。它的特点是高效地插入和查询&#xff0c;但是有一定的误判率&#xff08;False Positive&#xff09;。误判率指的是错误地认为某个元…...

基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发

作者&#xff1a;陆冬澄、周静 在现代软件研发体系中&#xff0c;.NET 平台由于其强大的功能、灵活性和丰富的开发工具&#xff0c;成为了构建 Windows 应用程序的热门选择。无论是桌面应用、Web 应用还是服务应用&#xff0c;.NET 提供了一系列强大的框架和工具&#xff0c;帮…...

Backend - C# asp .net core

目录 一、各大框架理解 &#xff08;一&#xff09;ASP.NET Core &#xff08;二&#xff09;ASP.NET Core Web Application &#xff08;三&#xff09;ASP.NET Core MVC &#xff08;四&#xff09;ASP.NET Core Web API &#xff08;五&#xff09;ASP.NET Core 和 EF …...

【合作原创】使用Termux搭建可以使用的生产力环境(九)

前言 在上一篇【合作原创】使用Termux搭建可以使用的生产力环境&#xff08;八&#xff09;-CSDN博客中我们讲到了如何安装IDEA社区版&#xff0c;并在Termux中安装VNC服务器&#xff0c;在proot-distro的Debian中启动xfce桌面&#xff0c;并通过这个方式解决了IDEA社区版中无…...

使用Supervisor在Ubuntu中实现后台自启动服务

在Ubuntu系统中&#xff0c;Supervisor是一个非常实用的进程管理工具&#xff0c;它可以让你的应用程序在后台运行&#xff0c;并且在系统启动时自动启动这些应用程序。下面&#xff0c;我将详细介绍如何在Ubuntu中使用Supervisor来实现后台自启动服务&#xff0c;并以一个具体…...

AIDD-人工智能药物设计-人工智能驱动的罕见病药物发现

JCIM | 人工智能驱动的罕见病药物发现 **罕见病&#xff08;Rare Diseases&#xff0c;RDs&#xff09;**是全球公共卫生领域的重大挑战&#xff0c;其特点是疾病种类繁多、症状复杂且诊断困难。尽管过去几十年出台了如《孤儿药法案》等法规推动研发&#xff0c;但超过90%的罕…...

安卓硬件加速hwui

安卓硬件加速 本文基于安卓11。 从 Android 3.0 (API 级别 11) 开始&#xff0c;Android 2D 渲染管道支持硬件加速&#xff0c;这意味着在 View 的画布上执行的所有绘图操作都使用 GPU。由于启用硬件加速所需的资源增加&#xff0c;你的应用程序将消耗更多内存。 软件绘制&am…...

TDv2:一种用于离线数学表达式识别的新型树形结构解码器

TDv2:一种用于离线数学表达式识别的新型树形结构解码器 本文提出了一种针对手写数学表达式识别(HMER)任务的新型树形解码器(TDv2) ,旨在充分利用数学表达式的树结构标签进行更有效的建模和预测。相较于传统的LaTeX字符串解码器,该模型通过采用一个节点分类模块和一个分…...

Golang学习笔记_23——error补充

Golang学习笔记_20——error Golang学习笔记_21——Reader Golang学习笔记_22——Reader示例 文章目录 error补充1. 基本错误处理2. 自定义错误3. 错误类型判断3.1 类型断言3.2 类型选择 4. panic && recover 源码 error补充 1. 基本错误处理 在Go中&#xff0c;函数…...

邯郸地标美食导游平台的设计与实现

标题:邯郸地标美食导游平台的设计与实现 内容:1.摘要 摘要&#xff1a;本文介绍了邯郸地标美食导游平台的设计与实现。该平台旨在为游客提供邯郸地标美食的详细信息和导航服务&#xff0c;帮助游客更好地了解和品尝邯郸的特色美食。文章首先介绍了项目的背景和目的&#xff0c…...

滑动窗口限流算法:基于Redis有序集合的实现与优化

滑动窗口限流算法是一种基于时间窗口的流量控制策略&#xff0c;它将时间划分为固定大小的窗口&#xff0c;并在每个窗口内记录请求次数。通过动态滑动窗口&#xff0c;算法能够灵活调整限流速率&#xff0c;以应对流量的波动。 算法核心步骤 统计窗口内的请求数量&#xff1…...

Angular 最新版本和 Vue 对比完整指南

1. Angular 最新版本 当前 Angular 最新稳定版本是 Angular 17(2024年初) 2. 主要区别对比表 特性 | Angular | Vue 框架类型 | 完整框架 | 渐进式框架 默认语言 | TypeScript | JavaScript/TypeScript 数据处理 | RxJS | Promise/async/await 架构特点 | 依赖注入,…...

DAY39|动态规划Part07|LeetCode:198.打家劫舍、213.打家劫舍II、337.打家劫舍III

目录 LeetCode:198.打家劫舍 基本思路 C代码 LeetCode:213.打家劫舍II 基本思路 C代码 LeetCode:337.打家劫舍III 基本思路 C代码 LeetCode:198.打家劫舍 力扣题目链接 文字讲解&#xff1a;LeetCode:198.打家劫舍 视频讲解&#xff1a;动态规划&#xff0c;偷不偷这个…...

MYSQL----------------sql 优化

优化 SQL 语句的一般步骤 1. 了解 SQL 的执行频率 SHOW STATUS LIKE Com_%;代码解释&#xff1a; SHOW STATUS LIKE Com_%;&#xff1a;此命令可以查看各种 SQL 语句的执行频率&#xff0c;例如 Com_select 表示 SELECT 语句的执行次数&#xff0c;Com_insert 表示 INSERT 语…...

深度学习中的正则化方法

最近看到了正则化的内容&#xff0c;发现自己对正则化的理解已经忘得差不多了&#xff0c;这里在整理一下&#xff0c;方便以后查阅。 深度学习中的正则化方法 1. L2 正则化&#xff08;L2 Regularization&#xff09;2. L1 正则化&#xff08;L1 Regularization&#xff09;3.…...

前端首屏性能指标(FP/FCP/LCP/TTI)测量全攻略

在前端开发中&#xff0c;首屏加载性能直接决定了用户的第一体验&#xff0c;而FP、FCP、LCP、TTI作为衡量首屏性能的核心指标&#xff0c;是面试和项目优化中绕不开的话题。很多开发者只知道指标的定义&#xff0c;却不清楚如何实际测量&#xff0c;本文将从开发调试、代码埋点…...

嵌入式智能饮水机设计:STM32与语音交互实践

1. 项目背景与需求分析作为一名嵌入式开发工程师&#xff0c;我最近完成了一个专门为视障人士设计的智能饮水机项目。这个项目的灵感来源于我的一位视障朋友在使用传统饮水机时遇到的种种不便——他常常因为无法判断水温而被烫伤&#xff0c;或者因为不知道水杯是否对准出水口而…...

Robin机器人感知系统与持续学习技术

“Robin 面对的是一个万物皆在变化的世界” 一套先进的感知系统能够检测并学习自身错误&#xff0c;使 Robin 机器人能够在生产规模下从杂乱的包裹堆中选取单个物品。 作者&#xff1a;Alan S. Brown 2022年4月18日 阅读时间&#xff1a;9分钟 相关内容 某机构的机器人手臂在安…...

OpenClaw技能市场挖掘:千问3.5-9B增强插件TOP5

OpenClaw技能市场挖掘&#xff1a;千问3.5-9B增强插件TOP5 1. 为什么需要关注OpenClaw技能市场&#xff1f; 第一次接触OpenClaw时&#xff0c;我以为它只是个简单的自动化脚本工具。直到在项目里连续熬了三个深夜处理邮件分类和会议纪要&#xff0c;才意识到自己错过了什么—…...

【优化求解】用于密集子图和密集子矩阵问题的凸优化附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f447; 关注我领取海量matlab电子书和数学建模资料&#x1f34a;个人信条&#xff1a;格物致知,完整Matl…...

【电路设计实战】BUCK降压电源:从原理到PCB布局的降噪与效率优化

1. BUCK降压电路的核心原理 BUCK降压电路作为开关电源中最基础的拓扑结构之一&#xff0c;其工作原理看似简单却蕴含着精妙的能量转换机制。我第一次接触BUCK电路时&#xff0c;被它高达90%以上的转换效率所震撼 - 这可比传统的线性稳压器强太多了。那么它是如何做到的呢&#…...

AI安全高阶:生成式AI的安全风险与防御体系

AI安全高阶&#xff1a;生成式AI的安全风险与防御体系&#x1f4dd; 本章学习目标&#xff1a;本章深入探讨高阶主题&#xff0c;适合有一定基础的读者深化理解。通过本章学习&#xff0c;你将全面掌握"AI安全高阶&#xff1a;生成式AI的安全风险与防御体系"这一核心…...

拓朋N86车载台:畜牧运输的隐形守护者

在广袤无垠的畜牧运输途中&#xff0c;牲畜的安全监控与车队间的协同调度是每位运输人员最为关心的两大要素。在这片充满不确定性的长途路线上&#xff0c;拓朋N86公网集群车载台以其出色的性能&#xff0c;悄然成为了畜牧运输的隐形守护者。 全国覆盖&#xff0c;沟通无阻 畜牧…...

金融级权限设计实战:用RBAC3模型搞定互斥角色、基数限制与操作审计

金融级权限架构设计&#xff1a;基于RBAC3模型的合规实战指南 在金融行业数字化转型浪潮中&#xff0c;权限管理系统不仅是技术组件&#xff0c;更是合规生命线。某跨国银行曾因角色权限漏洞导致数千万美元误操作&#xff0c;最终面临监管重罚——这个真实案例揭示了权限设计在…...

2026年在职研究生论文降AI工具推荐:理论与实践结合部分如何处理

2026年在职研究生论文降AI工具推荐&#xff1a;理论与实践结合部分如何处理 导师发消息说论文AI率超标的时候&#xff0c;我正在食堂吃饭。筷子都差点拿不稳。 后来用了三天时间研究在职研究生论文降AI&#xff0c;踩了不少坑但总算搞定了。最后稳定在用的就是嘎嘎降AI&#…...