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

JSP命令标签 静态包含/动态包含

好 下面我们聊聊JSP中的指令标签
这边 我们来说两个 分别是 静态包含 和 动态包含
我们可以将重用性代码包含起来 更好的使用

比如 我们界面上中下 分别有三个导航栏 那么 如果你写三份 就会出现很多重复代码 而且 改起来 也很不方便 要一次改三份

口说无凭 我们来做一个小案例
我们先在 jsp同目录下创建两个 jsp页面文件 分别叫 header.jsp 和 footer.jsp
在这里插入图片描述
然后 我们这里 写简单一点吧 header.jsp代码如下

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head><title>头部</title>
</head>
<body><h1>头部部分</h1>
</body>
</html>

footer.jsp 这样写

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head><title>尾部</title>
</head>
<body>
<h1>尾部部分</h1>
</body>
</html>

这里 我们都只是放了个H1 然后 展示一个文本信息

然后 我们主界面 jsp这样写

先通过静态包含include引入我们刚刚写的两个jsp文件页面部分
这里 不需要担心ile文件路径写错 因为 idea比较只能 你写错了 他会直接给你报红的 如果能显示正常一般就没问题了

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head><title>JSP - Hello World</title>
</head>
<body>
<%@include file="header.jsp"%>
<%@include file="footer.jsp"%>
</body>
</html>

然后 我们启动项目
在这里插入图片描述
效果也是非常的完美 我们两个jsp页面的内容就被导入进来了

这样 如果我们界面有什么重复的东西 就可以单独写一个界面 然后 要用的地方导入就可以了
而且最大的好处 就是 如果你有一个地方要改 你一改 全部地方就统一改变了 不需要你一个一个改 搞不好还某个忘记了

然后 是我们的动态包含

我们将公共jsp改成这样

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>JSP - Hello World</title>
</head>
<body>
<h1>公共区域</h1>
<%String dom = "Hello World";
%>
<jsp:include page="header.jsp"><jsp:param name="keyname" value="<%=dom%>"/>
</jsp:include>
<jsp:include page="header.jsp"><jsp:param name="keyname" value="你好世界"/>
</jsp:include>
</body>
</html>

我们将 header.jsp 改成动态的包含形式 然后传递了一个参数 键为 keyname 值的话 我们写了两个
一个定义在java代码中 叫 Hello World
另一个 直接写在了属性里 叫 你好世界
然后 我们将 header.jsp代码更改如下

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>头部</title>
</head>
<body><%request.setCharacterEncoding("UTF-8");String keyname = request.getParameter("keyname");%><h1><%=keyname%></h1>
</body>
</html>

我们先用 setCharacterEncoding 将编码格式转为 UTF-8
然后通过getParameter 接受键为keyname的属性 然后输出在 H1标签上
运行结果如下
在这里插入图片描述
一般来讲 无脑用 动态包含就好了

他们的区别在于 静态包含会将他们合成一个文件 例如 你在 B页面中静态包含 A 然后 你两个jsp都声明一个叫 name的属性 会报错重名 因为他们会合成一个文件

而静态包含 你两个文件都声明name 没问题 因为 动态包含只是相当于 A是个函数 B调用了他 生成出来的是两个分开的文件

相关文章:

JSP命令标签 静态包含/动态包含

好 下面我们聊聊JSP中的指令标签 这边 我们来说两个 分别是 静态包含 和 动态包含 我们可以将重用性代码包含起来 更好的使用 比如 我们界面上中下 分别有三个导航栏 那么 如果你写三份 就会出现很多重复代码 而且 改起来 也很不方便 要一次改三份 口说无凭 我们来做一个小案…...

Cesium点位弹窗

1.弹窗没法向加入点位一样加入到地图内部&#xff0c;entity没法实现 2.使用绝对定位&#xff0c;将地图组件通过定位加入到地图上&#xff0c;注意弹窗层级一定在地图上 3.通过判断点击位置是否是点位来获取entity信息&#xff0c;将信息显示在弹窗 4.将点击处点位的经纬度转为…...

基于单片机16路抢答器仿真系统

**单片机设计介绍&#xff0c; 基于单片机16路抢答器仿真系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的16路抢答器仿真系统是一种用于模拟和实现抢答竞赛的系统。该系统由硬件和软件两部分组成。 硬件方面&am…...

Linux常用命令亲测总结

在实际开发中&#xff0c;经常会进行下位机的搭建&#xff0c;在搭建过程中&#xff0c;对于常用的LInux命令进行总结&#xff0c;方便自己使用 1.rm -rf 删除对应文件&#xff08;字节小的&#xff09; 2、ln -s 文件关联&#xff08;长的关联短的。三个则关联两次&#xff0…...

二百零六、Flume——Flume1.9.0单机版部署脚本(附截图)

一、目的 在实际项目部署时&#xff0c;要实现易部署易维护&#xff0c;需要把安装步骤变成安装脚本实现快速部署 二、部署脚本在Linux中文件位置 文件夹中只有脚本文件flume-install.sh和tar包apache-flume-1.9.0-bin.tar.gz 三、Flume安装脚本 #!/bin/bash #获取服务器名…...

