文档详情

jsp程序设计入门沈泽刚、秦玉平主编的javaweb第二版第04章JSP技术模型.ppt

发布:2017-05-22约2.67万字共192页下载文档
文本预览下载声明
使用pageContext获得一个应用作用域的属性: Email is: %=pageContext.getAttribute(email,PageContext.APPLICATION_SCOPE)% 上述代码等价于: Email is: %=application.getAttribute(email)% 使用pageContext,即使不知道作用域也可以查找一个属性,例如: %= pageContext.findAttribute(foo)% 4.6.4 页面作用域 4.7 JSP组件包含 代码的可重用性是软件开发的一个重要原则。使用可重用的组件可提高应用程序的生产率和可维护性。JSP规范定义了一些允许重用Web组件的机制,其中包括在JSP页面中包含另一个Web组件的内容或输出。这可通过两种方式之一实现:静态包含或动态包含。 4.7.1 静态包含:include指令 静态包含是在JSP页面转换阶段将另一个文件的内容包含到当前JSP页面中。使用JSP的include指令完成这一功能,它的语法为: %@ include file=relativeURL % file属性是include指令唯一的属性,它是指被包含的文件。文件使用相对路径指定,相对路径或者以斜杠(/)开头,是相对于Web应用程序文档根目录的路径,或者不以斜杠开头,它是相对于当前JSP文件的路径。被包含的文件可以是任何基于文本的文件,如HTML、JSP、XML文件,甚至是简单的TXT文件。 图4-4 使用include指令的静态包含 图4-4说明了include指令的工作方式 由于被包含JSP页面的代码成为主页面代码的一部分,因此,每个页面都可以访问在另一个页面中定义的变量。它们也共享所有的隐含变量,如程序4.11所示。 程序4.11 hello.jsp 下面代码是被包含页面response.jsp。 程序4.12 response.jsp 1. 从被包含页面中访问变量 2. 静态包含的限制 当使用include指令包含一个文件时,需要遵循下列几个规则。 (1)在转换阶段不进行任何处理,这意味着file属性值不能是请求时表达式,因此下面的使用是非法的。 %! String pageURL =copyright.html; % %@ include file=%= pageURL % % 2. 静态包含的限制 (2)不能通过file属性值向被包含的页面传递任何参数,因为请求参数是请求的一个属性,它在转换阶段没有任何意义。下面例子中的file属性值是非法的。 %@ include file=other.jsp?name=Hacker % (3)被包含的页面可能不能单独编译。一般来说,最好避免这种依赖性,而使用隐含变量pageContext共享对象,通过使用pageContext的setAttribute()和getAttribute()实现。 4.7.2 动态包含:include动作 动态包含是通过JSP标准动作jsp:include实现的。该动作的格式如下: jsp:include page=“relativeURL” flush=true|false / 这里page属性是必须的,其值必须是相对URL,并指向任何静态或动态Web组件,包括JSP页面、Servlet等。可选的flush属性是指在将控制转向被包含页面之前是否刷新主页面。flush属性的默认值为false。 page属性的值可以是请求时表达式,例如: %! String pageURL = other.jsp; % jsp:include page=%= pageURL % / 图4-6说明了jsp:include的工作方式。 4.7.2 动态包含:include动作 在功能上jsp:include动作的语义与RequestDispatcher接口的include()的语义相同,因此,下面三个结构是等价的。 【结构1】 % RequestDispatcher rd = request.getRequestDispatcher(other.jsp); rd.include(request, response); %  4.7.2 动态包含:include动作 4.5.3 application变量 application是javax.servlet.ServletContext类型的隐含变量,它是JSP页面所在的Web应用程序的上下文的引用(ServletContext接口),下面两段小脚本是等价的。 4.5.3 application变量
显示全部
相似文档