JSP页面的动态包含和静态包含示例及介绍

下面我会详细讲解一下“JSP页面的动态包含和静态包含示例及介绍”的攻略。

什么是JSP页面的包含?

JSP页可以通过 <%@ include file="filename.jsp" %> 的方式,包含其他文件或JSP页面。这个操作叫做实现JSP页面的包含。根据包含JSP页面和被包含JSP页面的关系,包含又可以分为静态包含和动态包含。

静态包含

所谓静态包含,是指在编译JSP页面时,被包含页面就已经确定,这种包含方式是在编译阶段就已经处理完成。这种方式相当于把被包含的JSP页面内容放到主JSP页面中。

JSP页面中的静态引入采用的是指令 <%@ include file="文件名" %>。其中,file 必须是一个常量,这就意味着文件名必须在编译时期可以确定,也就是说,它只能包
含指定文件的内容。如果 file 属性所指的文件不存在,则会在 JSP 编译时抛出异常。

示例1:编写一个被引入的公共页面common.jsp。代码如下:

<nav>
    <ul>
        <li><a href="index.jsp">总览</a></li>
        <li><a href="about.jsp">关于我们</a></li>
        <li><a href="news.jsp">新闻中心</a></li>
    </ul>
</nav>

接下来,在需要引用该公共页面的页面中使用 include 指令,示例如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
</head>
<body>
<!-- 这里引入了common.jsp的内容 -->
<%@ include file="common.jsp" %>
<h1>这里是首页内容</h1>
</body>
</html>

在浏览器中查看该页面,可以发现被引入的内容已经成功显示出来。

示例2:在静态包含中,被包含的页面的内容会被直接嵌入到主页面中,所以,如果主页面和被包含页面都有相同的 Java 代码,那么在合并时就会产生重复的代码,这样做无疑会浪费很多空间,降低服务器的性能。为了解决这个问题,可以使用动态包含。

动态包含

所谓动态包含,是指在运行JSP页面时,被包含页面是可以动态改变的。被包含的JSP页面的动态性由Java代码保证,因此被包含页面的内容可以是不同的。

动态包含采用的是 的方式,其中,page 可以是一个表达式,可以动态获取被包含页面的名称。

示例1:编写两个需要被引入的页面,例如 common1.jsp 和 common2.jsp,代码分别如下:

<!-- common1.jsp的内容 -->
<nav>
    <ul>
        <li><a href="index.jsp">总览</a></li>
        <li><a href="about.jsp">关于我们</a></li>
    </ul>
</nav>
<!-- common2.jsp的内容 -->
<nav>
    <ul>
        <li><a href="index.jsp">总览</a></li>
        <li><a href="news.jsp">新闻中心</a></li>
    </ul>
</nav>

接下来,在需要引用公用页面的页面中,使用 jsp:include 标签的 page 属性动态获取被包含页面的名称,示例如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
</head>
<body>
<!-- 这里引入了要被包含的页面,具体引入哪个页面可以根据条件不定 -->
<c:choose>
    <c:when test="${condition1}">
        <jsp:include page="common1.jsp"/>
    </c:when>
    <c:when test="${condition2}">
        <jsp:include page="common2.jsp"/>
    </c:when>
    <c:otherwise>
        <jsp:include page="common1.jsp"/>
    </c:otherwise>
</c:choose>

<h1>这里是首页内容</h1>
</body>
</html>

在上面的代码中,当需要引入 common1.jsp 页面时,被包含的页面名称就传递为 common1.jsp;当需要引入 common2.jsp 页面时,被包含的页面名称就传递为 common2.jsp;当既不需要引入 common1.jsp 也不需要引入 common2.jsp 页面时,就引入默认的 common1.jsp 页面。

