<c:url>标签
<c:url>标签的主要作用是按照特定的重写规则重新构造URL,它的基本语法为:
<c:url value="原始URL" var="存放新的URL的命名变量" scope="{page|request|session|application}" />
<c:url>标签把重新生成的URL存放在var属性指定的命名变量中,并且scope属性指定命名变量的范围,它的默认值为page(页面范围)。
例如以下<c:url>标签在页面范围内创建一个myurl命名变量,它的值为"dir2/target.jsp":
<c:url value="dir2/target.jsp" var="myurl" />
例如以下<c:url>标签中的value属性以"/"开头,<c:url>标签会在重新生成的URL中加上当前Web应用的根路径,因此myurl命名变量的值为"/helloapp/dir1/dir2/ target.jsp":
<c:url value="/dir1/dir2/target.jsp" var="myurl" /> <a href="${myurl}" >target.jsp </a>
在<c:url>标签中可以包含<c:param>子标签,用于设定请求参数,例如以下<c:url>标签包含两个<c:param>子标签,它们分别用于设定username请求参数和description请求参数:
<c:url value="/dir1/dir2/target.jsp" var="myurl" > <c:param name="username" value="Tom" /> <c:param name="description" value="Age>10&Age<30" /> </c:url> <a href="${myurl}" >target.jsp </a>
<c:param>标签会对value属性中的特殊符号(如">"和"&")进行正确地编码。以上<a>标记生成的代码为:
<a href="/helloapp/dir1/dir2/target.jsp?username=Tom&description= Age%3e10%26Age%3c30"> target.jsp </a>
从以上代码可以看出,description参数值中的">"符号被编码为"%3e","&"符号被编码为"%26","<"符号被编码为"%3c"。
<c:param>标签的name属性设定请求参数名,value属性设定请求参数值,此外,也可以在标签主体内设定请求参数值。例如以下<c:param>标签主体判断username命名变量是否为"Tom",如果满足条件,就把role请求参数设为"Manager";如果username命名变量为空或者不是"Tom",就把role请求参数设为"Employee":
<c:url value="/dir1/dir2/target.jsp" var="myurl" > <c:param name="role"> <c:if test="${username=='Tom'}"> Manager </c:if> <c:if test="${empty username || ! username=='Tom'}"> Employee </c:if> </c:param> </c:url> <a href="${myurl}" >target.jsp </a>
如果username命名变量为空,那么以上<a>标记生成的代码为:
<a href="/helloapp/dir1/dir2/target.jsp?role=Employee" >target.jsp </a>
来源:https://blog.csdn.net/home_zhang/article/details/8500708