`
mzhj
  • 浏览: 223911 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jstl c:rul URL 操作 url重写

阅读更多

URL 操作

JSTL core 库中的其余标记主要是关于 URL。这些标记中的第一个被适当地命名为 <c:url> 标记,用于生成 URL。尤其是, <c:url> 提供了三个功能元素,它们在为 J2EE Web 应用程序构造 URL 时特别有用:

在前面附加当前 servlet 上下文的名称
为会话管理重写 URL
请求参数名称和值的 URL 编码
清单 12 显示了 <c:url> 标记的语法。 value 属性用来指定基本 URL,然后在必要时标记对其进行转换。如果这个基本 URL 以一个斜杠开始,那么会在它前面加上 servlet 的上下文名称。可以使用 context 属性提供显式的上下文名称。如果省略该属性,那么就使用当前 servlet 上下文的名称。这一点特别有用,因为 servlet 上下文名称是在部署期间而不是开发期间决定的。(如果这个基本 URL 不是以斜杠开始的,那么就认为它是一个相对 URL,这时就不必添加上下文名称。)


清单 12. <c:url> 操作的语法
<c:url value="
        expression" context="
        expression"
    var="
        name" scope="
        scope">
  <c:param name="
        expression" value="
        expression"/>
  ...
</c:url>

      


URL 重写是由 <c:url> 操作自动执行的。如果 JSP 容器检测到一个存储用户当前会话标识的 cookie,那么就不必进行重写。但是,如果不存在这样的 cookie,那么 <c:url> 生成的所有 URL 都会被重写以编码会话标识。注:如果在随后的请求中存在适当的 cookie,那么 <c:url> 将停止重写 URL 以包含该标识。

如果为 var 属性提供了一个值(还可以同时为 scope 属性提供一个相应的值,这是可选的),那么将生成的 URL 赋值给这个限定了作用域的指定变量。否则,将使用当前的 JspWriter 输出生成的 URL。这种直接输出其结果的能力允许 <c:url> 标记作为值出现,例如,作为 HTML <a> 标记的 href 属性的值,如清单 13 中所示。


清单 13. 生成 URL 作为 HTML 标记的属性值
<a href="<c:url value='/content/sitemap.jsp'/>">View sitemap</a>
 


最后,如果通过嵌套 <c:param> 标记指定了任何请求参数,那么将会使用 HTTP GET 请求的标准表示法将它们的名称和值添加到生成的 URL 后面。此外,还进行 URL 编码:为了生成有效的 URL,将对这些参数的名称或值中出现的任何字符适当地进行转换。清单 14 演示了 <c:url> 的这种行为。


清单 14. 生成带请求参数的 URL
<c:url value="/content/search.jsp">
  <c:param name="keyword" value="${searchTerm}"/>
  <c:param name="month" value="02/2003"/>
</c:url>
 


清单 14 中的 JSP 代码被部署到一个名为 blog 的 servlet 上下文,限定了作用域的变量 searchTerm 的值被设置为 "core library" 。如果检测到了会话 cookie,那么清单 14 生成的 URL 将类似于清单 15 中的 URL。注:在前面添加上下文名称,而在后面附加请求参数。此外, keyword 参数值中的空格和 month 参数值中的斜杠都被按照 HTTP GET 参数的需要进行了编码(确切地说,空格被转换成了 + ,而斜杠被转换成了 %2F 序列)。


清单 15. 有会话 cookie 时生成的 URL
/blog/content/search.jsp?keyword=foo+bar&month=02%2F2003
 


当没有会话 cookie 时,生成的结果如清单 16 中所示。同样,servlet 上下文被添加到了前面,而 URL 编码的请求参数被附加到了后面。不过,除此以外还重写了基本 URL 以包含指定的会话标识。当浏览器发送用这种方式重写的 URL 请求时,JSP 容器自动抽取会话标识,并将请求与相应的会话进行关联。这样,需要会话管理的 J2EE 应用程序就无需依赖由应用程序用户启用的 cookie 了。


清单 16. 没有会话 cookie 时生成的 URL
/blog/content/search.jsp;jsessionid=233379C7CD2D0ED2E9F3963906DB4290
  ?keyword=foo+bar&month=02%2F2003
 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jonathan_q_bo/archive/2006/01/03/569425.aspx

分享到:
评论

相关推荐

    JSTL 入门:表达式语言

    JSTL 入门:表达式语言  ——通过避免使用脚本编制元素来简化对 JSP 应用程序的软件维护

    JSTL中if标签使用方法

    &lt;c:if&gt; &lt;c:if&gt;的用途就和我们一般在程序中用的if一样。  语法  语法1:没有本体内容(body)  &lt;c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/&gt;  语法2:有本体内容  ...

    JSTL标准标签库 <C:out>、<c:set>、<c:remove>和<c:catch>标记 <c:if>、<c:choose>、<c:when>和<c:otherwise>标记 <c:forEach>和<c:forTokens>标记

    ◎ JSTL的基本概念、安装与配置...◎ JSTL的通用标记:&lt;c:out&gt;、&lt;c:set&gt;、&lt;c:remove&gt;和&lt;c:catch&gt;标记 ◎ 条件处理标记:&lt;c:if&gt;、&lt;c:choose&gt;、&lt;c:when&gt;和&lt;c:otherwise&gt;标记 ◎ 循环标记:&lt;c:forEach&gt;和&lt;c:forTokens&gt;标记

    javax.servlet.jsp.jstl-1.2.zip

    JSTL的jar包,源码和API,POM文件

    JSTL开发使用手册

    Jstl介绍?. Core标签库? 用于显示的?&lt;c:out&gt;?标签? 用于赋值的?&lt;c:set&gt;?标签? 用于删除的 &lt;c:remove&gt;?标签? 用于异常捕获的?&lt;c:catch&gt; 标签 用于判断的?&lt;c:if&gt; 标签 用于复杂判断的 &lt;c:choose&gt;?、 &lt;c:when&gt;?、...

    JSTL操作XML JSTL操作XML

    JSTL操作XML,通过具体的例子说明了如何通过JSTL操作XML的操作。

    core jstl:mastering the jsp standard tag library

    core jstl:mastering the jsp standard tag library 掌握jsp标准的标签库

    JSTL 以及自定义标签开发相关

    JSTL 以及自定义标签开发相关 JSTL 核心标签库标签共有13...4.URL操作标签:import、url、redirect 使用标签时,一定要在jsp文件头加入以下代码: &lt;%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt;

    jstl&standard

    jstl标签:jstl.jar 和 standard .jar

    JSTL标签大全

    核心标签库 http://java.sun.com/jstl/core c &lt;c:tagname…&gt; 国际化标签(I18N) http://java.sun.com/jstl/fmt fmt &lt;fmt:tagname…&gt; SQL标签库 ...

    <c:forEach>/jstl-1.2

    &lt;c:forEach&gt; 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行&lt;c:forEach&gt;的本体内容。 语法 语法1:迭代一集合对象之所有成员 &lt;c:forEach [var="varName...

    JSTL连接数据库的操作

    JSTL连接数据库的操作,通过具体的讲解详细说明了如何使用JSTL连接数据库的操作.

    jstl-api-1.2和jstl-impl-1.2

    jstl-api-1.2和jstl-impl-1.2,jstl-api-1.2和jstl-impl-1.2,jstl-api-1.2和jstl-impl-1.2,jstl-api-1.2和jstl-impl-1.2

    JSTL_fn标签 字符处理标签

    jstl 字符串处理函数 fn:length、fn:contains 、 fn:containsIgnoreCase 、 fn:endsWith 、 fn:escapeXml 、 fn:indexOf 、 fn:join 、 fn:replace 、 fn:split 、 fn:startsWith 、 fn:substring 、 fn:...

    JSTL函数JSTL函数

    JSTL函数JSTL函数JSTL函数JSTL函数JSTL函数JSTL函数JSTL函数JSTL函数

    jstl-1.2.1 jar

    jstl-1.2.1,之前的版本需要在服务器中配置一下,而且它分成了两个jar(jstl.jar和standard.jar)还有一个tld文件,而1.2已经不用配置了,直接把javax.servlet.jsp.jstl-1.2.1.jar和javax.servlet.jsp.jstl-api-1.2.1...

    JSTL标签JSTL标签

    JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签JSTL标签

Global site tag (gtag.js) - Google Analytics