<c:import>标签说明

一、关于<c:import>标签的字符编码问题:
<c:import>标签是可以把其他静态(HTML,txt文件等)或是动态(JSP,PHP文件等)文件的内容包含到本身的JSP网页中,除了能够包含和自己在同一个web application下的文件外,还可以包含不在同一 Web application或者再其他网站的文件.这一切都是由url属性指定.
当通过这个标签导入外部文件的内容时,若文件中含有中文字符,记得要指定被包含文件的编码格式,否则会出现乱码,有几种情况:
--------------------------------------------------------------------------------------------------
1.当将txt文件包含进JSP文件的时候,如果其中含有中文字符,charEncoding属性值一定要是utf-8,若是gb2312,也会出现乱码
这是指定为gb2312的结果:
【原】<c:import>标签说明
这是指定utf-8的结果:
【原】<c:import>标签说明
---------------------------------------------------------------------------------------------------
2.当将HTML文件包含进JSP文件中时候,如果其中含有中文字符,charEncoding指定的字符集要与HTML中<meta>标签中指定的字符集要一致,否则也会出现乱码:
     1>JSP charEncoding=utf-8   &    HTML    <meta> gb2312
【原】<c:import>标签说明

   2>JSP charEncoding=gb2312   &    HTML    <meta>  utf-8
【原】<c:import>标签说明
这两种乱码格式还不一样.
---------------------------------------------------------------------------------------------------
3.当将另一个JSP文件包含进JSP文件中的时候,当另一个JSP文件中的<%@page%>指令元素中指定的pageEncoding字符集与目标JSP文件中的<c:import>标签charEncoding字符集不一样时候,这个时候是不会出现中文乱码的:
     1>另一个JSP   <%@ page pageEncoding="utf-8"%>    &   目标JSP <c:import charEncoding="gb2312">
【原】<c:import>标签说明
     2>另一个JSP   <%@ page pageEncoding="gb2312"%>    &   目标JSP <c:import charEncoding="utf-8">
【原】<c:import>标签说明
这个很奇怪,求高手赐教.

另外,被导入的静态或是动态文件 JSP文件 或HTML文件,一般都要求是完整格式的代码,这样包含JSP文件才能产生正确的输出,例如一个JSP文件包含另一个JSP文件:
包含JSP文件代码:
【原】<c:import>标签说明
被包含JSP文件代码:
【原】<c:import>标签说明
代码执行结果为:
【原】<c:import>标签说明
如果被包含JSP文件仅仅是代码片段的话,如下:
【原】<c:import>标签说明
则执行结果如下,这里不会产生循环输出10个整数的:
【原】<c:import>标签说明
总结:注意以后导入指定的文件的时候,这个文件中要尽量包含完整的代码,不要只写入需要执行的功能代码片段,否则很容易得不到输出结果.

二、有关<c:import>标签的var属性存储问题:
通过<c:import>标签的var和scope属性可以将url属性所对应的页面内容以String的类型存储至varName中,但此时这个页面并不会输出到主包含文件的页面中.
存储之后的数据,在需要的时候可以将它通过EL表达式将其取出.
这里我发现一个问题,在这里取出被包含页面中的内容的时候一定要注意只能直接使用EL表达式取出,而不能使用<c:out>标签取出,因为被包含页面的内容都是以String类型存储于var变量中的,所以在输出的时候通过<c:out>会以String类型输出至主包含页面之中.具体表现如下:
【原】<c:import>标签说明
看到上面的主包含页面中都是字符串的集合,这里就是HTML代码,这个是通过
<c:out value="${sessionScope['s']}"/> 输出到页面中的,
下图是百度主页.
【原】<c:import>标签说明
但是仅仅通过EL表达式输出存储在var属性所指属性名中的内容则会将页面原本的内容输出至主包含页面中.
${sessionScope['s']}
【原】<c:import>标签说明
至于原因,不知道是不是因为编码解码的原因.

三、<c:import>标签+var属性+<c:param>标签 三者组合使用
在使用var属性对被包含页面内容进行存储的时候,同时可以加入<c:param>标签,这样可以将用户参数传递给被包含页面进行处理,然后将处理结果页面内容以String类型形式存储至var所对应的属性值中.
同样,可以单纯的通过EL表达式将var所存储属性中的页面内容原模原样的输出到主包含页面之中:
例如:
【原】<c:import>标签说明

在主包含页面中的显示如下图:
【原】<c:import>标签说明

这个就是在我编写的主包含页面中显示的结果,就相当于使用"java"关键字进行搜索的结果一样.请注意地址栏中的内容是本机地址,而不是百度首页地址.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值