首页 > 代码库 > focusSNS学习笔记
focusSNS学习笔记
FocusSNS是一个社交类型的网站架构
系统的加载过程
所有的分发都从RouteController开始
1 @RequestMapping(value=http://www.mamicode.com/{"/", "/home"}, method=RequestMethod.GET)2 public String route0() {3 return "page:dashboards?path=/home";4 }
@RequestMapping(value=http://www.mamicode.com/{"/", "/home"}表示的是url路径,也就是一开始打开的主页(上面的图片)
返回的路径表示对应的文件路径
WEB-INF/pages/dashboards.xml
这个页面就是我们看到的主页的XML配置
1 <?xml version="1.0" encoding="UTF-8"?> 2 <pages> 3 <page parent="parent/global" path="/home"> 4 <placeholder name="mainColumn"> 5 <widget name="eventWidget" path="/calendar/event/upcoming-view" 6 cache="60"> 7 <title>即将到来的活动</title> 8 <prefs> 9 <limit>10</limit>10 <categoryCodes>people,groups</categoryCodes>11 </prefs>12 </widget>13 <widget name="topicWidget" path="/discussion/topic/recent-view">14 <title>最新讨论</title>15 <prefs>16 <limit>10</limit>17 <categoryCodes>people,groups</categoryCodes>18 </prefs>19 </widget>20 <widget name="postWidget" path="/blog/post/recent-view">21 <title>最新博文</title>22 <prefs>23 <limit>10</limit>24 <categoryCodes>people,groups</categoryCodes>25 </prefs>26 </widget>27 </placeholder>28 <placeholder name="rightColumn">29 <widget name="userWidget" path="/system/user/login-view">30 <title>登录</title>31 </widget>32 <widget name="activityWidget" path="/stream/activity/recent-view">33 <title>说了些什么...</title>34 <prefs>35 <limit>5</limit>36 <activityTypes>user-input</activityTypes>37 </prefs>38 </widget>39 <widget name="questionWidget" path="/knowledge/question/recent-view">40 <title>问了些什么...</title>41 <prefs>42 <limit>5</limit>43 <categoryCodes>people,groups</categoryCodes>44 </prefs>45 </widget>46 </placeholder>47 </page>48 49 <page parent="parent/global" path="/people">50 <placeholder name="leftColumn">51 <widget name="menuWidget" path="/system/menu/custom-menu">52 <prefs>53 <userRequired>true</userRequired>54 <items><![CDATA[55 ${base}/people/all=所有成员56 ]]></items>57 </prefs>58 </widget>59 <widget name="profileSearchWidget" path="/search/profile/form-view">60 <title>搜索</title>61 </widget>62 </placeholder>63 <placeholder name="mainColumn">64 <widget name="profileWidget" path="/profile/profile/list-view">65 <title>成员列表</title>66 <prefs>67 <categoryCode>people</categoryCode>68 </prefs>69 </widget>70 </placeholder>71 </page>72 73 <page parent="parent/global" path="/groups">74 <placeholder name="leftColumn">75 <widget name="menuWidget" path="/system/menu/custom-menu">76 <prefs>77 <userRequired>true</userRequired>78 <items><![CDATA[79 ${base}/groups/form=添加圈子80 ${base}/groups/all=所有圈子81 ]]></items>82 </prefs>83 </widget>84 <widget name="profileSearchWidget" path="/search/profile/form-view">85 <title>搜索</title>86 </widget>87 </placeholder>88 <placeholder name="mainColumn">89 <widget name="profileWidget" path="/profile/profile/list-view">90 <title>圈子列表</title>91 <prefs>92 <categoryCode>groups</categoryCode>93 </prefs>94 </widget>95 </placeholder>96 </page>97 </pages>
可以看下最新博文
1 <widget name="postWidget" path="/blog/post/recent-view">2 <title>最新博文</title>3 <prefs>4 <limit>10</limit>5 <categoryCodes>people,groups</categoryCodes>6 </prefs>7 </widget>
postWidget对应的类,
/blog/post/recent-view表示对应的url
这个是通过spring的注释标识的
1 @Widget 2 @RequestMapping("/blog/post") 3 public class PostWidget { 4 5 private LinkService linkService; 6 private PostService postService; 7 private StatisticService statisticService; 8 private CommentService commentService; 9 private PostCategoryService postCategoryService;10 11 .........12 @RequestMapping("/recent-view")13 public String doRecentView(Page<Post> page, 14 @PrefParam(required=false) String categoryCodes, @RequestAttr Project project, Model model) {15 page.setPageNo(1);16 page.desc("p.entered");17 if(StringUtils.isNotBlank(categoryCodes)) {18 List<String> codes = Arrays.asList(StringUtils.split(categoryCodes, ","));19 20 .........21 }
第二行的/blog/post和12行的/recent-view合起来就是XML中的path,
上面的函数返回值是一个字符串:
return "blog/post-recent";
这个字符串就是后面要加载的freemaker文件:WEB-INF/views/blog/post-recent.ftl
同样的,通过同样的方式加载其他的Widget,就可以拼成整个的页面。
focusSNS学习笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。