天天看点

JSP中的include指令

       一般的网页格式如下:

<b>1</b><b>工</b><b></b>

<b>具</b><b></b>

<b>导</b><b></b>

<b>航</b><b></b>

<b>区</b><b></b>

<b>(</b><b>不变</b><b>)</b>

<b>2</b><b>首部信息(基本不变)</b><b></b>

各个频道的具体信息

(此处的信息是会被反复改变的)

<b>3</b><b>尾部信息(基本不变)</b><b></b>

       那么如果要想实现以上的样式的代码,有两种做法:

       · 每一个页面都单独编写1、2、3号代码,这样一来代码重复

       · 将这三部分代码单独做成文件,之后在一个整体页面中包含进来

       可以包含任何的文件,可以把任何文件的内容直接包含进来,文件包含的时候不需要后缀。所以此种包含属于静态包含,只关心文件本身的内容。

例如:现在随便建立几个后缀的文件:

<b>1</b><b>、</b><b>  inc.jsp</b><b>:</b><b></b>

&lt;h1&gt;inc.jsp&lt;/h1&gt;

<b>2</b><b>、</b><b>  inc.htm</b><b>:</b><b></b>

&lt;h1&gt;inc.htm&lt;/h1&gt;

<b>3</b><b>、</b><b>  inc.inc</b><b>:</b><b></b>

&lt;h1&gt;inc.inc&lt;/h1&gt;

       那么之后直接使用包含语句将此三个页面包含进来

<b>IncludeDemo01.jsp</b><b>:</b><b></b>

&lt;%@include file="inc.htm"%&gt;

&lt;%@include file="inc.jsp"%&gt;

&lt;%@include file="inc.inc"%&gt;

&lt;h1&gt;IncludeDemo01.jsp&lt;/h1&gt;

       动态包含,动态包含比静态包含多增加了一个判断功能,如果被包含的是动态页面,则按动态的方式进行处理,如果包含的是静态页面,则与之前的&lt;%@include%&gt;的操作形式是一样的。

<b>IncludeDemo02.jsp</b><b>:</b>

&lt;jsp:include page="inc.htm"/&gt;

&lt;jsp:include page="inc.jsp"/&gt;

&lt;jsp:include page="inc.inc"/&gt;

&lt;h1&gt;IncludeDemo02.jsp&lt;/h1&gt;

       那么,使用此种包含语句,可以向被包含的页面之中传递参数,只要被包含的页面是动态页面,则就可以通过request.getParameter()直接接收此参数。

<b>Incdemo.jsp</b><b>:</b><b></b>

&lt;%-- 这两个参数都由包含页传递过来 --%&gt;

&lt;h1&gt;&lt;%=request.getParameter("<b>ref1</b>")%&gt;&lt;/h1&gt;

&lt;h1&gt;&lt;%=request.getParameter("<b>ref2</b>")%&gt;&lt;/h1&gt;

<b>IncludeDemo03.jsp</b><b>:</b>

&lt;jsp:include page="Incdemo.jsp"&gt;

<b>         &lt;jsp:param name="ref1" value="Hello"/&gt;</b>

<b>         &lt;jsp:param name="ref2" value="World"/&gt;</b>

&lt;/jsp:include&gt;

       两种包含完成的功能都很相似,只是第二种包含中可以传递参数,第一种不能传递参数,除此之外两种包含还有一个最大的差别:

       · &lt;%@include%&gt;:表示把所有的页面的内容包含进来之后一起处理结果

       · &lt;jsp:include/&gt;:如果包含的是静态页面,则处理过程与之前一样,如果是动态页面,则多个页面分别进行处理,之后再把结果包含进来。

1、  验证&lt;%@include%&gt;,静态包含

<b>IncludeDemo04.jsp</b><b>:</b><b></b>

&lt;%

         int i = 10 ;

%&gt;

&lt;h1&gt;IncludeDemo04.jsp --&gt; &lt;%=i%&gt;&lt;/h1&gt;

&lt;%@include file="IncludeDemo05.jsp"%&gt;

<b>IncludeDemo05.jsp</b><b>:</b><b></b>

         int i = 100 ;

&lt;h1&gt;IncludeDemo05.jsp --&gt; &lt;%=i%&gt;&lt;/h1&gt;

2、  验证&lt;jsp:include&gt;,动态包含

<b>IncludeDemo04.jsp</b><b>:</b>

&lt;jsp:include page="IncludeDemo05.jsp"/&gt;

<b>结论:</b>

       两种包含中使用&lt;jsp:include&gt;包含是最方便的,建议只使用此语法。

       forward指令的语法与&lt;jsp:include&gt;语法类似,只是完成的是无条件跳转功能。

<b>ForwardDemo01.jsp</b><b>:</b><b></b>

&lt;jsp:forward page="ForwardDemo02.jsp"/&gt;

<b>ForwardDemo02.jsp</b><b>:</b><b></b>

&lt;h1&gt;Hello World!!!&lt;/h1&gt;

       以上程序跳转之后,地址栏并没有任何的改变,但是显示的内容改变了,所以称此种跳转为<b>服务器端跳转</b>指令。

       使用forward指令也可以像include指令那样,直接向跳转的页面传递参数。参数同样是通过&lt;jsp:param&gt;进行设置的,接收参数的时候同样使用request.getParameter()接收。

<b>ForwardDemo03.jsp</b><b>:</b>

         String str = "WORLD" ;

&lt;jsp:forward page="ForwardDemo04.jsp"&gt;

         &lt;jsp:param name="ref1" value="HELLO"/&gt;

         &lt;jsp:param name="ref2" value="&lt;%=str%&gt;"/&gt;

&lt;/jsp:forward&gt;

<b>ForwardDemo04.jsp</b><b>:</b><b></b>

&lt;h1&gt;&lt;%=request.getParameter("ref1")%&gt;&lt;/h1&gt;

&lt;h1&gt;&lt;%=request.getParameter("ref2")%&gt;&lt;/h1&gt;

本文转自 李兴华 51CTO博客,原文链接:http://blog.51cto.com/lixinghua/101381,如需转载请自行联系原作者