2007-09-17
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的过程
以上流程见下图
liferay生成friendlyurl的过程
比如在我的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的过程
- 浏览器提交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
以上流程见下图
liferay生成friendlyurl的过程
- 页面获得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
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 70966 次

- 详细资料
搜索本博客
我的相册
generate friendlyurl
共 25 张
共 25 张
最新评论
-
Liferay 4.3 新功能介绍-- ...
这个我试了,很好用,可是是不是只能通过root.xml的配置共用一个数据库阿?怎 ...
-- by quickSand -
Liferay 4.3 与CAS集成配 ...
谁配成功了
-- by sun128837 -
Liferay 4.3 中 friendly ...
不错,受益匪浅。不过当用户的screenName是汉字时,FriendlyURL ...
-- by dins2003 -
Liferay中的第三方组件: ...
suyulin6688 写道不错。 不过有个问题, 假设我在“login.js ...
-- by hanfeng -
Howto: 如何使用Liferay ...
能不能写的简单明了一些啊? 我按照你写的一步步做下去,根本就不成功啊.
-- by liyx326






评论排行榜