Include directive and Include action
来源:互联网 发布:简易软件开发 编辑:程序博客网 时间:2024/06/03 22:41
http://rainmanjin.javaeye.com/blog/476838
http://www.orionserver.com/docs/specifications/jsp-1_2-fcs-spec.pdf
1 语法不同
<%@ include file = "/login.jsp" %> --- include directive
<jsp:include flush="true" page="/login.jsp"></jsp:include> -------- include action
静态include是在main jsp translation 期间执行的,它会将login.jsp的内容引入到main的servlet,两者合而为一。
动态include是在request时候执行的,它独立生成一个相应的servlet。实际只是引用了login.jsp这个文件被转化并被编译后产生的servlet类文件.login.jsp就是作为一个单独的文件在执行后才被index.jsp文件运行时调用.
include directive is interpreted relative to current jsp file.An include directive regards an resource as static object like jsp file.(直接将编译后的login.jsp内容写在main servlet----编译期间完成的)。
include action is interpreted relative to current jsp page.An include action regards an resource as dynamic object as a jsp page.(独立编译一个login对应的servlet,处理请求的时候,执行这个页面) 。
编译阶段:Jsp容器负责将jsp页面转化成servlet(称为jsp页面实现类?JSP Page implementation class),并编译这个servlet。这两步就构成了翻译阶段.
请求处理阶段:Jsp容器除了上面提到的负责将jsp页面转化成servlet外,还负责调用jsp页面实现类以处理每个请求并产生应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文件。
2 对象共享
静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设置也可以借用主文件的.不可以重复设置它tag lib.比如:
而动态include的页面要共享主页面的对象,可以通过<jsp:param> 传递。页面的设置必须单独设置。比如:
<%@ page language=”java” contentType=”text/html;charset=gb2312”%>
<jsp:include page=”<%=pageSelectedAtRuntime%>” flush=”true” >
<jsp:param name=”fitstParamer” value=”firstValue”>
<jsp:param name=”lastParamer” value=”lastValue”>
</jsp:include>
3 Request 和 Response
静态include纯粹是把代码写在主页面的servlet,所以request 和 response 和主页面是同一个对象,可以获得主页面的request 和 reponse 的内容。
动态include的request 和主页的request是同一个scope,即主页面设置request的attribute/parameter,include页面可以获得.
main jsp 调用动态include页面实现类,便out.write实现类执行的结果。在动态include页面调用reponse.setHeader,reponse.sendRedirect,setCookies页面没有作用。
An included page only has access to the JspWriter and it can't set header and reponse.setHeader,reponse.sendRedirect,setCookies.This constraint also apply to include method of RequestDispatcher class.
参考联接:
http://java.chinaitlab.com/ServletJsp/529740_2.html
4 实例解析: 定时刷新子页面:动态include和静态include都能做。但静态include会整个页面刷新。
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Insert title here</title>
- </head>
- <% request.setAttribute("username","Emmy"); %>
- <body>
- <jsp:include flush="true" page="/login.jsp"/>
- UserName:<input type="text" value=""/>
- Password:<input type="text" value=""/><br>
- </body>
- </html>
- <%@ page import = "com.citigroup.school.Student" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <meta http-equiv="refresh" content="3">
- <title>Insert title here</title>
- </head>
- <%
- //response.setHeader("refresh","3;URL=/Test/test.jsp");
- //response.setHeader("refresh","3");
- //response.sendRedirect("http://localhost:8080/Test/test.jsp"); ----jsp:include 没有起到作用
- //return; ----- jsp:include 只能执行到这一步,页面空白,并没有跳到test.jsp的页面。
- //out.write("<mce:script type='text/javascript'><!--
- alert('hi')
- // --></mce:script>");
- Student s = new Student();
- out.write("<mce:script type='text/javascript'><!--
- alert("+Student.id+")
- // --></mce:script>");
- %>
- <body>
- UserName:<input type="text" value=""/>
- <%out.write(Student.id);%>
- Password:<input type="text" value=""/><%out.write((String)request.getParameter("username"));%></br>
- </body>
- </html>
- Include directive and Include action
- Difference between JSP include directive and JSP include action
- jsp:include and include directive
- Include directive and variable scope in PHP
- JSP - Include Directive
- include -include and sinclude
- [Jweb] JSP-编程 02 (Directive-include)
- #include
- include
- #include
- include
- #include
- #include
- include
- #include
- #include
- include
- #include
- c 异常处理
- jsp,equal symbol expected
- 利用Visual C++制作应用程序启动画面
- HTTP幂等性
- CListCtrl 的自绘
- Include directive and Include action
- 获得当前分类ID,产品详细信息页面得到当前产品默认商店的的商品名称
- SQL Cursor 基本用法
- 关于javascript 类的静态属性
- mahout中k-means例子的运行
- nginx_array
- linux启动流程
- 第七章 更加抽象——面向对象
- Android 之 zygote 与进程创建