不必购买Mac,这款国产设计工具能轻松替代Sketch!

介绍 即时设计是新一代可以直接在浏览器中使用的设计工具&#xff0c;具有Sketch和实时协作功能。与本地Sketch相比&#xff0c;增加了实时协作功能&#xff0c;即时设计可以看作是在线Sketch&#xff0c;两个工具可以简单粗暴地总结为一个公式&#xff1a; 即时设计Sketch云…...

通过多线程的方式每次发送10条MQ消息

背景&#xff1a;传入一个List<person>,不知道list中有多少条数据。 import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.client.producer.Message; import org.apache.rocketmq.client.producer.SendResult;import java.util.A…...

springboot上传文件后显示权限不足

前言&#xff1a; 最近一个老项目迁移&#xff0c;原本一直好好的&#xff0c;迁移后上传文件的功能使用不正常&#xff0c;显示文件没有可读取权限&#xff0c;这个项目并不是我们开发和配置的&#xff0c;由第三方开发的&#xff0c;我们只是接手一下。 前端通过api上传文件…...

spring-boot-maven-plugin插件 —— 打包时减小jar包的大小方法

Maven 在打包时会将所依赖的 jar 包全部打包进去&#xff0c;包含了所有的依赖和资源文件&#xff0c;就会导致打出来的包比较大。如果再上传服务器&#xff0c;那么耗时特别长。 由于依赖包变化小&#xff0c;占用空间大&#xff0c;而且大部分情况是添加一次后&#xff0c;就…...

java Bigdecimal

一、BigDecimal概述 BigDecimal是Java在java.math包中提供的线程安全的API类&#xff0c;用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数&#xff0c;但在实际应用中&#xff0c;可能需要对更大或者更小的数进行运算和处理。一般情况下&am…...

【C++11并发】thread 笔记

简介 进程和线程的区别 进程&#xff1a;一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间&#xff0c;一个进程可以有多个线程&#xff0c;比如在Windows系统中&#xff0c;一个运行的xx.exe就是一个进程。 线程&#xff1a;进程中的一个执行任务&#xff08…...

OBS Studio免费开源录屏工具

OBS是Open Broadcaster Software的缩写&#xff0c;是一款免费且开源的多平台录屏和直播软件。它可以用于录制屏幕、捕获游戏、创建教学视频、直播游戏等。OBS功能强大且灵活&#xff0c;提供了许多配置选项和自定义功能&#xff0c;使用户能够根据自己的需求进行设置和调整。它…...

【汇编】[bx+idata]的寻址方式、SI和DI寄存器

文章目录 前言一、[bxidata]寻址方式1.1 [bxidata]的含义1.2 示例代码 二、SI和DI寄存器2.1 SI和DI寄存器是什么&#xff1f;2.2 [bxsi]和[bxdi]方式寻址2.3 [bxsiidata]和[bxdiidata] 总结 前言 在汇编语言中&#xff0c;寻址方式是指指令如何定位内存中的数据。BX寄存器与偏…...

Java,集合框架,关于Map接口与Collections工具类

目录 Map接口 Map及其实现类的对比&#xff1a; HashMap中元素的特点&#xff1a; 相关方法&#xff1a; 添加、修改操作: 删除操作&#xff1a; 元素查询的操作: 元视图操作的方法&#xff1a; TreeMap的使用&#xff1a; Properties类&#xff1a; Collections工具…...

【实用技巧】更改ArduinoIDE默认库文件位置,解放系统盘,将Arduino15中的库文件移动到其他磁盘

本文主要介绍更改Arduino IDE &#xff08;含2.0以上版本&#xff09;默认库文件位置的方法。 原创文章&#xff0c;转载请注明出处&#xff1a; 【实用技巧】更改ArduinoIDE默认库文件位置&#xff0c;解放C盘&#xff0c;将Arduino15中的库文件移动到其他磁盘-CSDN博客文章浏…...

二、什么是寄存器

目录 一、STM32芯片架构简图及系统框图 1.1 STM32芯片架构简图 1.1.1 FLASH是什么&#xff0c;用来做什么 1.1.2 SRAM是什么&#xff0c;用来做什么 1.1.3 片上外设是什么&#xff0c;用来做什么 1.2 系统框图 1.2.1 驱动单元 1.2.2 被动单元 二、什么是寄存器 2.1 存…...

邀请报名|11月24日阿里云原生 Serverless 技术实践营 深圳站

活动简介 “阿里云云原生 Serverless 技术实践营 ” 是一场以 Serverless 为主题的开发者活动&#xff0c;活动受众以关注 Serverless 技术的开发者、企业决策人、云原生领域创业者为主&#xff0c;活动形式为演讲、动手实操&#xff0c;让开发者通过一个下午的时间增进对 Ser…...

学习UI第一天

在工作闲暇之余&#xff0c;自己画的原型图&#xff0c;再次做一次记录&#xff0c;哈哈哈 萌宠领养UI设计原型图 https://modao.cc/proto/lq2KqIVBs48xwylNZlA7OP/sharing?view_moderead_only #萌宠领养-分享 可以点击此链接&#xff0c;进行查看O(∩_∩)O哈哈~...

