Java JSP 2.0 SEO友好链接编码

Java JSP 2.0 SEO友好链接编码,java,jsp,seo,el,url-encoding,Java,Jsp,Seo,El,Url Encoding,目前,我的JSP中有类似的内容 <c:url value="/teams/${contact.id}/${contact.name}" /> 我的URL的重要部分是ID,我只是为了SEO的目的把名字放在上面(就像stackoverflow.com一样) 我只是想知道是否有一种快速而干净的方法来编码名称(更改空格per+、删除拉丁字符等)。我希望它是这样的: <c:url value="/teams/${contact.id}/${supercool(contact.nam

目前,我的JSP中有类似的内容

<c:url value="/teams/${contact.id}/${contact.name}" />

我的URL的重要部分是ID,我只是为了SEO的目的把名字放在上面(就像stackoverflow.com一样)

我只是想知道是否有一种快速而干净的方法来编码名称(更改空格per+、删除拉丁字符等)。我希望它是这样的:

<c:url value="/teams/${contact.id}/${supercool(contact.name)}" />


有这样的功能吗?或者我应该自己开发吗?

中没有类似的功能。您需要创建自己的。顺便说一下,我宁愿用
-
代替空格

至此,您需要执行以下步骤:

  • 将字符串小写

    string = string.toLowerCase();
    
  • 规范化所有字符并删除所有字符

  • 将所有剩余的非字母数字字符替换为
    -
    ,必要时折叠

    string = string.replaceAll("[^\\p{Alnum}]+", "-");
    
  • 您可以将其包装在EL函数中:

    package.com.example;
    导入java.text.Normalizer;
    导入java.text.Normalizer.Form;
    公共最终类函数{
    私有函数(){}
    公共静态字符串prettyURL(字符串){
    返回Normalizer.normalize(string.toLowerCase(),Form.NFD)
    .replaceAll(“\\p{InCombiningDiacriticalMarks}+”,“”)
    .replaceAll(“[^\\p{Alnum}]+”,“-”;
    }
    }
    
    您可以在
    /WEB-INF/functions.tld
    中注册它,如下所示:

    
    自定义函数
    1
    http://example.com/functions
    美丽的URL
    com.example.Functions
    java.lang.String prettyURL(java.lang.String)
    
    您可以在JSP中使用它,如下所示:

    
    ...
    
    查找server.urlencode,现在所有主要的服务器端语言都有它们。

    这仅适用。这并不是他真正想要的。否则的话,这确实是一个非常直截了当的答案:)顺便说一下,它被称为
    java.net.URLEncoder
    。不是
    server.urlencode
    或类似于C语言的东西。顺便问一下,有没有关于使用-而不是+来表示空格的文档?没有,其他人这样做了:)在我更新后的一段时间内进行了否决。首选
    -
    的原因是
    +
    实际上是空间的“URL安全”字符,不用于SEO目的。看看Stackoverflow和其他主要网站是如何做到这一点的。
    string = string.replaceAll("[^\\p{Alnum}]+", "-");