昨晚记错了,项目中用的是这个<jsp:attribute>,不过没关系,都差不多!原理是传参数

具体用法:

假设有两个tag文件  aaa 和 bbb

aaa有两个属性:name  age

<aaa name="<%= name%>"><jsp:attribute name="age"><bbb xxxxxxxxx >xxxxxxxxxx /></jsp:attribute></aaa>

这样aaa中两个属性就都有了,<jsp:attribute>主要作用就是动态传入属性,实现想要的功能

页面引入另一个jsp时,通过在浏览器中 F12 查看,我们会发现两个jsp的代码合并到了一起,所以在这种情况下,jquery是可以共用的,相互传值也是不需要的,可以直接用

--------------------分割线------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

今天工作过程中遇到了一个问题:有两个工程,就叫做 " I " 和 " M " 吧。项目 I 写了JSP的结构,样式,数据取得;项目 M 包含页面的跳转 页面的header部分由M加载出来,

表信息通过<jsp:include>引出项目 I 的内容。

可是!!我 I 部分的画面!就是加载不出来!!!QAQ 咋回事啊 我也很绝望啊!!!

由于<jsp:include>中url是由各个取得的参数拼成的,我怀疑是项目 I 那里参数接收的有问题,或者项目 M 那个由参数拼成的url是不正确的(适用于运行环境,不适用于tomcat)。

关于JSP引用其他JSP,我看到这篇帖子 https://blog.csdn.net/fn_2015/article/details/70311495 觉得这位带哥转载的得很棒,所以,我决定把内容愉快的搬运过来~

在这里谢谢大家了( ̄︶ ̄)↗

一个jsp页面引入另一个jsp页面的三种方式 及静态引入和动态引入的区别

1.第一种:jstl  import

<c:import url="inlayingJsp.jsp"></c:import> 
2. 第二种:jsp include指令

include指令告诉容器:复制被包含文件汇总的所有内容,再把它粘贴到这个文件中。

<%@ include file="inlayingJsp.jsp" %>

3. 第三种:jsp include动作

<jsp:include   page="inlayingJsp.jsp" flush="true"/>

注意:(1)include指令在转换时插入“Header.jsp”的源代码,而<jsp:include>动作在运行时插入“Header.jsp"的响应。

<%@include为静态包含,<%@include不论包含的是txt文本还是jsp文件,被包含的页面都不会从新编译。

<%@include为静态包含,包含了几个JSP转译成servlet时就会有  几 个 class文件,如果在jsp1定义了变量i同时在jsp2也定义了变量i那么你编译都会通不过的,

jsp容器会告诉你i重复定义了.
                <jsp:include 为动态包含,<jsp:include 如包含jsp文件,这每次加载主页面的时候,被包含的页面都要重新编译。
                  就是说不管你包含了几个jsp页面转译成servlet时中有一个class文件

所以说对于<%@include要慎用!

(2)使用jstl标签时,一定要在jsp文件头加入以下代码:<%@taglib prefix="c" uri="http://Java.sun.com/jsp/jstl/core"%>

1、什么是静态导入?

静态导入指的是,将一个外部文件嵌入到当前JSP文件中,同时解析这个页面的JSP语句,它会把目标页面的其他编译指令也包含进来。
include的静态导入指令使用语法:

<%@include file="relativeURLSpec"%>

静态导入使用范例include1.jsp:

 <%@ page contentType="text/html; charset=utf-8" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>静态include范例</title>
</head>
<body>
<!--使用include编译指定导入页面-->
<%@include file="error.jsp"%>
</body>
</html>

其中error.jsp是一个简单的错误处理页面,代码如下:

 <%@ page contentType="text/html; charset=utf-8" language="java" isErrorPage="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>错误提示页</title>
</head>
<body>
这是一个错误处理页面</br>
</body>
</html>

在tomcat下运行该静态include范例后,查看生成的servlet类可看到如下代码段

(查看方式:windows下,找到tomcat安装目录下的work文件夹,进入Catalina文件夹下的localhost文件夹,找到当前项目所在的文件夹,找到org目录,进入其下的apache目录下的jsp文件夹,即可看到一个include1_jsp.java文件,这就是该include1.jsp对应生成的servlet类。ps:我是把这个测试页面放在webDemo下的,所以我的目录是\apache-tomcat-7.0.47\work\Catalina\localhost\webDemo\org\apache\jsp)

从方框中即可看出静态导入是:包含页面在编译时将完全包含被包含页面的代码。需要指出的是,静态导入还会将被包含页面的编译指令也包含进来,如果两个页面的编译指令有冲突,那么页面就会出错。

2、什么是动态导入

动态导入是不会导入include页面的编译指令的,而是仅仅将被导入页面的body内容插入本页面。
动态导入的语法格式:

<jsp:include page="{relativeURL|<%=expression%>}" flush="true"/>

或者

 <jsp:include page="{relativeURL|<%=expression%>}" flush="true">
<jsp:param name="parameterName" value="parameterValue"/>
</jsp:include>

flush属性用语指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中,如果指定为false,则包含在原文件中,对于JSP1.1旧版本,只能设置为false。
对于第二种语法格式,则可在被导入页面中加入额外的请求参数。

动态导入范例:

我们将上面的include1.jsp代码静态导入改为动态导入

 <%@ page contentType="text/html; charset=utf-8" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>静态include范例</title>
</head>
<body>
<!--使用include编译指定导入页面-->
<jsp:include page="error.jsp" />
</body>
</html>

编译后查看生成的servlet代码,可以看到如下段:

