focusSNS學習筆記

FocusSNS是一個社交類型的網站架構spring

 

系統的加載過程架構

全部的分發都從RouteController開始app

1 @RequestMapping(value={"/", "/home"}, method=RequestMethod.GET)
2     public String route0() {
3         return "page:dashboards?path=/home";
4     }
@RequestMapping(value={"/", "/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>
View Code

能夠看下最新博文ide

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,函數

上面的函數返回值是一個字符串:post

return "blog/post-recent";這個字符串就是後面要加載的freemaker文件:WEB-INF/views/blog/post-recent.ftl一樣的,經過一樣的方式加載其餘的Widget,就能夠拼成整個的頁面。
相關文章
相關標籤/搜索