tutorialpoint有一个简单的 c:url
如下所示的标记:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:url> Tag Example</title>
</head>
<body>
<a href="<c:url value="/jsp/index.htm"/>">TEST</a>
</body>
</html>
当使用chrome的开发者工具查看相应的渲染时,它呈现如下:
<a href="/jsp/index.htm">TEST</a>
所以 c:url
标签似乎多余,但我肯定我遗漏了什么?
3条答案
按热度按时间fgw7neuy1#
下面是我使用的培训应用程序的一个小片段
<c:url>
标签:当然,在这种情况下,我可以使用下面的链接,它将是相同的:
简而言之,
<c:url>
创建一个普通链接,可以将其存储在变量中并定义其范围。与<c:param>
可以为链接设置参数的标记。此外,有些人可能会说,使用jstl看起来更整洁。而且,正如之前所说,
<c:url>
已经有应用程序的上下文路径。例如,你可以这样做<link rel="stylesheet" href="<c:url value="/resources/css/test.css"/>" />
而不是那样<link rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/test.css" />
erhoui1w2#
正如教程所说,它是为了格式化您输入的url,并且可以存储在一个变量中。
例如:
如果单击“测试”,它将转到第页
test.html
. 就这么简单。但问题是,什么是价值<c:url value="/test.html"/>
?你认为价值只是
/test.html
?试着测试一下,像这样:
答案将是项目的上下文文件夹加上您输入的url。
context/test.html将是输出。
我认为它的目的是
context
(当前应用)已提供给URL
,只需添加剩余的URL
部分。6psbrbz93#
除了在其他答案中已经提到的目的之外,还有一个
c:url
标记是重写从jsp页面返回的url。例如会话跟踪。如果用户代理不支持(或已禁用)cookies,jsessionid将附加到url。只有当cookies被禁用时,标签才会在url中包含会话id;否则,它将返回不变的url。
请参见:https://docs.oracle.com/javaee/5/tutorial/doc/bnakh.html#bnakn