示例2:动态包含是在运行时动态合成的,其结果会被缓存起来供后续使用,因此,在一些需要频繁视图更新的场合,缓存这个特点显得尤为重要,比如,列表页中显示的页码列表。因为页码列表的内容是由分页查询语句和分页参数共同组成的,这些参数经常变化,因此,分页参数值不同的情况下,可以考虑使用动态包含的方式来更新页码列表。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSP页面的动态包含和静态包含示例及介绍 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java简单计算圆周率完整示例

    针对Java简单计算圆周率完整示例,我将给您讲解完整攻略。具体的步骤和说明如下: 1. 确定计算圆周率的算法 计算圆周率的算法有很多种,比较常用的是蒙特卡罗算法。该算法的本质是通过随机模拟得到的样本数量来近似地计算圆的面积和正方形面积的比值,从而估算圆周率。 2. 编写Java程序 根据蒙特卡罗算法的思路,我们可以考虑如下的Java代码实现: import …

    Java 2023年5月26日
    00
  • 详解Spring Boot实战之Restful API的构建

    详解SpringBoot实战之RestfulAPI的构建攻略 介绍 本文将详细介绍如何使用Spring Boot构建一个带有Restful API的Web应用,并以具体示例来说明其中的细节和注意事项。 环境准备 在开始前,请确保已经安装好以下环境:- JDK 8或以上版本- Maven 3.x或以上版本- IDEA或其他Java IDE 创建新项目 首先,我…

    Java 2023年5月15日
    00
  • SpringBoot概述及在idea中创建方式

    SpringBoot概述 Spring Boot是一个开源的Java框架,它摆脱了传统Spring框架的繁琐配置,建立在Spring Framework的基础之上。Spring Boot提供了一种快速简便的方式来搭建Java应用程序,并且默认设置对各种Spring组件、外部组件、配置管理等进行了很好的支持。 Spring Boot使用“约定大于配置”的方式来…

    Java 2023年5月15日
    00
  • java 将字符串追加到文件已有内容后面的操作

    将字符串追加到文件已有内容后面是一个常见的操作,实现这个操作涉及到Java中的文件操作、字符编码、IO流等多个概念和技术。 以下是一份完整的攻略,介绍如何实现在Java中将字符串追加到文件已有内容后面。 第一步:打开文件并读取其内容 使用File类和FileReader类可以打开一个文件并读取其内容。需要注意,FileReader类是以字符为单位读取文件内容…

    Java 2023年5月27日
    00
  • nginx负载均衡下的webshell上传的实现

    nginx是一个常用的反向代理服务器,在web应用中常常被用作负载均衡的前端。在nginx负载均衡下进行webshell的上传需要以下步骤: 1. 伪造HTTP请求 攻击者需要通过伪造HTTP请求方式进行上传webshell。伪造HTTP请求通常会使用Burp Suite等类似的工具,伪造请求包括请求方式、请求头、请求内容等,攻击者需要抓取正常用户发出的上传…

    Java 2023年6月16日
    00
  • java中CopyOnWriteArrayList源码解析

    Java中CopyOnWriteArrayList源码解析 简介 CopyOnWriteArrayList是Java中并发编程常用的数据结构,在多线程的环境下,它可以保证线程安全。它的实现是通过在写入时复制整个数组,从而避免了并发写入数据时的冲突。 CopyOnWriteArrayList继承自AbstractList,同样实现了List接口。它在List的…

    Java 2023年5月26日
    00
  • Java实现窗体程序显示日历

    以下是详细的Java实现窗体程序显示日历的攻略: 1.准备工作 在开始编程前,需要先确定使用的开发环境和GUI工具包。一般来说,Java提供了多种GUI工具包,常见的有AWT、Swing和JavaFX等。在本文中,我们使用的是Swing工具包,因为其扩展性较强、易于学习和使用。 2.创建窗体 创建窗体需要继承JFrame类,并实现设置标题、大小、位置和关闭操…

    Java 2023年5月20日
    00
  • 详解Java中ByteArray字节数组的输入输出流的用法

    详解Java中ByteArray字节数组的输入输出流的用法 什么是ByteArray字节数组? 在Java中,字节数组是指由若干个字节所组成的数组。字节一般是指8位二进制数,也就是一个范围在0-255的整数,因此Java中一个字节数组就是由一系列整数所组成的数组。 什么是Java中的输入输出流? Java中的输入输出流是用来实现数据的流动,将数据从输入端流入…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部