如何在 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.xhtml
,bar
和baz
的值可以由@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?的主要内容,如果未能解决你的问题,请参考以下文章
使用 .htaccess 在 php 中创建友好的 URL [重复]
如何在 DotNetNuke 中创建具有自定义页面名称的友好 URL?