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日

相关文章

  • 详解基于spring多数据源动态调用及其事务处理

    我来详细讲解一下“详解基于Spring多数据源动态调用及其事务处理”的完整攻略。 1. 简介 本文将介绍如何在Spring框架下使用多数据源,并实现动态选择数据源,同时还将解决数据源切换后事务处理的问题。 2. 多数据源配置 在Spring中,可以通过配置多个DataSource来实现多数据源的支持。以下是一个简单的配置示例: <bean id=&qu…

    Java 2023年5月20日
    00
  • Serv-U 8.0 服务器中文乱码问题的解决

    这里是 Serv-U 8.0 服务器中文乱码问题的解决攻略。 问题描述 在 Serv-U 8.0 服务器中,当有中文字符传输时,会出现乱码问题,影响文件传输的正常使用。 解决方案 方案一:修改 Serv-U 的默认编码格式 Serv-U 8.0 服务器默认采用 ISO-8859-1 编码格式,而中文字符需要使用 UTF-8 编码格式才能正确显示。因此,我们需…

    Java 2023年5月20日
    00
  • 微信小程序上传图片实例

    下面是详细的“微信小程序上传图片实例”的攻略。 前提条件 微信开发者工具 小程序已引入wx.request组件及相应的权限 上传图片所使用的后端接口已编写完成并提供相应的URL 第一步:页面代码实现 在小程序的页面中添加能够上传图片的功能,需要使用到小程序中的wx.chooseImage API,用于调用用户的相册或摄像头去选择图片或拍照,并将所选的图片保存…

    Java 2023年5月23日
    00
  • JavaWeb HttpServletResponse对象及常用方法

    下面就来为你详细讲解“JavaWeb HttpServletResponse对象及常用方法”的完整攻略。 一、什么是HttpServletResponse对象 在JavaWeb开发中,HttpServletResponse对象代表服务器响应给客户端的HTTP应答。它是javax.servlet.http.HttpServlet类的子类,提供了一系列的方法来设…

    Java 2023年5月20日
    00
  • java8 实现提取集合对象的每个属性

    Java 8中提供了Stream API,可以通过该API实现快速高效的对集合对象的转换和处理。下面是提取集合对象的每个属性的完整攻略。 攻略步骤 创建集合对象 java List<User> userList = new ArrayList<>(); 添加集合元素 java userList.add(new User(“Tom”, …

    Java 2023年5月26日
    00
  • Java 中的控制反转(IOC)详解

    Java 中的控制反转(IOC)详解 什么是控制反转? 控制反转(Inversion of Control,英文缩写为 IoC)是一种设计思想,其核心是将程序的控制权从程序代码中转移到框架或容器中,由框架或容器来管理程序的依赖关系和对象的创建与销毁。 为什么需要控制反转? 在传统的编程模式中,对象的创建和依赖关系都是在程序中完成的,这样就存在以下几个问题:1…

    Java 2023年5月26日
    00
  • Java实现简单点餐系统

    下面来详细讲解如何用Java实现一个简单点餐系统。 步骤一:确定业务需求与功能 首先要明确此点餐系统需要实现哪些业务需求与功能,例如: 显示菜单列表 支持菜单搜索 展示菜品详细信息 选择菜品后加入订单 展示订单详情 取消订单 支付订单 这些需求与功能可以通过需求分析或与客户的沟通来确定。 步骤二:设计数据模型 接下来需要设计系统中用到的数据模型,例如: 菜品…

    Java 2023年5月18日
    00
  • Java实现5种限流算法及7种限流方式

    Java实现5种限流算法及7种限流方式攻略 本文将介绍5种限流算法以及7种限流方式在Java中的实现,其中限流算法包括令牌桶、漏桶、计数器、滑动窗口和基于Hystrix的断路器。限流方式包括拦截器、过滤器、注解、配置、缓存、队列和断路器。 1.令牌桶 算法原理 令牌桶算法基于生产令牌和消费令牌的方式控制流量。生产令牌的速率是固定的,而当请求到达时,每个请求消…

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