资源描述
,Java Web技术,JSP 动作元素,1、JSP动作元素的概念 2、基本的JSP动作元素 3、页面复用技术,1、JSP动作元素的概念,JSP技术规范定义了一些所有兼容的Web容器都必须实现的标准JSP动作元素。这些JSP动作与JSP指令作用在JSP的转义阶段不同,它们是在用户请求处理阶段才被JSP引擎处理的。 JSP1.2规范中,主要有以下几项动作元素: ,1、JSP动作元素的概念 2、基本的JSP动作元素 3、页面复用技术,2、基本的JSP动作元素 2.1 2.2 2.3 2.4,2.1 ,概念 元素允许在一个JSP响应中动态包含来自该JSP外的其他内容。这种包含是动态的,在每次JSP被调用时,被包含的内容将被重新计算。这一点与指令是不同的。 语法 ” flush=“true | false ” / 或 flush=true | false / ,page可以代表一个相对路径,即你所要包含进来的文件位置或是经过表达式所运算出的相对路径。,flush 接受的值为boolean,假若为true,缓冲区满时,将会被清空。flush 的默认值为false。在JSP 1.2 之前,flush 必须设为true。,若page属性需要参数,则可在元素中指定参数的名称和值。参数值甚至可以指定表达式。,2.1 ,例子: http:/localhost:8080/JSPTest/IncludeFirst.jsp 利用include动作与参数值进行不同页面显示。,2.1 ,动作元素的工作原理,A.jsp页面被访问。注意到A.jsp中有一个包含动作:,A.jsp页面已经转译好的A$jsp.class被访问。在A$jsp.class的_jspService方法中,存在专门的Java代码,以向B.jsp请求信息。,B.jsp受到来自A.jsp的请求后,用处理来自客户端请求类似的方法处理来自A.jsp的请求。结果返回给A.jsp。,A.jsp将来自B.jsp的结果合并到响应文本中,一同返回给客户端。,2.1 ,动作元素的工作特点 一、注意与include指令的区别。include指令是在JSP转译前起作用的。假设A.jsp用包含指令包含了B.jsp,则包含进来的B.jsp的原文。B.jsp的内容将直接影响转译的结果。因此,一般对B.jsp内容有一定要求,如:要避免使用、等。include动作是在处理用户请求时起作用的。假设A.jsp用包含动作包含了B.jsp,其实包含进来的是B.jsp的运行结果。B.jsp的内容并不参与A.jsp的转译过程。因此可以进行参数传递。 二、每次访问A.jsp都会引起对B.jsp的调用 假设A.jsp用包含动作包含了B.jsp,则当用户访问A.jsp时,A$jsp.class会动态调用B$jsp.class。如果B.jsp发生的变化,在运行必然会引起JSP容器检查B.jsp是否发生变化,B.jsp重新转译后才输出结果给A.jsp。,2.1 Include动作与include指令的区别示例,http:/localhost:8080/JSPTest/IncludeA.jsp 1.当IncludeA.jsp中使用的是include指令包含InC.jsp 2. 当IncludeA.jsp中使用的是include动作包含InC.jsp,2.1 ,-B.jsp- -A.jsp- CH5 - A.jsp ,两个包含动作将在A$jsp.java的_jspService方法中留下两个“代码片断”,这些代码片断负责向B.jsp发出请求并获得结果。 在A$jsp.class运行时,向B.jsp请求的结果被合并到A.jsp的输出中。,http:/localhost:8080/JSPTest/CH05/IncludeAction/A.jsp,2.1 ,与include指令相同,include动作也是位置敏感的,即被包含JSP的运行结果将输出在include动作的位置上。,2.2 ,概念 动作将客户端所发出来的请求,从一个JSP 网页转交给另一个JSP网页。forward动作将会引起Web服务器的请求目标转发。转发的工作机制与重定向不同,这些工作都是在服务器端进行的,不会引起用户端的二次请求,因此效率较重定向要高。不过有一点要特别注意,标签之后的程序将不能执行。 语法 与include动作相同,可以使用jsp:param设定转发的请求参数。,示例,- ForwardFrom.jsp - CH5 - ForwardFrom ,- ForwardTo.jsp - CH5 - ForwardTo 由ForwardFrom.jsp传递过来的参数为: ,示例,http:/localhost:8080/JSPTest/CH05/ForwardFrom.jsp,工作原理,客户端向服务器的ForwardFrom.jsp发出请求 http:/mycompany/ForwardAction/ForwardFrom.jsp,ForwardFrom.jsp在处理过程中,遇到动作 ,ForwardFrom.jsp向客户端返回响应。注意这个响应其实是由ForwardTo.jsp返回的。,ForwardFrom.jsp向ForwardTo.jsp发出请求,并从ForwardTo.jsp捕获响应。,客户端访问ForwardFrom.jsp的结果。在整个过程中,客户端完全不了解服务器端ForwardTo.jsp的存在。 完全是一种服务器端行为。,2.3 ,概念 用来提供key/value 的信息,它通常与、和 一起搭配使用。 的语法 有两个属性:name 和value。name 的值就是parameter 的名称;而value 的值就是parameter 的值。 示例 ,参数规则 当使用或者时,被包含的网页或转向后的网页会先检查request对象里除了原本的参数值之外,有没有再增加新的参数值,如果有增加新的参数值时,则新的参数值在执行时,有较高的优先权。 例如: 一个request对象有一个参数A=foo;另一个参数A=bar是在转发时所传递的参数,则网页中的request的参数A=bar。注意:新的参数值有较高的优先权。,2.4,概念 用于在浏览器中播放或显示一个对象(通常为Applet 或 Bean)。当JSP 网页被编译后送往浏览器执行时,将会根据浏览器的版本替换成标签或者标签。一般来说,会指定对象Applet或Bean,同样也会指定类的名字和位置,另外还会指定将从哪里下载这个组件。 可以将params标签进行分组,然后传递参数 则作为的子元素出现。当不能启动Applet或Bean时,那么浏览器会有一段错误信息。,课堂练习,1.将Include指令练习中的页面改为Include动作。 2.利用forword和param动作,进行参数的传递。 在一个JSP页面A1.JSP中传递两个参数“name”和“password”,值任意设定. 利用forword动作,将参数传递给A2.jsp.在A2.JSP页面中进行参数获得 方法:参数值=request.getParameter(参数名)。之后,在 A2.JSP中使用if语句进行判断 当name为a,password为123时,显示登陆成功,否则显示登陆失败。,1、JSP动作元素的概念 2、基本的JSP动作元素 3、页面复用技术,什么是页面的复用,在一个大型的Web应用程序中会有很多各式各样的页面,通常为了方便用户使用,相同性质的网页最好套用一致的外观风格。,设计页面布局文件,常用的方法是:制作一个页面布局文件,利用标签将整个页面划分为四个区域,然后在每个区域插入一个HTML文件或JSP文件,由此组合出一个新的网页。例如: ,在页面布局文件中插入其他页面,在JSP页面内包含其他JSP内容的方法有两种 使用JSP指令中的include指令 使用JSP动作中的include动作 无论使用哪种形式,都应注意的是:要加入的JSP文件或HTML文件中不应当包含、等标签。,使用include指令,include指令是一种编译时的静态动作,只有当要包含的页面很少发生变化时才使用这种方法,因为当被包含的文件发生改变时不会引起包含文件JSP的重新编译。 例如,一个公司的商标和版权信息不是经常要发生变化的,就可以使用include指令进行包含: 1、将清单中的替换为: 2、将替换为: ,使用动作,include动作是在运行期才会包含其他JSP的内容的。由于包含进来的是被包含JSP页面的输出,当被包含JSP发生变化时,会被重新编译,输出的内容也会相应发生变化,这样被包含的内容相应也会发生变化。 例如: 1、将替换为: 2、将替换为: 3、将替换为: ,
展开阅读全文