如何在 jsf 中创建用户友好和 seo 友好的 url?

Posted

技术标签:

【中文标题】如何在 jsf 中创建用户友好和 seo 友好的 url?【英文标题】:How to create user-friendly and seo-friendly urls in jsf? 【发布时间】:2010-12-27 15:06:05 【问题描述】:

例如,我有一个带有方法getTitle ()getContent () 的文章类。

我也有带有方法getAllArticles () 的ArticlesService。如何创建具有有意义名称的链接列表(由#article.title 组成)?喜欢:

http://mysiteaddress.com/article/first-article-title
http://mysiteaddress.com/article/how-to-make-links-in-jsf

..或类似的东西。

我可以使用 <h:commandLink> 创建具有所有必要功能的链接,但我不知道如何为它制作漂亮的“href”:它总是有 href '#'。

我可以使用<h:outputLink> 创建漂亮的链接,但我不知道如何为其添加必要的功能。


在 jsp 中,我创建了自己的前端控制器,它从请求中解析 url,然后重定向到对应的 jsp 页面。

如何在 JSF 中实现同样的功能?

【问题讨论】:

【参考方案1】:

如果这是为了改进现有应用程序,那么您基本上需要一个Filter 来检测“脏”和“友好”URL。当它检测到“脏” URL 时,它应该将请求重定向HttpServletResponse#sendRedirect() 的“友好” URL。当它检测到“友好”URL 时,它应该将请求转发RequestDispatcher#forward() 的“脏”URL。可以在这个相关问题中找到一个示例:How to use a servlet filter in Java to change an incoming servlet request url?

此外,您还需要自定义 ViewHandler 来为 JSF <h:form><h:link> 等生成所需的“友好”URL。可以在此处找到示例:Dynamic Directory in Java EE Web Application。

如果这是一个新应用程序或一个可以更改的应用程序,您可以考虑使用任何现有的漂亮 URL 库,而不是重新发明***:

PrettyFaces,这是一个完整的 URL 重写解决方案。它需要一个额外的 XML 配置文件pretty-config.xml。如果您想要完全更改 URL 和/或想要配置从旧 URL 到新 URL 的重定向,此库非常有用。 FacesViews 的 OmniFaces 库,它通过单个 web.xml 上下文参数使现有 URL 无扩展。它还支持“MultiViews”,路径参数可以声明式地注入托管 bean。例如。 /foo/bar/baz 可以指向/foo.xhtmlbarbaz 的值可以由@Param(pathIndex) 注入。

还有Mojarra Scales 库的实验性PrettyUrlPhaseListener,但它是一个旧库,PrettyFaces 主要基于它,所以不值得努力。

【讨论】:

如果我没有物理上的友好网址怎么办。我的所有帖子都存在于数据库中,例如 ***。那么如何在JSF中创建url。 使用漂亮面孔时的性能和往返行程如何? @pipalia 测量是知道的。 @BalusC 只是问一下,因为我们完全抛弃 JSF 是因为这种刚性架构的性能和其他众所周知的问题。【参考方案2】:

你试过PrettyFaces吗?

简单、有效、书签、JSF

PrettyFaces 是 JSF1.2 和 JSF2.0 的开源扩展,它支持创建可书签的漂亮 URL。 PrettyFaces 优雅地解决了这个问题,包括以下功能:页面加载操作、与面部导航的无缝集成、动态 view-id 分配、托管参数解析以及与其他 JSF 框架的无配置兼容性。

SEO 和一致性:

任何企业都知道搜索引擎优化对销售的重要性。 PrettyFaces 允许 SEO 友好的 URL,并改善了客户体验。从地址栏到购买按钮,为您的网站提供统一、易于理解的感觉。

【讨论】:

我试过了,但对我没有用...我在 NetBeans 7.3 中创建了一个新项目,然后将 PF 3.3.3 jar 文件添加到库中,然后编辑 web.xml 并添加 PF xml (config) 以及...但仅适用于 PF 配置的映射 没关系,我现在使用OmniFaces(有类似问题),但我通过将阶段从Development更改为Production解决了

以上是关于如何在 jsf 中创建用户友好和 seo 友好的 url?的主要内容,如果未能解决你的问题,请参考以下文章

如何在php中创建seo友好的URL

如何在OpenCart中创建自定义SEO友好的URL?

使用 .htaccess 在 php 中创建友好的 URL [重复]

如何在 DotNetNuke 中创建具有自定义页面名称的友好 URL?

是否可以在经典 asp 中进行友好的 url(url 重写)?

在 Xampp 中创建友好的 URL