Liferay 4.3 中 friendly url的生成和解析过程

friendly url是liferay的一个功能.在liferay里,可以将portal系统生成的复杂的url转换成好记的url.
比如在我的liferay 4.3.1环境下
http://localhost:8080/c/portal/layout?p_l_id=10125&_19_messageId=10505&p_p_id=19&p_p_state=maximized&p_p_action=0&_19_struts_action=%2Fmessage_boards%2Fview_message

http://localhost:8080/web/26/1/message_boards/message/10505
是同一个页面.

程序是如何将原来复杂的url转换成那么简单的friendly url的,当程序要处理friendly url时,又是如何处理的呢?

具体的调试跟踪过程不再赘述,这是一个有趣而痛苦的过程,这里我只列出最后的调试结果

liferay解析friendlyurl的过程
[list=1]
[*]浏览器提交friendlyurl
[*]FriendlyURLServlet.service处理
[*]调用getRedirect
从url里能够截取 groupid,layoutid (url中的/26/1)
[*]调用PortalUtil.getLayoutActualURL
[*]从liferay-portlet.xml中查询friendly url mapper
[*]根据mapper的getMapping方法和url中截取的相匹配,查到对应的mapper(url中的message_boards)
[*]调用mapper的populateParams,将friendly url转换为参数对(message_boards/message/10505->_19_messageId=10505; _19_struts_action=%2Fmessage_boards%2Fview_message)
[*]从前面查出的groupid,layoutid,查询出plid (/web/26/1->p_l_id=10125)
[*]补充其余的参数(p_p_action,p_p_state)
[*]返回原始的url给FriendlyURLServlet
[*]forward该url[/list]
接下去和以前版本一样,由MainServlet处理
以上流程见下图
[img]http://pikachu.iteye.com/upload/picture/pic/5258/f4500346-bff5-42b4-9ffd-ae8f456376f3.png[/img]

liferay生成friendlyurl的过程
[list=1]
[*]页面获得PortletURL实例(renderResponse.createActionURL() renderResponse.createRenderURL())

[*]PortletURLImpl.generateToString()
[*]PortalUtil.getLayoutFriendlyURL 构造出groupid和layoutid样式的url
[*]调用getPortletFriendlyURLPath
[*]从_portlet.getFriendlyURLMapper()查询mapper
[*]如果由mapper,那么调用mapper.buildPath,mapper会将原先的parameter转换成friendlyurl
[*]将页面url和protleturl合并,在页面上显示最终的friendlyurl[/list]
以上流程见下图
[img]http://pikachu.iteye.com/upload/picture/pic/5259/b10d1291-74db-4437-a62c-f8ad5142e697.png[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值