红色方框中代码显示出,动态导入只是使用了一个include方法来插入目标页面的内容,而不是将目标页面完全融入到本页面中。
归纳起来,静态导入和动态导入有如下三点区别:

1、静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容。
2、静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。
3、动态导入还可以增加额外的参数。即如下代码方式:

 <jsp:include page="{relativeURL|<%=expression%>}" flush="true">
<jsp:param name="parameterName" value="parameterValue"/>
</jsp:include>

 看完这些我大概是懂丶引入jsp是怎么回事了,希望也能够帮到大家!

 希望明天我能够解决好这个问题,我们下期再见!

 

项目中遇到的问题——jsp:include的更多相关文章

  1. idea在springboot项目中没有【新建JSP选项】的解决方法

    https://blog.csdn.net/qq_26525215/article/details/53726690 转载于CSDN

  2. 解决 jsp:include 引用文件时出现乱码的问题

    阐述问题前,先来看一下下面这张图片左侧iframe中的乱码页面: 这个就是让我纠结好一阵子的乱码截图: 这个乱码页面中是使用了<jsp:include>引用标签后出现了这个问题: 源码截图 ...

  3. 在web项目中搭建一个spring mvc + spring + mybatis的环境

    介绍:本文中示范搭建一个ssm环境的框架:使用流程就是客户端通过http请求访问指定的接口,然后由服务器接受到请求处理完成后将结果返回. 本项目请求流程细节介绍:由客户端请求到指定的接口,这个接口是个 ...

  4. 理解JavaWeb项目中的路径问题——相对路径与绝对路径

    背景: 在刚开始学习javaweb,使用servlet和jsp开发web项目的过程中,一直有一个问题困扰着我:servlet 和 jsp 之间相互跳转,跳转的路径应该如何书写,才能正确的访问到相应的s ...

  5. jsp中的@include与jsp:include区别详解

    1 前言 搞java开发的人也许都知道在jsp中引入项目中其他文件有如下两种方式 <%@include file="xxx.jsp"%> <jsp:include ...

  6. 05传智_jbpm与OA项目_部门模块中增加部门的jsp页面增加一个在线编辑器功能

    这篇文章讲的是在线编辑器功能,之前的部门模块中,增加部门的功能jsp页面起先是这么做的.

  7. springboot项目中使用jsp

    在pom文件中 1.方法一 <!-- 引入tomcate内嵌的jsp解析包--> <dependency> <groupId>org.apache.tomcat.e ...

  8. Atitit.java c#.net php项目中的view复用(jsp,aspx,php的复用)

    Atitit.java c#.net php项目中的view复用(jsp,aspx,php的复用) 1.1. Keyword1 1.2. 前言1 2. Java项目使用.Net的aspx页面view1 ...

  9. 关于<%@ include file=" " %>与<jsp:include page=""></jsp:include>中的那些问题?

    今天在使用<%@ include file=" " %>指令时,竟然在页面中不让使用?这是怎么回事:问题如下图: 顿时被这个问题给搞到了!!!突然想到在以前的 JSP ...

随机推荐

  1. leecode刷题(18)-- 报数

    leecode刷题(18)-- 报数 报数 描述: 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 1112 ...

  2. 一篇文章搞懂Linux安全!

    Linux是开放源代码的免费正版软件,同时也是因为较之微软的Windows NT网络操作系统而言,Linux系统具有更好的稳定性.效率性和安全性. 在Internet/Intranet的大量应用中,网 ...

  3. 【javascript】—— JS判断浏览器类型、操作系统

    navigator.userAgent : userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值. navigator.platform : platform ...

  4. mongodb 两台互为主从

    主机A [root@mysql_master zhxf]# cat docker-compose.yml version: '3' services: mongo_rs1: image: mongo: ...

  5. ES6之新增set数据结构

    学习set set是ES6中的新增的数据结构,是一种构造函数,类似于数组,但是里面的元素都是唯一的,不重复的. 例如: const set = new Set(); [1,2,3,4,5,2,1,2, ...

  6. 腾讯云服务器安装宝塔面板快速配置LNMP/LAMP网站系统

    我们在选择购买腾讯云服务器之后,有部分用户肯定是用来建站用途的.毕竟云服务器的性能和功能比虚拟主机优秀很多.腾讯云服务器拥有香港.北京.广州.上海.美国等多个机房,可以安装Linux和Windows系 ...

  7. (JAVA作业)练习:创建一个类名为Fruit;包含实例变量:水果名称,颜色,价格,上市月份,有无种子 10个实例:苹果,香蕉,芭乐,柚子,李子,杨桃,猕猴桃,哈密瓜,葡萄,榴莲; 实现功能:提示用户输入水果品种编号,输出该水果的全部信息。

    class Lei { String name; String color; int price; int date; int num; String zz; void assemble(){ Sys ...

  8. Servlet+JSP+JDBC设计实现图书系统——管理功能实现

    写在前面,之前由于种种原因博客好久没有更新.最近打算重拾JavaWeb,所以从头开始,先用servlet+jdbc+bootstrap最基础的代码实现一个图书系统.考虑有管理员端+用户端,项目完成后会 ...

  9. bzoj3956: Count (单调栈+st表)

    题面链接 bzoj 题解 非常巧妙的一道题 类似[hnoi影魔] 每个点会给左右第一个大于它的点对产生贡献 可以用单调栈求出 这里有点小细节,就是处理相等的点时,最左边的点管左边的贡献,最右边的点管最 ...

  10. Flask中路由系统以及蓝图的使用

    一.Flask的路由系统 1.@app.route()装饰器中的参数 methods:当前URL地址,允许访问的请求方式 @app.route("/info", methods=[ ...