servlet jsp:include 与 include 指令的不同之处
2014-10-03 21:42
267 查看
jsp:include 和 include 的作用 就是 为代码重用 减少重复代码
但是这个两者有什么不同了? 根本点 我们看看 jsp文件 转换为.java文件之后的源代码
*********************************jsp:include 所生成的java源文件***********************
out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write('\r');
out.write('\n');
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "header.jsp", out, false);
out.write('\r');
out.write('\n');
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>");
******************************************************************************
*******************************include的指令生成的源文件*****************
out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("\r\n");
out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<h1>This is public header</h1>\r\n");
out.write("</body>\r\n");
out.write("</html>");
out.write('\r');
out.write('\n');
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>");
******************************************************************************
区别很明显
include 指令 是先将包含的jsp文件内容复制过来 ,然后再一起转换为.java文件
而jsp:include标准动作 则是在原来的文件转换为.java文件之后, 通过 org.apache.jasper.runtime.JspRuntimeLibrary.include
去请求那个文件,然后再将响应插入进来。
优缺点:
jsp:include 标准动作 优点:总是能获取引入文件的最新内容,因为每次请求都会去读取那个文件。
缺点:有性能消耗
include指令 优点:只会在转换为.java文件时,做一次读取引入文件,性能消耗较少;缺点:不能在引入文件修改后,显示最新的内容。(tomcat5+的可以实现自动辨识jsp文件是否修改过,但其他的服务器不一定可以哦)
但是这个两者有什么不同了? 根本点 我们看看 jsp文件 转换为.java文件之后的源代码
*********************************jsp:include 所生成的java源文件***********************
out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write('\r');
out.write('\n');
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "header.jsp", out, false);
out.write('\r');
out.write('\n');
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>");
******************************************************************************
*******************************include的指令生成的源文件*****************
out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("\r\n");
out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<h1>This is public header</h1>\r\n");
out.write("</body>\r\n");
out.write("</html>");
out.write('\r');
out.write('\n');
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>");
******************************************************************************
区别很明显
include 指令 是先将包含的jsp文件内容复制过来 ,然后再一起转换为.java文件
而jsp:include标准动作 则是在原来的文件转换为.java文件之后, 通过 org.apache.jasper.runtime.JspRuntimeLibrary.include
去请求那个文件,然后再将响应插入进来。
优缺点:
jsp:include 标准动作 优点:总是能获取引入文件的最新内容,因为每次请求都会去读取那个文件。
缺点:有性能消耗
include指令 优点:只会在转换为.java文件时,做一次读取引入文件,性能消耗较少;缺点:不能在引入文件修改后,显示最新的内容。(tomcat5+的可以实现自动辨识jsp文件是否修改过,但其他的服务器不一定可以哦)
相关文章推荐
- 【Head First Servlets and JSP】笔记24:include指令与include动作 & param动作 & foward动作
- JSP技术-page,include指令,一个servlet不能既有字节流又有字符流,异常处理
- 怎么在一个jsp页面用include指令包含一个Servlet
- 怎么在一个jsp页面用include指令包含一个Servlet
- JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
- <jsp:include>标签与include指令的比较
- Jsp中Include标签和jsp指令中的Include有什么区别
- tomcat 的不同jsp/servlet 版本
- jsp中指令include和jsp:include,jsp:forward
- jsp Servlet基础入门学习篇 十二、脚本元素、指令和预定义变量
- JSP中include指令和include行为的区别
- 关于jsp编译指令include和动作指令include的区别
- JSP之 include指令(及其动态包含和静态包含)和JSP之taglib指令
- JSP的指令元素的概述;Page指令包含的属性Taglib指令JSP的指令-include和taglib指令
- JSP指令标识之include指令
- JSP文件中使用include指令来包含一个文本文件
- JSP(3):servlet 用同一用户的不同页面共享数据(session)
- jsp通过include指令引入html乱码的解决方法
- JSP_include指令和<jsp:include>
- Hello JSP!——指令元素之include篇