一:URL操作
JSTL包含三个与URL操作有关的标签,分别是
<c:import>:用来将其它文件的内容包含起来
<c:redirect>:页面导航
<c:rul>:URL产生
二:<c:import />
此标签可以把其它静态或动态文件包含至本身Jsp网页,它和<jsp:include>最大的区别在于:<jsp:include>只能包含和自己同一个WEB工程下的文件,而<c:import>除了能包含和自己同一个WEB工程下的文件外,还可以包含不同WEB工程或者是其它网站的网站。
属性:url:被包含文件的地址
context:同一容器下,其它WEB工程的上下文,即其它工程的目录名称。
var:将包含文件的内容以字符串的形式存储在此变量中。
scope:范围
charEncoding:编码
varReader:将包含文件的内容以字符流的形式存储在此变量中。
示例1:
<c:import url="http://www.hao123.com/indexk.html" />经试验以后,可以看到,虽然可以引入进来,但是编码格式全错位了,建议大家不要引入网上或者其它WEB工程的页面,因为样式表,js等等文件不能引用进来,除非它的css,js文件是以绝对定位的方式引用的,即向下面的方式:
<link rel="stylesheet" type="text/css" href="http://localhost:8080/liaoliao/css/myindex.css" />
<script type="text/javascript" src="http://localhost:8080/liaoliao/script/my.js"></script>
示例2:
<c:import url="a.jsp" />可以看到这里引入同一工程下的页面后,什么都很正常,但是请看页面显示的源码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
这里是A.JSP页面,
<br />
<hr />
</body>
</html>
</body>
</html>
这时,可以看到生成的页面代码不是我们想要的页面,那么这时就需要改进A.JSP页面的代码,如下
//a.jsp页面
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
这里是A.JSP页面,
<br />
<hr />
再看看生成的页面代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
这里是A.JSP页面,
<br />
<hr />
</body>
</html>
可以看到,被包含页面只需要有用的代码就行了,不需要以正规的HTML代码来写.
三:<c:rul>
value: url地址
context: 相同容器下的其它WEB工程目录
var: 被包含文件地址的内容存放到指定的变量中
scope :var定义变量所存储的范围
示例1:
<a href="<c:url value="http://www.baidu.com" />">百度</a>
生成的代码: <a href="http://www.baidu.com">百度</a>
示例2:
<a href="<c:url value="http://www.baidu.com">
<c:param name="uname" value="admin"/>
</c:url>">百度</a>
生成的代码:<a href="http://www.baidu.com?uname=admin">百度</a>
四:<c:redirect>
<c:redirecdt>是服务器外部跳转
url 跳转的页面地址
context 同一容器下,其它WEB工程目录
示例1:
<c:redirect url="http://www.hao123.com/indexk.html"/>
相当于JSP中的:response.sendRedirect()
相当于JS中的window.location=” http://www.hao123.com/indexk.html”
示例2:
<c:redirect url="a.jsp">
<c:param name="uname" value="admin" />
</c:redirect>
可以看到地址栏生成的代码为:http://localhost:8080/jstldemo/a.jsp?uname=admin
示例3:
<c:redirect url="http://www.baidu.com/">
<c:param name="uname" value="admin" />
</c:redirect>
可以看到地址栏生成的代码为:http://www.baidu.com/?uname=admin
这里生成的地址是错误的地址,是不可执行的哦