如何使用 JSTL 对表示 URL 路径的字符串进行编码?

2024-01-08

使用 JSTL 对表示 URL 路径(而不是请求参数)的字符串进行 URL 编码的最佳方法是什么?

<c:url value="/user/${user.name}"/>

根据我找到的任何文档 http://www.ibm.com/developerworks/java/library/j-jstl0318/#N10532,这应该解决它。但事实并非如此。它对参数进行了精美的编码(<c:url value="/user/${user.name}"><c:param name="section" value="employment 4u so good"/></c:url>)但我没有传递任何参数。我怎样才能安全地编码一个简单的 URL,就像上面一样,而不用担心什么${user.name}可能?


The <c:url>不按照其值中指定的方式对 URI 进行编码,而只是对由嵌套指定的 URL 请求参数进行编码<c:param>。您链接的 IBM 文章也没有说明其他情况。我认为您将其与“URL 重写”混淆了(本质上无非是附加jsessionid必要时)。这<c:url>当 cookie 被禁用时,确实也会这样做。

为了实现您的要求,对路径参数进行 URI 编码,最好是创建一个自定义 EL 函数,该函数委托给URLEncoder#encode() http://docs.oracle.com/javase/8/docs/api/java/net/URLEncoder.html#encode-java.lang.String-java.lang.String-并改变结果以符合 URI 规则。

<a href="/user/${util:encodeURI(user.name)}">view profile</a>

with

public static String encodeURI(String value) throws UnsupportedEncodingException {
    return URLEncoder.encode(value, "UTF-8")
        .replace("+", "%20")
        .replace("%21", "!")
        .replace("%27", "'")
        .replace("%28", "(")
        .replace("%29", ")")
        .replace("%7E", "~");
}

在第二部分中这个答案 https://stackoverflow.com/questions/6395621/how-to-call-a-static-method-in-jsp-el/6396886#6396886您可以找到如何声明和注册自定义 EL 函数的基本启动示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JSTL 对表示 URL 路径的字符串进行编码? 的相关文章

  • 使用 Apache commons 文件上传 API 在 Jsp 中上传多个文件

    我无法上传多个文件 我正在使用此代码 这里 itr hasNext 返回 false 文件上传 jsp
  • 将jsp表导出到excel、word、pdf

    任何人都可以建议我任何库 jar 文件 我可以使用它们将我的表导出到 excel pdf word 请告诉我是否有任何可以在 jsp 中创建报告的库 还应该提到的是 您只需输出 HTML 表格并将响应类型设置为即可将表格导出到 Excela
  • 上的 EL 语法错误

    我正在尝试为链接创建一个条件 其中如果长度不 0 则显示描述 但我收到语法错误 代码是
  • Spring Security登录返回404

    我目前正在使用 Spring 框架开发我的博客 我正在实现 Spring Security 用于登录目的 一切都按预期进行 直到我提交始终返回 404 代码的登录凭据 这是我的 web xml 代码e
  • 如何在 Struts 2 中访问 OGNL 跟踪评估?

    有人告诉我要优化网络应用程序 为此 我使用JProfiler https www ej technologies com products jprofiler overview html 我注意到很大一部分响应时间都花在了表示层上 特别是当
  • 来自 jsp:include 的 JSF 1.2 自定义组件

    在开始回答我的问题之前 我先说一下我的不幸的局限性 我使用的是 JSF 1 2 而不是 2 所以没有复合组件 我使用 JSP 代替 Facelets 进行渲染 所以这些复合组件也没有 我不允许使用任何第三方标签库 richFaces ice
  • 如何防止 Firefox 缓存

    我尝试了很多可能的解决方案 但无法解决问题 这些不起作用 有人可以帮忙吗 我正在使用jsp servlet application 是websphere Portal 6 1 的一个portlet 切勿
  • JSP模板实现(复合视图模式)

    为 Java 网站实现复合视图模式的最佳方法是什么 我的想法是采用一个 jsp 并包含多个页面 例如 h1 Layout Start h1
  • JSTL 本地日期时间格式

    我想格式化我的 Java 8LocalDateTime对象在 年月日 模式 有没有可以格式化的库 我尝试了下面的代码 但出现了转换异常
  • 使用什么事件来在选择文本框中的值时显示警报消息

    我正在使用 jquery 的自动完成 api 来从数据库中获取名称 但是我想在从显示的文本框中选择名称时显示一条警报消息 我将显示一个图像以便更好地理解 当我输入 S 时 它将显示所有包含 S 的记录 所以问题是 如果我选择例如 Spars
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • 如何将spring服务自动装配到jsp中?

    正如标题中提到的 我需要在我的 page jsp 中自动装配服务 我知道不建议这样做
  • 如何在我的网站上获取用户的国旗

    我想在我的网站上显示用户 访问者的国旗 我使用不同的技术 如 php jsp 和简单的 html 所以我想要一个代码 通过放置在我的网站上 访问者可以看到它 并且它应该在所有平台上运行 简而言之 我想要国家检测 API 如果有人能帮助我 我
  • 如何安装JSTL?绝对uri:http://java.sun.com/jsp/jstl/core无法解析[重复]

    这个问题在这里已经有答案了 这是我的 JSP 页面的 taglib 指令 我收到以下错误 HTTP Status 500 type Exception report message description The server encoun
  • 使用 Servlet 3.0 上传文件时 request.getParameter() 是否仍然有效?

    我刚刚读过这个很好的答案 https stackoverflow com questions 2422468 how to upload files in jsp servlet 2424824 2424824来自 BalusC 关于如何使
  • 在 Java Servlet 中上传文件

    我有一个 Java 动态 Web 项目 并且正在使用 TomCat v7 0 我是 Web 项目的新手 不太明白如何在我的 jsp 页面之一中上传文件 由于我的项目只是本地的 所以我认为我可以使用多部分形式 其中人们可以选择文件 并且这部分
  • 在 Portlet 环境中使用 jsp:param / c:param

    我正在尝试包含 JSP 页面jsp param在 Portlet 环境中 使用Pluto http portals apache org pluto Portlet 容器 例如
  • 在 JSTL 中使用枚举

    我正在尝试使用 jstl 进行一些网站开发 但遇到了 出现以下问题 这里我试图创建一个下拉列表 其中显示的值是 国家名称 值为国家代码 为了做到这一点我 在后端java代码中有以下枚举 public static enum CountryC
  • 字符串与长整型比较在 Tomcat 7 中抛出“ELException:无法转换”,在 Tomcat 6 中有效

    以下代码片段在 Tomcat 6 中运行良好
  • JSP中eq和==的区别

    JSP 表达式语言中关键字 eq 和运算符 之间有什么区别 如果有 在代码中 有什么区别

随机推荐