1688商品详情原数据(2023年11月最新版)

返回数据&#xff1a; 请求链接 {"item": {"desc_wdescContent": {"itemProperties": [],"offerId": "705844836943","wdescContent": {"content": "<div id\"offer-template-0\"&g…...

CleanMyMac X2024免费测试版好不好用?值不值得下载

如果你是一位Mac用户&#xff0c;你可能会遇到一些问题&#xff0c;比如Mac运行缓慢、磁盘空间不足、应用程序难以管理等。这些问题会影响你的Mac的性能和体验&#xff0c;让你感到沮丧和无奈。那么&#xff0c;有没有一款软件可以帮助你解决这些问题呢&#xff1f;答案是肯定的…...

通义千问1.8B-Chat部署教程:Supervisor管理服务,稳定运行不中断

通义千问1.8B-Chat部署教程&#xff1a;Supervisor管理服务&#xff0c;稳定运行不中断 1. 项目概述 通义千问1.5-1.8B-Chat-GPTQ-Int4是阿里云推出的轻量级对话模型&#xff0c;经过GPTQ-Int4量化后&#xff0c;显存需求仅约4GB&#xff0c;非常适合在消费级GPU或边缘设备上…...

终极指南:用OpenCore Legacy Patcher让旧Mac焕发新生的5个简单步骤

终极指南&#xff1a;用OpenCore Legacy Patcher让旧Mac焕发新生的5个简单步骤 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否还在为手中的旧款Mac无法…...

5个技巧掌握DINO注意力可视化:从入门到模型可解释性分析

5个技巧掌握DINO注意力可视化&#xff1a;从入门到模型可解释性分析 【免费下载链接】dino PyTorch code for Vision Transformers training with the Self-Supervised learning method DINO 项目地址: https://gitcode.com/gh_mirrors/di/dino 视觉模型可解释性已成为人…...

SEO_五个立竿见影的页面SEO优化技巧指南

SEO优化技巧&#xff1a;快速提升网站页面排名的五个有效方法 在当前竞争激烈的互联网环境中&#xff0c;网站的SEO优化是至关重要的。无论是新建的网站还是已有网站&#xff0c;都需要通过一系列的SEO优化技巧来提升其在搜索引擎上的排名。下面&#xff0c;我们将分享五个立竿…...

DDD难落地?就让AI干吧! - cleanddd-skills介绍

一、什么是urllib3&#xff1f; urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你&#xff1a; 发送各种 HTTP 请求&#xff08;GET, POST, PUT, DELETE等&#xff09;。 管理连接池&#xff0c;提高网络请求效率。 处理重试和重定向。 支…...

SQL Server服务启动失败?手把手教你用Local System账户解决SQLEXPRESS报错126

SQL Server服务启动失败&#xff1f;手把手教你用Local System账户解决SQLEXPRESS报错126 当你正准备开始一天的工作&#xff0c;突然发现SQL Server服务无法启动&#xff0c;屏幕上赫然显示着错误代码126&#xff0c;这种突如其来的技术故障往往让人措手不及。作为数据库管理员…...

Z-Image Atelier 跨平台部署:应对不同操作系统的环境配置要点

Z-Image Atelier 跨平台部署&#xff1a;应对不同操作系统的环境配置要点 最近在帮几个朋友部署Z-Image Atelier这个挺有意思的AI图像工具&#xff0c;发现大家用的系统五花八门&#xff0c;有Windows、有Ubuntu&#xff0c;还有用Mac的。结果就是&#xff0c;照着同一个教程走…...

MultiAgentBench:一套真正评测多智能体协作与博弈能力的基准

摘要&#xff1a;大语言模型已经展现出作为自主智能体的显著能力&#xff0c;但现有基准要么只关注单智能体任务&#xff0c;要么局限于狭窄领域&#xff0c;无法刻画多智能体协作与竞争的动态过程。本文提出 MultiAgentBench&#xff0c;这是一个面向 LLM 多智能体系统的综合性…...

Phi-4-mini-reasoning作品集:自动将推理过程转化为教学级讲解语言

Phi-4-mini-reasoning作品集&#xff1a;自动将推理过程转化为教学级讲解语言 1. 模型简介 Phi-4-mini-reasoning是一个轻量级的开源文本生成模型&#xff0c;专注于将复杂推理过程转化为清晰易懂的教学语言。作为Phi-4模型家族的一员&#xff0c;它特别擅长处理需要逐步解释…...

STM32F407的RTC时钟不准?手把手教你用CubeMX配置LSE晶振校准(附源码)

STM32F407的RTC时钟不准&#xff1f;手把手教你用CubeMX配置LSE晶振校准&#xff08;附源码&#xff09; 在嵌入式系统开发中&#xff0c;实时时钟&#xff08;RTC&#xff09;的精度问题常常让开发者头疼。特别是使用STM32F407这类主流单片机时&#xff0c;即使按照官方文档配…...