当前位置: 首页 > 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调用了他 生成出来的是两个分开的文件

http://www.lryc.cn/news/236727.html

相关文章:

  • Cesium点位弹窗
  • 基于单片机16路抢答器仿真系统
  • Linux常用命令亲测总结
  • 二百零六、Flume——Flume1.9.0单机版部署脚本(附截图)
  • 不必购买Mac,这款国产设计工具能轻松替代Sketch!
  • 通过多线程的方式每次发送10条MQ消息
  • springboot上传文件后显示权限不足
  • spring-boot-maven-plugin插件 —— 打包时减小jar包的大小方法
  • java Bigdecimal
  • 【C++11并发】thread 笔记
  • OBS Studio免费开源录屏工具
  • 【汇编】[bx+idata]的寻址方式、SI和DI寄存器
  • Java,集合框架,关于Map接口与Collections工具类
  • 【实用技巧】更改ArduinoIDE默认库文件位置,解放系统盘,将Arduino15中的库文件移动到其他磁盘
  • 二、什么是寄存器
  • 邀请报名|11月24日阿里云原生 Serverless 技术实践营 深圳站
  • 学习UI第一天
  • 1688商品详情原数据(2023年11月最新版)
  • CleanMyMac X2024免费测试版好不好用?值不值得下载
  • Linux操作文件的底层系统调用
  • steam搬砖项目2023年现状分析,到底还能不能做?
  • 【论文阅读】基于隐蔽带宽的汽车控制网络鲁棒认证(二)
  • string类的常用方法
  • Java面向对象(高级)-- 单例(Singleton)设计模式
  • 【Kingbase FlySync】命令模式:安装部署同步软件,实现Oracle到KES实现同步
  • 2311d导入c的语义不同
  • OpenHarmony Meetup北京站招募令
  • C语言——冒泡排序
  • 08.智慧商城——购物车布局、全选反选、功能实现
  • 金属压块液压打包机比例阀放大器