当前位置: 首页 > 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.…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...