在jsp页面中定义全局变量,供其他页面引用
一、在一个jsp中引用另一个jsp的方法有:
1.使用 jsp include指令(常用):
<%@include file="./common-resources.jsp" %>
file属性是必填的(绝对或相对路径
),但它不支持任何的表达式,也不允许通过?挂参方式来传递参数。
注意:一般页面的top和bottom固定的时候可以用这种方式
2.使用 jsp include动作
<jsp:include page="./common-resources.jsp" flush="true/false"></jsp:include>
page属性是必填的(绝对或相对路径),但它及支持表达式
也可传递参数。flush属性为缓冲区满时,清空缓冲区,如:
<jsp:include page="被包含文件的路径" flush="true/false">
<jsp:param name="参数名称" value="参数值"/>
</jsp:inclue>
3.使用 jstl import(c标签)
<%@taglib prefix="c" uri="http://Java.sun.com/jsp/jstl/core"%>
<c:import url="inlayingJsp.jsp"></c:import>
这个标签只能包含所需要的文字
,而图片之类的是无法包含进来的
,所以该标签用的较少
二、<%@ include file=""%>与<jsp:include page=""/>两种方式的区别:
1.执行时间上的区别:
<%@ include file=”relativeURI”%> 是在翻译阶段执行(将JSP页面转换成servlet的阶段
)。
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行。
2.引入内容的方式区别:
<%@ include file
=”relativeURI”%>适用于引入静态文本
,也可以这么理解:它是纯粹的把部分代码写到了另一页面(或者说是共享
),而那另一页面中不能有相同的变量名,但可以借用主页面的内容
。
<jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本。
如图:
三、例子
首先在一个Java web项目中 创建两个 jsp文件,index.jsp和 index2.jsp。
在 index.jsp中 引入 index2.jsp的内容,达成页面共享效果。
index2.jsp页面如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<script type="text/javascript" src="<%=basePath %>/static/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="<%=basePath %>/static/js/layui-v2.5.6/layui.js"></script>
<script type="text/javascript" src="<%=basePath %>/static/js/ajaxUtil.js"></script>
<link rel="stylesheet" href="<%=basePath %>/static/js/layui-v2.5.6/css/layui.css">
<link rel="stylesheet" href="<%=basePath %>/static/js/layuiadmin/style/admin.css" media="all">
index.jsp页面中引入 index2.jsp ,使用index2.jsp 的 全局变量、js和样式。
index.jsp代码如下:<%@include file="绝对或相对路径" %>方式
:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@include file="./index2.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
</head>
<body>
<div class="layui-fluid">
index2.jsp 页面变量basePath:<%=basePath %>
</div>
<script>
$(function(){
})
</script>
</body>
</html>
页面效果:
要想达成 “在JSP中定义全局变量和全局样式,供所有页面引用”,必须使用<%@include file="绝对或相对路径" %>方式
,而非<jsp:include page=”relativeURI” flush=”true” />,否则会报错。
jsp:include和<%@include%>的区别详细介绍见:https://www.cnblogs.com/dorra/p/7078166.html
结果:
在jsp页面中定义全局变量,供其他页面引用的方法是:使用 jsp include指令(<%@include file="绝对或相对路径" %>
)
本文地址:https://blog.csdn.net/qq_26383975/article/details/107381714