jsp当中,include动作和include指令的区别
jsp这方面学的模模糊糊 今天看视频时 简单了解了 include动作和include指令的区别 (如果实例和图片进行讲解)
如下:
!!!!
1.include指令
include可以在JSP页面转换成Servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定。它的缺点是难于维护只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含的页面是否发生更改。
语法:<%@ include file="sample.jsp" %>
2.include动作
jsp:include动作是在主页面被请求时,将次级页面的输出包含进来。尽管被包含的页面的输出中不能含有JSP,但这些页面可以是其他资源所产生的 结果。服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。服务器以通常的方式运行被包含的页面, 将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致。它的优点是在被包含的页面发生更改时,无须对主页 面做出修改。它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。
语法: <jsp:include page="sample.jsp" flush="true"> <jsp:param name="name" value="value"/> </jsp:include>
!!!!!
(感叹号之间为别人的成果,地址为:http://blog.csdn.net/szwangdf/article/details/33336777)
如下为 自己所写
jsp指令 直接把源文件包含进来
如下分别为 为了测试include指令和动作时 编写的一个输出时间的一个date.jsp 测试include指令的include_command.jsp
和为了测试include动作的include_action.jsp
date.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%@ page import="java.text.*" %>
<%
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
String s = sdf.format(d);
out.println(s);
%>
include_command.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<body>
<h1>Include指令</h1>
<hr>
<%@ include file="date.jsp"%>
</body>
</html>
在tomcat上运行后,在C:\Users\79902\Desktop\apache-tomcat-8.0.48\work\Catalina\localhost\JspCommand&Action\org\apache\jsp目录下(每个人的此目录不尽相同,路径问题请百度查询),
可以看到只有include_005fcommand_jsp.java和include_005fcommand_jsp.class生成,而没有和data.jsp有关的文件生成
我们打开include_command._jsp.java
打开java文件,可以看到 编写的date.jsp中的代码被全部编译到里面。(即include指令元素把要包含的文件代码全部编译到自己要运行的文件代码中)
下面创建jsp动作文件 include_action.jsp
include_action.jsp
<body>
<h1>Include动作</h1>
<hr>
<jsp:include page="date.jsp" flush="false"/>
</body>
运行include_action.jsp文件,依旧在web目录下面,我们看到 有date.jsp的calss和java文件生成,有include_action.jsp的class和java文件生成,两者为独立的类文件。 我们打开include_action.jsp.java文件,看到和上面相似的这句代码大意为:调用了date.jsp并把输出结果打印出来。
后赋一张图: