JSP中include指令和include动作浅析
一、 JSP工作原理
JSP文件是一种Servlet,其工作方式是先部署源代码后编译为.class文件。JSP会在客户端第一次请求JSP文件时被编译成Servlet,由Servlet处理客户端的请求。具体流程如下图:
举例说明JSP的编译过程。客户端第一次请求index.jsp文件时,Tomcat先将index.jsp转换为标准的java源代码
index_jsp.java(该java文件存放在F:\apache-tomcat-7.0.68\work\Catalina\localhost
\项目名\org\apache\jsp目录下),并将index_jsp.java编译成类文件index_jsp.class。该class文件便是
JSP对应的Servlet。编译完成后运行class文件响应客户端请求。以后客户端访问index.jsp时,服务器将不再重新编译JSP文件,而是
直接调用index_jsp.class来响应客户端请求。
也就是说,JSP只会在客户端第一次请求的时候被编译,因此第一次请求会比较慢,而之后的请求就会速度比较快。
二、 Include指令
Include指令可以在JSP程序中插入多个外部文件(如:JSP、HTML、java程序,甚至是文本)。在转换成Servlet之前,include指令就会将相应的文件包含进主文件,然后一并转换成Servlet,编译生成一个class文件,最后一起执行。
语法:<%@ include file="relativeURL" %>
file属性是include指令的必要属性,用于指定包含哪个文件。其中relativeURL为被包含文件的路径。Include指令可以被多次调用。
注意:include指令将对应的文件包含进主文件,等价于代码复制;所以在使用include指令时要注意主文件与被包含文件不能定义相同的变量,也就是要避免变量同名冲突。
Include指令是实现代码共享的一种方式,所有的变量都是可以和主文件共享,页面设置也可以与主文件更享。
三、 Include动作
Include动作用于页面请求时引入指定文件。如果引入的文件是JSP文件,则先编译该JSP程序,然后再把编译的结果引入主文件。
语法:<jsp:include page="relativeURL" flush="true" />
属性page是必需的,其page的属性值是被包含文件的相对路径,必须为相同应用程序内的文件。属性flush取值范围为true或者false,默认为false,设置读入被保存文件内容前是否清空缓存。
注意:include动作使用request.getRequestDispatcher(“relativeURL”).forward(request,response)来引入被包含文件。
Include动作会自动检查被包含文件的变化。也就是在每次客户端发出请求时会重新把资源包含进来,进行实时的更新。
JSP动作也可以携带参数:
<jsp:include page="{relativeURL|<%=expression%>}" flush="true">
<jsp:param name="parameterName" value="parameterValue"/>
</jsp:include>
四、 总结
Include指令是“先包含,后编译”,在编译时主文件已经包含被include的文件内容(即源代码);
Include动作是“先运行,后包含”,在运行时主文件才包含被include的文件运行结果。
JSP中include指令和include动作浅析的更多相关文章
- 浅谈JSP中include指令与include动作标识的区别
JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...
- 分别应用include指令和include动作标识在一个jsp页面中包含一个文件。
分别应用include指令和include动作标识在一个jsp页面中包含一个文件. hello.jsp <%@ page language="java" import=&qu ...
- 牛客网Java刷题知识点之什么是JSP的3大常用指令、JSP的6大哪些动作、JSP中include指令和include动作有什么区别
不多说,直接上干货! JSP的3大常用指令 包含指令(Include directive):用来包含文件和合并文件内容到当前的页面. 页面指令(Page directive):用来定义JSP页面中特定 ...
- include 指令和 include 动作引入 jsp 页面时中文乱码
include指令:<%@ include file="new.jsp" %> include动作:<jsp:include page="new.jsp ...
- JSP -- include指令与include动作的区别
JSP -- include指令与include动作的区别 (1)格式的区别: include指令:<%@include file = "文件名"%> include动 ...
- 【Head First Servlets and JSP】笔记24:include指令与include动作 & param动作 & foward动作
include指令与include动作 1.样例代码 <%@ page contentType="text/html;charset=UTF-8" language=&quo ...
- 2017.9.18 include指令和include动作有什么区别?
问题:include指令和include动作有什么区别? 答:include指令合并静态文档或Jsp页面中的内容,可以用于包括动态生成的输出结果,因此可以包含一个Servlet include指令在编 ...
- jsp中的指令与动作
JSP中的三种命令指令分别是page.include.taglib JSP中的动作元素包括:include.forward.useBean.getProperty.setProperty.plugin ...
- include指令和include动作有什么区别?
include指令 称为文件加载指令,可以将其他的文件插入jsp网页,被插入的文件必须保证插入后形成的新文件符合jsp页面的语法规则. include指令语法格式:<%@incl ...
- JSP中三大指令
JSP指令概述 JSP指令的格式:<%@指令名 attr1=”” attr2=”” %>,一般都会把JSP指令放到JSP文件的最上方,但这不是必须的. JSP中的指令共有三个:page. ...
随机推荐
- POJ3682 概率DP
King Arthur's Birthday Celebration Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3575 ...
- 29-自己动手构建RequestDelegate管道
1-使用vsCode新建个项目 2-新建RequestDelegate和Context public delegate Task RequestDelegate(Context context); p ...
- 可以字符串string转化成list,tuple,dict的eval()方法
功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, globals[, locals]]) -> value 参数: source:一个Python表 ...
- Eclipse 创建 Java 项目---Eclipse教程第08课
打开新建 Java 项目向导 通过新建 Java 项目向导可以很容易的创建 Java 项目.打开向导的途径有: 通过点击 "File" 菜单然后选择 New > Java P ...
- 关于 Google Chrome “Your connection is not private” 问题的处理
今天下午访问google网站的时候,突然不能访问了,提示“Your connection is not private”(你的连接不是私密连接):查看XX-NET的设置,显示“请检查浏览器代理设置”. ...
- Nuget的使用笔记-(使用nuget发布dll到www.nuget.org)
Nuget是神马东东? 来自nuget.org官方的介绍 ----------------------------------------------------------------------- ...
- cookie不能删除
cookie不仅仅包含一个键值对,还包含域 domain 路径path, 一般domain是请求的地址 www.baidu.com/news.html 那domain就是www.baidu.com ...
- 孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录
孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录 (完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数 ...
- webpack + less
使用less需要安装 'style-loader','css-loader','less-loader' 三个loader. 安装之后在webpack.config.js配置 const path = ...
- linux下的静态库和共享库
转载&&增加: 我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期 ...