JSP入门:include指令与jsp:include动作标志
2015-11-16 15:11
531 查看
初学JSP时碰到两个看似没有什么差别include指令与jsp:include动作标志。
这两个指令看上去没什么不同,但其实是存在很大差别的。
我在初学时新建了一个web项目,并创建了三个jsp页面top.jsp,center.jsp,bottom.jsp.
通过<include file="top.jsp">和<include file="bottom.jsp">在center.jsp中引用
结果在编译的时候报错,不能保存。
而使用<jsp:include oage="top.jsp"/>.....则没有问题。
查阅了《Java Web从入门到精通》,找到了答案:
1.include指令通过file属性指定被包含的文件,并且file属性不支持任何表达式;<jsp:include>动作标志通过page属性置顶被包含的文件,而且page属性支持JSP表达式。
2.使用include指令时,被包含的文件内容会原封不动地插入到包含页中,然后JSP编译器再将合成后的文件最终编译成一个Java文件;使用<jsp:include>动作标志包含文件时,当标志被执行时,程序将会请求转发(注意是转发,而不是请求重定向)到被包含的页面,并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码。因为服务器执行的是多个文件,所以JSP编译器会分别对这些文件进行编译。
3.在应用include指令包含文件时,由于被包含的文件最终会生成一个文件,所以被包含文件、包含文件中不能有重名的变量或者方法;而在应用<jsp:include>动作标志包含文件时,由于每个文件都是单独编译的,所以在被包含文件中重名的变量和方法都是不相冲突的。
也就是说。include指令实际上是把我所创建的三个页面的代码都给拼到了一起。实际上就会重复 这样能不报错么?
而使用jsp:include相当于<frame src>,并非强制性的拼凑,而是各干各的,互不影响。所以才能运转正常。
对于有强迫症的朋友,这里提供使用include指令的解决方法。就是把jsp页面<html>标签前面的两个地方代码给删掉
1:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
2:
<base href="<%=basePath%>">
这两个指令看上去没什么不同,但其实是存在很大差别的。
我在初学时新建了一个web项目,并创建了三个jsp页面top.jsp,center.jsp,bottom.jsp.
通过<include file="top.jsp">和<include file="bottom.jsp">在center.jsp中引用
结果在编译的时候报错,不能保存。
而使用<jsp:include oage="top.jsp"/>.....则没有问题。
查阅了《Java Web从入门到精通》,找到了答案:
1.include指令通过file属性指定被包含的文件,并且file属性不支持任何表达式;<jsp:include>动作标志通过page属性置顶被包含的文件,而且page属性支持JSP表达式。
2.使用include指令时,被包含的文件内容会原封不动地插入到包含页中,然后JSP编译器再将合成后的文件最终编译成一个Java文件;使用<jsp:include>动作标志包含文件时,当标志被执行时,程序将会请求转发(注意是转发,而不是请求重定向)到被包含的页面,并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码。因为服务器执行的是多个文件,所以JSP编译器会分别对这些文件进行编译。
3.在应用include指令包含文件时,由于被包含的文件最终会生成一个文件,所以被包含文件、包含文件中不能有重名的变量或者方法;而在应用<jsp:include>动作标志包含文件时,由于每个文件都是单独编译的,所以在被包含文件中重名的变量和方法都是不相冲突的。
也就是说。include指令实际上是把我所创建的三个页面的代码都给拼到了一起。实际上就会重复 这样能不报错么?
而使用jsp:include相当于<frame src>,并非强制性的拼凑,而是各干各的,互不影响。所以才能运转正常。
对于有强迫症的朋友,这里提供使用include指令的解决方法。就是把jsp页面<html>标签前面的两个地方代码给删掉
1:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
2:
<base href="<%=basePath%>">
相关文章推荐
- java-WEB中的监听器Lisener
- GUI - Web前端开发框架
- Extjs4.0 最新最全视频教程
- JSP/PHP基于Ajax的分页功能实现
- MyEclipse Web Project转Eclipse Dynamic Web Project
- axis备忘
- 开发阶段Jetty运行Jsp报错且响应空白
- Erlang实现的一个Web服务器代码实例
- 防止网页脚本病毒执行的方法-from web
- 自学成才的秘密:115个 web Develop 资源
- jsp简单实现页面之间共享信息的方法
- 使用批处理修改web打印设置笔记 适用于IE
- Apache Web让JSP“动”起来
- web下载的ActiveX控件自动更新
- 推荐六款WEB上传组件性能测试与比较第1/10页
- 关于三种主流WEB架构的思考
- 使用 Iisext.vbs 列出 Web 服务扩展文件的方法