JSTL Core:<c:import>

来源:互联网 发布:知乎 好听到爆的歌曲 编辑:程序博客网 时间:2024/06/08 17:21

eclipse下使用JSTL<c:import>。

<c:import>与<jsp:include>指令作用类似,包含<jsp:include>所提供的所有功能,除此之外还可以访问其他Web资源或者网络资源。


1.<c:import>所具有的属性。

<c:import>标签具有以下属性:

属性描述必须默认urlURL to retrieve and import into the pageYesNonecontext/ followed by the name of a local web applicationNoCurrent applicationcharEncodingCharacter set to use for imported dataNoISO-8859-1varName of the variable to store imported textNoPrint to pagescopeScope of the variable used to store imported textNoPagevarReaderName of an alternate variable to expose java.io.ReaderNoNone

<c:import>标签有如下属性:

属性描述是否必要默认值url待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源是无context当使用相对路径访问外部context资源时,context指定了这个资源的名字。否当前应用程序charEncoding所引入的数据的字符编码集否ISO-8859-1var用于存储所引入的文本的变量否无scopevar属性的作用域否pagevarReader可选的用于提供java.io.Reader对象的变量否无


2.访问当前Web应用的其他文件。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
首先引用该标签库,需要jstl.jar和standard,jar包。将其放入对应工程的WEB-INF目录下的lib目录下。



在这个工程下共有三个文件,在此只用到Hello.jsp和NewFile1.jsp文件。


Hello.jsp其中只用来显示Hello World!用于测试是否导入成功。

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>Hello World!</body></html>

NewFile1.jsp中使用<c:import>来导入Hello.jsp。

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><c:import url="Hello.jsp" /></body></html>

运行结果:



运行NewFile1.jsp 将Hello.jsp 导入其中。


2.包含其他Web资源或者网站资源。


1》网站资源。

在此直接引入百度的链接进行测试。

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><c:import url="http://www.baidu.com" /></body></html>


运行结果:



可以看到运行成功,打开NewFile1.jsp 显示的是BD的主页。

但是可以看到图中的文字出现乱码,此时可以用其中的charEncoding属性进行设置即可。

将其中<c:import>代码改为即可:

<c:import url="http://www.baidu.com" charEncoding="UTF-8"/>

2》其他Web资源。

在同一个eclipse工作目录下有多个Web工程。



在此测试访问MyJavaWebApp下的Hello.jsp文件。

Hello.jsp中提示Hello World In MyJavaWebApp。



修改JSTLCore中NewFile1.jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><c:import url="/Hello.jsp" context="/MyJavaWebApp" /></body></html>

这里使用到了context属性,用来指定访问Web的根目录,url改为要访问的资源名。

同时需要在JSTLCore中的META-INF中设置context.xml文件,没有该文件的话需要创建并修改为:

<Context reloadable="true" crossContext="true" />

然后运行NewFile1.jsp



可以看到将MyJavaWebApp中的Hello包含进来了。


3.var、scope属性。

上述已经使用了url、context、charEncoding属性,还有var、scope和varReader属性,但是varReader属性用法不太清楚。

var:

以包含当前Web其他文件为例。

如果将NewFile1.jsp中的代码修改为:

<c:import url="Hello.jsp" var="hello"/>

运行后,运行后将不会显示任何东西,因为此时我们是将Hello.jsp文件导入进来了,但是将其保存到var的hello变量中了,所以我们需要使用该变量才可以。

使用EL表达式:

${hello} 

使用java代码:

<%Object hello = pageContext.getAttribute("hello");out.print(hello);%>


都可以将其输出。


scope:

如果使用var属性的话,将该属性默认保存到page范围内的。

如果将其<c:import>改为:

<c:import url="Hello.jsp" var="hello" scope="session"/>

并且使用java代码将其输出的话。

此时全部的NewFile1.jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><c:import url="Hello.jsp" var="hello" scope="session"/><!-- 将scope设置为session范围 --><%Object hello = pageContext.getAttribute("hello");//此时读取的是page范围内的属性out.print(hello);%></body></html>

运行的话会发现输出的是null。


因为此时的var属性保存的为session范围内的。

所以使用pageContext是获取不到这个属性的。

可以将获取的java代码修改为:

<c:import url="Hello.jsp" var="hello" scope="session"/><%Object hello = session.getAttribute("hello");//修改过的,此时读取的是session范围内的属性out.print(hello);%>

运行之后成功输出想要的结果。



如果是包含其他Web的资源或者网络资源的话使用方法也是如此。

0 0