关于JSTL的两个问题:

[复制链接]
查看11 | 回复0 | 2009-1-30 06:28:38 | 显示全部楼层 |阅读模式
1.对于一个绝对地址来说,用<c:out>得到和用<c:url>得到有什么区别?比如:<c:out value="http://www.sina.com" />和<c:url value="http://www.sina.com" />2.我觉得<c:param>这个标签根本没用!比如:<c:import url="http://java.sun.com" ><c:param name="test" value="1234" /></c:import>直接写成:<c:import url="http://java.sun.com?test=1234" />不就完了。再比如:<c:url value="http://www.javafan.net " ><c:param name="param" value="value"/></c:url>直接写成:<c:url value="http://www.javafan.net?param=value" />不就完了。大家帮我回答一下这两个问题,谢谢!

                                                                                                1.在这种条件下,没有区别,纯属看哪个顺眼用哪个.2.这个标签的用处还是很大的,比如你的<c:param>标签的value属性内容设置成一个EL表达式的话就可以自动挂可变参了,省得拼字符串麻烦.其实这个用法与java的SQL文的处理中preparedStatement类似,同样是挂参的方法,此外还有转译的功能.如果通过嵌套<c:param>标记指定了任何请求参数,那么将会使用HTTP GET请求的标准表示法将它们的名称和值添加到生成的 URL 后面。此外,还进行 URL 编码:为了生成有效的 URL,将对这些参数的名称或值中出现的任何字符适当地进行转换。如下例:生成带请求参数的 URL<c:url value="/content/search.jsp"><c:param name="keyword" value="${searchTerm}"/><c:param name="month" value="02/2003"/></c:url>其中的JSP代码被部署到一个名为blog的servlet上下文,限定了作用域的变量searchTerm的值被设置为"core library"。如果检测到了会话cookie,那么上面的代码生成的URL将类似于下面给出的URL。注:在前面添加上下文名称,而在后面附加请求参数。此外,keyword参数值中的空格和month参数值中的斜杠都被按照HTTP GET参数的需要进行了编码(确切地说,空格被转换成了+,而斜杠被转换成了%2F序列)。 有会话cookie时生成的URL/blog/content/search.jsp?keyword=foo+bar&month=02%2F2003 当没有会话cookie时,生成的结果如下面给出内容。同样,servlet 上下文被添加到了前面,而URL编码的请求参数被附加到了后面。不过,除此以外还重写了基本URL以包含指定的会话标识。当浏览器发送用这种方式重写的URL请求时,JSP 容器自动抽取会话标识,并将请求与相应的会话进行关联。这样,需要会话管理的J2EE应用程序就无需依赖由应用程序用户启用的cookie了。 没有会话cookie时生成的URL/blog/content/search.jsp;jsessionid=233379C7CD2D0ED2E9F3963906DB4290?keyword=foo+bar&month=02%2F2003这与直接拼写了QueryString还是不同的。                                       
提问者对答案的评价:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行