JSP技术(二)

1、<\jsp:include>
这个动作元素用于在当前页面中包含静态和动态的资源,一旦被包含的页面执行完毕,请求处理将在调用页面中继续进行。被包含页面不能改变响应的状态代码或者设置报头。语法如下:

<jsp:include page="urlspace" flush="true|false"/>

page属性:指定被包含资源的相对路径,该路径是相对于当前JSP页面的URL。

flush属性:如果设置为true,当页面输出使用了缓冲区,那么在进行包含工作之前,要先刷新缓冲区。默认是false。

<\jsp:include>动作可以在它的内容中包含一个或多个<\jsp:param>元素,为包含的页面提供参数信息。
被包含的页面可以访问request对象,该对象包含了原始的参数和使用<\jsp:param>元素指定的新参数。如果参数名相同,原来的值保持不变(request中的值不变),新的值(<\jsp:param>中设置的值)其优先级比已经存在的值要高。

<\jsp:include>元素与 <%@ include%>指令之间的区别:
这里写图片描述
include指令包含的对象为静态,并不是指include指令只能包含像HTML这样的静态页面,include指令也可以包含JSP页面。

所谓静态和动态指的是:include指令将JSP页面作为静态对象,将页面的内容(代码或文本)在include指令的位置包含进来,并不进行处理,这个过程发生在JSP页面的转换阶段。

<\jsp:include>动作把包含的JSP页面作为动态对象,在请求处理期间,发送请求给该对象(因此被包含页面可以使用request对象),然后在当前页面对请求的响应中包含该对象对请求处理的结果(作为原请求结果的一部分)。

对于四个文件夹:a.jsp,c.jsp,abc/b.jsp,abc/c.jsp。
这里写图片描述
理解:当采用include指令包含资源时,相对路径的解析发生在转换阶段,资源的内容(文本或代码)在include指令的位置被包含进来,成为一个整体,被转换为Servlet源文件。

因此,对于第一行分析:在转换阶段,a.jsp文件包含@include file=”abc/b.jsp”,因此将会被(相对于当前文件(a.jsp)的)资源abc/b.jsp的内容所替代;但是abc/b.jsp文件中又包含了@include file=”c.jsp”资源,路径是相对于当前文件(“abc/b.jsp”)的,因此该处就会被abc/c.jsp文件所替代。而最终a.jsp中包含的文件是abc/c.jsp。

当采用<\jsp:include>动作包含资源时,相对路径的解析发生在请求处理阶段,当前页面和被包含的资源是两个独立的个体,当前页面会将请求发送给被包含的资源,被包含的资源处理完毕之后,结果会作为当前页面的结果的一部分发送到客户端。

因此,对第二行的分析:文件a.jsp,与文件abc/b.jsp是两个独立的个体,在处理请求的过程中,将请求转发给abc/b.jsp进行处理;而abc/b.jsp文件里面继续包含c.jsp(相对于当前页面abc/b.jsp)。因此最后处理调用的是abc/c.jsp文件。

对第四行的分析:在a.jsp文件中@include file=”abc/b.jsp”文件。因此在转换阶段需要将该文件替换的真实的资源(文本或代码)。但是abc/b.jsp中包含jsp:include page=c.jsp。因此直接用代码段jsp:include page=c.jsp替换abc/b.jsp文件处。现在实际上在a.jsp文件中包含<\jsp:include page=”c.jsp”>。因此,当请求c.jsp页面时,会找相对于当前页面(a.jsp)的资源,最后调用处理的是c.jsp文件,而不是abc/c.jsp文件。

<\jsp:forward>
这个动作允许在运行时将当前的请求转发给一个静态资源、JSP页面或者Servlet。请求被转向到的资源必须位于同JSP发送请求相同的上下文环境中。
这个动作会终止当前页面的指向,如果页面输出使用了缓冲,在转发请求之前,缓冲区将被清除;如果在转发之前,缓冲区已经刷新,将抛出异常。

这个动作的作用和RequestDispatcher接口的forward()方法的作用是一样的。

语法如下:

<jsp:forward page="relativeURL"/>

page属性:指定请求被转发的相对路径,该路径是相对于当前JSP页面的URL。

注释:
HTML注释:可以在客户端看到
可以包含动态的内容,这些动态内容将被JSP容器处理,然后将结果作为注释的一部分。

<!--注释内容-->
<!--1+1=<%= 1+1%> -->

JSP注释:不会被发送到客户端
语法如下:

<%--注释内容--%>

另外,在脚本段中,可以使用Java本身的注释机制。

<%  // int a=0;   /*  注释 */ %>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值