posts - 0,  comments - 1,  trackbacks - 0
一、Struts 与 Velocity 的集成
  1. 把 Velocity JAR 放在类路径中。
  2. 修改 web.xml 文件让它识别 Velocity servlet。
  3. 把 Velocity toolbox.xml 放在应用程序的 WEB-INF 目录下。
  4. 修改 struts-config,把它的视图指向 Velocity 模板而不是 JSP。
  5. 为每个需要显示的页面创建 Velocity 模板。

第 1 步:把 Velocity JAR 放在 WEB-INF/lib 下

将需要的JAR放在 WEB-INF\lib 下面即可。

第 2 步:修改 web.xml,识别 Velocity 的 servlet

修改 Struts 的 web.xml 文件,让它识别 Velocity 的 servlet 并把所有以 .vm 结尾的资源请求定向到 DLOG_VelocityServlet,如清单 1 所示。

1. 修改 web.xml,声明 Velocity servlet

 1<servlet>
 2        <servlet-name>DLOG_VelocityServlet</servlet-name>1
 3        <servlet-class>com.liusoft.dlog4j.servlet.DLOG_VelocityServlet</servlet-class>2
 4        <init-param>
 5            <param-name>org.apache.velocity.toolbox</param-name>
 6            <param-value>/WEB-INF/conf/velocity-toolbox.xml</param-value>
 7        </init-param>3
 8        <init-param>
 9            <param-name>org.apache.velocity.properties</param-name>
10            <param-value>/WEB-INF/conf/velocity.properties</param-value>
11        </init-param>4
12        <init-param>
13            <param-name>encoding</param-name>
14            <param-value>UTF-8</param-value>
15        </init-param>
16        <load-on-startup>4</load-on-startup>5
17    </servlet>
18<servlet-mapping>
19        <servlet-name>DLOG_VelocityServlet</servlet-name>
20        <url-pattern>*.vm</url-pattern>
21    </servlet-mapping>6

 

  • (1)声明了 Velocity servlet 并给了它一个 velocity 句柄。
  • (2)声明了 Velocity servlet 的类名。 Velocity servlet 接受“toolbox”参数。toolbox 是声明应用程序的可用工具的位置。
  • (3)告诉 VelocityServlet 在哪里可以找到 toolbox 的配置。
  • (4)告诉 VelocityServlet 在哪里可以找到 velocity.properties的配置。
  • (5)设置了 load-on-startup 标记,确保在正确的时间装入 Velocity servlet。任何大于或等于 0 的值都会迫使容器通过调用 servlet 的 init() 方法来装入它。放在 load-on-startup 标记体中的值决定了不同的 servlet 的 init 方法调用的次序。例如,0 在 1 之前调用,而 1 在 2 之前调用。缺少的标记或负值允许 servlet 容器根据自己的选择装入 servlet。
  • (5)声明了 servlet 映射,强迫所有用 .vm 结尾的资源请求定向到 Velocity servlet。

注意(5)中的<servlet-name> 必须与(1)中的<servlet-name> 匹配。交错的声明和映射会在日志中生成错误。

第 3 步:把 toolbox.xml 放在 WEB-INF 下
dlog4j系统在WEB-INF\conf\velocity-toolbox.xml是dlog4j自己构建的工具。如下:
  1<?xml version="1.0" encoding="UTF-8"?>
  2
  3<toolbox>
  4
  5  <tool>
  6     <key>dlog</key>
  7     <scope>request</scope>
  8     <class>com.liusoft.dlog4j.velocity.DLOG_VelocityTool</class>
  9     <parameter name="saveRefer" value="true"/>
 10  </tool>
 11    
 12  <tool>
 13     <key>html</key>
 14     <scope>request</scope>
 15     <class>com.liusoft.dlog4j.velocity.HtmlVelocityTool</class>
 16  </tool>
 17    
 18  <tool>
 19     <key>snoop</key>
 20     <scope>application</scope>
 21     <class>com.liusoft.dlog4j.velocity.DLOG_Snoop_VelocityTool</class>
 22  </tool>
 23    
 24  <tool>
 25     <key>COMMENT_tool</key>
 26     <scope>application</scope>
 27     <class>com.liusoft.dlog4j.velocity.DLOG_Comment_VelocityTool</class>
 28  </tool>
 29    
 30  <tool>
 31     <key>TYPE_tool</key>
 32     <scope>application</scope>
 33     <class>com.liusoft.dlog4j.velocity.DLOG_Type_VelocityTool</class>
 34  </tool>
 35    
 36  <tool>
 37     <key>USER_tool</key>
 38     <scope>application</scope>
 39     <class>com.liusoft.dlog4j.velocity.DLOG_User_VelocityTool</class>
 40  </tool>
 41    
 42  <tool>
 43     <key>STAT_tool</key>
 44     <scope>application</scope>
 45     <class>com.liusoft.dlog4j.velocity.DLOG_Stat_VelocityTool</class>
 46  </tool>
 47    
 48  <tool>
 49     <key>TAG_tool</key>
 50     <scope>application</scope>
 51     <class>com.liusoft.dlog4j.velocity.DLOG_Tag_VelocityTool</class>
 52  </tool>
 53    
 54  <tool>
 55     <key>SEARCH_tool</key>
 56     <scope>application</scope>
 57     <class>com.liusoft.dlog4j.velocity.DLOG_Search_VelocityTool</class>
 58  </tool>
 59    
 60  <tool>
 61     <key>DIARY_tool</key>
 62     <scope>application</scope>
 63     <class>com.liusoft.dlog4j.velocity.DLOG_Diary_VelocityTool</class>
 64  </tool>
 65    
 66  <tool>
 67     <key>BBS_tool</key>
 68     <scope>application</scope>
 69     <class>com.liusoft.dlog4j.velocity.DLOG_BBS_VelocityTool</class>
 70  </tool>
 71    
 72  <tool>
 73     <key>MUSIC_tool</key>
 74     <scope>application</scope>
 75     <class>com.liusoft.dlog4j.velocity.DLOG_Music_VelocityTool</class>
 76  </tool>
 77    
 78  <tool>
 79     <key>PHOTO_tool</key>
 80     <scope>request</scope>
 81     <class>com.liusoft.dlog4j.velocity.DLOG_Photo_VelocityTool</class>
 82  </tool>
 83    
 84  <tool>
 85     <key>text</key>
 86     <scope>request</scope>
 87     <class>com.liusoft.dlog4j.velocity.VelocityTextTool</class>
 88  </tool>
 89  
 90  <tool>
 91    <key>date</key>
 92    <scope>application</scope>
 93    <class>org.apache.velocity.tools.generic.DateTool</class>
 94  </tool>
 95    
 96  <tool>      
 97    <key>escape</key>
 98    <scope>application</scope>
 99    <class>org.apache.velocity.tools.generic.EscapeTool</class>
100  </tool>
101    
102  <!--
103  <tool>
104    <key>list</key>
105    <scope>application</scope>
106    <class>org.apache.velocity.tools.generic.ListTool</class>
107  </tool>
108  -->
109  <tool>
110     <key>math</key>
111     <scope>application</scope>
112     <class>org.apache.velocity.tools.generic.MathTool</class>
113  </tool>
114  <!--
115  <tool>
116     <key>sniffer</key>
117     <scope>request</scope>
118     <class>org.apache.velocity.tools.view.tools.BrowserSnifferTool</class>
119  </tool>
120  -->
121  <tool>
122     <key>cookie</key>
123     <scope>request</scope>
124     <class>org.apache.velocity.tools.view.tools.CookieTool</class>
125  </tool>
126
127  <tool>
128     <key>link</key>
129     <scope>request</scope>
130     <class>com.liusoft.dlog4j.velocity.DLOG_Link_VelocityTool</class>
131  </tool>
132
133  <!-- ordinarily the SecureLinkTool would simply replace the StrutsLinkTool
134      if SSL Ext. is in use - in that case the key would be 'link' but it's
135        'slink' here to distinguish between the two. -->
136  <!--
137  <tool>
138     <key>slink</key>
139     <scope>request</scope>
140     <class>org.apache.velocity.tools.struts.SecureLinkTool</class>
141  </tool>
142  -->
143  <!--
144  <tool>
145     <key>errors</key>
146     <scope>request</scope>
147     <class>org.apache.velocity.tools.struts.ErrorsTool</class>
148  </tool>
149  -->
150  <tool>
151     <key>messages</key>
152     <scope>request</scope>
153     <class>org.apache.velocity.tools.struts.ActionMessagesTool</class>
154  </tool>
155
156  <tool>
157     <key>form</key>
158     <scope>request</scope>
159     <class>org.apache.velocity.tools.struts.FormTool</class>
160  </tool>
161  <!--
162  <tool>
163     <key>tiles</key>
164     <scope>request</scope>
165     <class>org.apache.velocity.tools.struts.TilesTool</class>
166  </tool>
167  -->
168  <!--
169  <tool>
170     <key>validator</key>
171     <scope>request</scope>
172     <class>org.apache.velocity.tools.struts.ValidatorTool</class>
173  </tool>
174  -->
175  <!-- data -->
176  <data type="number">
177     <key>app_version</key>
178     <value>3.0</value>
179  </data>
180  <data type="string">
181     <key>app_name</key>
182     <value>网记</value>
183  </data>
184  <data type="string">
185     <key>app_url</key>
186     <value></value>
187  </data>
188
189
190</toolbox>
191
第 4 步:修改 struts-config。修改 struts-config.xml,指向 Velocity 视图。
struts-config.xml
 1<?xml version="1.0" encoding="ISO-8859-1" ?>
 2
 3<!DOCTYPE struts-config PUBLIC
 4          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
 5          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
 6
 7<struts-config>
 8        
 9    <display-name>DLOG4J</display-name>    
10    <description>DLOG4J v3.0 (http://dlog4j.sourceforge.net)</description>
11
12    <!-- ========== Form Bean Definitions =================================== -->
13    <form-beans>
14
15        <form-bean name="userForm"     type="com.liusoft.dlog4j.formbean.UserForm" />
16        <form-bean name="catalogForm"  type="com.liusoft.dlog4j.formbean.CatalogForm" />
17        <form-bean name="albumForm"    type="com.liusoft.dlog4j.formbean.AlbumForm" />
18        <form-bean name="diaryForm"    type="com.liusoft.dlog4j.formbean.DiaryForm" />
19        <form-bean name="replyForm"    type="com.liusoft.dlog4j.formbean.ReplyForm" />
20        <form-bean name="photoForm"    type="com.liusoft.dlog4j.formbean.PhotoForm" />
21        <form-bean name="bookmarkForm" type="com.liusoft.dlog4j.formbean.BookmarkForm" />
22        <form-bean name="messageForm"  type="com.liusoft.dlog4j.formbean.MessageForm" />
23        <form-bean name="gBookForm"    type="com.liusoft.dlog4j.formbean.GuestBookForm" />
24        <form-bean name="uploadForm"   type="com.liusoft.dlog4j.formbean.UploadFileForm" />
25        <form-bean name="tbForm"       type="com.liusoft.dlog4j.formbean.TrackBackForm" />
26        <form-bean name="linkForm"     type="com.liusoft.dlog4j.formbean.LinkForm" />
27        <form-bean name="siteForm"     type="com.liusoft.dlog4j.formbean.SiteForm" />
28        
29        <!-- BBS -->
30        <form-bean name="BBSForumForm" type="com.liusoft.dlog4j.formbean.BBSForumForm"/>
31        <form-bean name="BBSTopicForm" type="com.liusoft.dlog4j.formbean.BBSTopicForm"/>
32        <form-bean name="BBSReplyForm" type="com.liusoft.dlog4j.formbean.BBSReplyForm"/>
33        <form-bean name="BBSSearchForm" type="com.liusoft.dlog4j.formbean.BBSSearchForm"/>
34        
35        <!-- Music -->
36        <form-bean name="mboxForm" type="com.liusoft.dlog4j.formbean.MusicBoxForm"/>
37        <form-bean name="musicForm" type="com.liusoft.dlog4j.formbean.MusicForm"/>
38        
39    </form-beans>
40    
41    <!-- ========== Action Mapping Definitions ============================== -->
42    <action-mappings>
43
44        <action
45            validate="false"
46            path="/validate"
47            scope="request"
48            type="com.liusoft.dlog4j.action.ValidateAction">            
49        </action>
50        
51        <action
52            validate="false"
53            path="/dlog/type"
54            scope="request"
55            type="com.liusoft.dlog4j.action.DlogTypeAction">            
56        </action>
57        
58    </action-mappings>
59    
60    <!-- ========== Controller Configuration ================================ -->
61    <controller bufferSize="8192" maxFileSize="16M" memFileSize="128K"/>
62    
63    <!-- ========== Message Resources Definitions =========================== -->
64
65    <message-resources parameter="html"/>
66    <message-resources parameter="ui" key="ui"/>
67    <message-resources parameter="festival" key="festival"/>
68
69    <!-- ========== Plug Ins Configuration ================================== -->
70    
71    <plug-in className="com.liusoft.dlog4j.plugin.SearchEnginePlugIn">
72        
73        <set-property property="basePath" value="/WEB-INF/lucene_idx"/>
74        <set-property property="dataProvider0" value="com.liusoft.dlog4j.dao.DiaryDAO"/>
75        <set-property property="dataProvider1" value="com.liusoft.dlog4j.search.DiaryReplyProvider"/>
76        <set-property property="dataProvider2" value="com.liusoft.dlog4j.dao.PhotoDAO"/>
77        <set-property property="dataProvider3" value="com.liusoft.dlog4j.search.PhotoReplyProvider"/>
78        <set-property property="dataProvider4" value="com.liusoft.dlog4j.dao.BBSTopicDAO"/>
79        <set-property property="dataProvider5" value="com.liusoft.dlog4j.dao.BBSReplyDAO"/>
80        <set-property property="dataProvider6" value="com.liusoft.dlog4j.dao.MusicDAO"/>
81        <set-property property="dataProvider7" value=""/>
82        <set-property property="dataProvider8" value=""/>
83        <set-property property="dataProvider9" value=""/>
84        <set-property property="activeInterval" value="120"/>
85        <set-property property="timeSlice" value="1"/>
86        <set-property property="enabled" value="true"/>
87        
88    </plug-in>
89    
90</struts-config>
91

struts-config.html.xml
  1<?xml version="1.0" encoding="ISO-8859-1" ?>
  2
  3<!DOCTYPE struts-config PUBLIC
  4          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
  5          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
  6
  7<struts-config>        
  8
  9    <!-- ========================================= Global Exception Definitions -->
 10    <global-exceptions>
 11        
 12        <exception
 13            key="exception.db"
 14            type="org.hibernate.HibernateException"
 15            path="/html/dberror.vm"/>
 16
 17        <exception
 18            key="exception.db"
 19            type="java.sql.SQLException"
 20            path="/html/dberror.vm"/>
 21                
 22        <exception
 23            key="error.capacity_exceed_exception"
 24            type="com.liusoft.dlog4j.CapacityExceedException"
 25            path="/html/error.vm"/>
 26                
 27    </global-exceptions>
 28    
 29    <!-- ========== Global Forward Definitions ============================== -->
 30    <global-forwards>
 31        
 32        <forward name="home" path="/" redirect="true"/>
 33        <forward name="main" path="/" redirect="true"/>
 34        <forward name="html.login"      path="/dlog/login.vm"/>
 35        
 36        <forward name="msgbox"         path="/html/_msgbox.vm"/>
 37        
 38        <forward name="html.home"      path="/"/>
 39        <forward name="html.diary"     path="/html/diary/"/>
 40        <forward name="html.photo"     path="/html/photo/"/>
 41        <forward name="html.music"     path="/html/music/"/>
 42        <forward name="html.discuss"   path="/html/bbs/"/>
 43        <forward name="html.guestbook" path="/html/guestbook.vm"/>
 44        
 45    </global-forwards>
 46    
 47    <!-- ========== Action Mapping Definitions ============================== -->
 48    <action-mappings>
 49
 50        <action path="/search" forward="/html/search.vm" />
 51        
 52        <action
 53            name="diaryForm"
 54            validate="false"
 55            path="/html/diary"
 56            scope="request"
 57            type="com.liusoft.dlog4j.action.DiaryAction">
 58            
 59            <forward name="diary" path="/html/diary/" redirect="true"/>
 60            <forward name="draft" path="/html/diary/drafts.vm" redirect="true"/>
 61            <forward name="trash" path="/html/diary/trash.vm"/>
 62            <forward name="addlog" path="/html/diary/addlog.vm"/>
 63            <forward name="editlog" path="/html/diary/editlog.vm"/>
 64            <forward name="showlog" path="/html/diary/showlog.vm" redirect="true"/>
 65            
 66        </action>
 67        
 68        <action
 69            name="replyForm"
 70            validate="false"
 71            path="/html/reply"
 72            scope="request"
 73            type="com.liusoft.dlog4j.action.ReplyAction">
 74            
 75            <forward name="diary-enter-reply" path="/html/diary/showlog.vm"/>
 76            <forward name="photo-enter-reply" path="/html/photo/show.vm"/>
 77            <forward name="showlog" path="/html/diary/showlog.vm"/>
 78            <forward name="showphoto" path="/html/photo/show.vm"/>
 79            
 80            <forward name="diary" path="/html/diary/" redirect="true"/>
 81            <forward name="photo" path="/html/photo/" redirect="true"/>
 82            
 83        </action>
 84        
 85        <action
 86            name="photoForm"
 87            validate="false"
 88            path="/html/photo"
 89            scope="request"
 90            type="com.liusoft.dlog4j.action.PhotoAction">
 91            
 92            <forward name="photo_share" path="/html/photo/share.vm"/>
 93            <forward name="photo_album" path="/html/photo/" redirect="true"/>
 94            <forward name="photo_upload" path="/html/photo/upload.vm"/>
 95            <forward name="photo_edit" path="/html/photo/edit.vm"/>
 96            <forward name="photo_show" path="/html/photo/show.vm"/>
 97            
 98        </action>
 99        
100        <action
101            name="bookmarkForm"
102            validate="false"
103            path="/html/bookmark"
104            scope="request"
105            type="com.liusoft.dlog4j.action.BookmarkAction">    
106            
107            <forward name="bookmark" path="/dlog/bookmark.vm"/>
108                    
109        </action>
110        
111        <action
112            name="messageForm"
113            validate="false"
114            path="/dlog/message"
115            scope="request"
116            type="com.liusoft.dlog4j.action.MessageAction">    
117            
118            <forward name="send" path="/dlog/sendmsg.vm"/>
119            <forward name="msgs" path="/dlog/listmsg.vm" redirect="true"/>
120                    
121        </action>
122        
123        <action
124            name="gBookForm"
125            validate="false"
126            path="/html/guestbook"
127            scope="request"
128            type="com.liusoft.dlog4j.action.GuestBookAction">    
129            
130            <forward name="list" path="/html/guestbook.vm" redirect="true"/>
131            <forward name="pub"  path="/html/guestbook.vm"/>
132                    
133        </action>
134        
135        <action
136            name="BBSForumForm"
137            validate="false"
138            path="/html/sitemgr/bbs"
139            scope="request"
140            type="com.liusoft.dlog4j.action.BBSAdminAction">    
141            
142            <forward name="forums" path="/html/sitemgr/forums.vm" redirect="true"/>
143            <forward name="topics" path="/html/sitemgr/topics.vm" redirect="true"/>
144            <forward name="forum_add" path="/html/sitemgr/forum_add.vm"/>
145            
146        </action>
147        
148        <action
149            name="BBSTopicForm"
150            validate="false"
151            path="/html/bbs/topic"
152            scope="request"
153            type="com.liusoft.dlog4j.action.BBSUserAction">    
154            
155            <forward name="bbs" path="/html/bbs/" redirect="true"/>
156            <forward name="forum" path="/html/bbs/forum.vm" redirect="true"/>
157            <forward name="topic" path="/html/bbs/topic.vm" redirect="true"/>
158            <forward name="new_topic" path="/html/bbs/new_topic.vm"/>
159            <forward name="edit_topic" path="/html/bbs/edit_topic.vm"/>
160            
161        </action>
162        
163        <action
164            name="BBSReplyForm"
165            validate="false"
166            path="/html/bbs/reply"
167            scope="request"
168            type="com.liusoft.dlog4j.action.BBSUserAction">    
169            
170            <forward name="forum" path="/html/bbs/forum.vm" redirect="true"/>
171            <forward name="topic" path="/html/bbs/topic.vm" redirect="true"/>
172            <forward name="new_reply" path="/html/bbs/reply.vm"/>
173            <forward name="edit_reply" path="/html/bbs/edit_reply.vm"/>
174            
175        </action>
176        
177        <action
178            input="/html/bbs/search.vm"
179            name="BBSSearchForm"
180            validate="false"
181            path="/html/bbs/search"
182            scope="request"
183            type="com.liusoft.dlog4j.action.BBSSearchAction">    
184            
185            <forward name="home" path="/html/bbs/index.vm"/>
186            <forward name="forum" path="/html/bbs/forum.vm"/>
187            
188        </action>
189        
190        <action
191            name="tbForm"
192            validate="false"
193            path="/html/trackback"
194            scope="request"
195            type="com.liusoft.dlog4j.action.TrackBackAction">            
196        </action>
197        
198        <action
199            name="mboxForm"
200            validate="false"
201            path="/html/mbox"
202            scope="request"
203            type="com.liusoft.dlog4j.action.MusicAction">
204            <forward name="mbox_add" path="/html/music/mbox_add.vm"/>
205            <forward name="mbox_edit" path="/html/music/mbox_edit.vm"/>
206            <forward name="music" path="/html/music/" redirect="true"/>        
207        </action>
208        
209        <action
210            name="musicForm"
211            validate="false"
212            path="/html/music"
213            scope="request"
214            type="com.liusoft.dlog4j.action.MusicAction">    
215            <forward name="music_add" path="/html/music/music_add.vm"/>
216            <forward name="music_edit" path="/html/music/music_edit.vm"/>
217            <forward name="music_intro" path="/html/music/music_intro.vm"/>
218            <forward name="music" path="/html/music/" redirect="true"/>            
219        </action>
220        
221        <action
222            input="/html/sitemgr/editsite.vm"
223            name="siteForm"
224            validate="false"
225            path="/html/sitemgr/site"
226            scope="request"
227            type="com.liusoft.dlog4j.action.EditSiteAction">
228            
229            <forward name="settings" path="/html/sitemgr/"/>
230            <forward name="funcs-setting" path="/html/sitemgr/funcs.vm"/>
231            
232        </action>        
233        
234        <action
235            input="/html/sitemgr/link_add.vm"
236            name="linkForm"
237            validate="false"
238            path="/html/sitemgr/link"
239            scope="request"
240            type="com.liusoft.dlog4j.action.LinkAction">
241            
242            <forward name="links" path="/html/sitemgr/links.vm"/>        
243                        
244        </action>        
245        
246        <action
247            input="/html/sitemgr/catalog_add.vm"
248            name="catalogForm"
249            validate="false"
250            path="/html/sitemgr/catalog"
251            scope="request"
252            type="com.liusoft.dlog4j.action.CatalogAction">
253            
254            <forward name="catalogs" path="/html/sitemgr/catalogs.vm" redirect="true"/>
255            <forward name="adduser" path="/html/sitemgr/catalog_user_add.vm"/>
256            <forward name="catalog-users" path="/html/sitemgr/catalog_users.vm" redirect="true"/>
257            
258        </action>
259        
260        <action
261            input="/html/photo/album_add.vm"
262            name="albumForm"
263            validate="false"
264            path="/html/album"
265            scope="request"
266            type="com.liusoft.dlog4j.action.AlbumAction">
267            
268            <forward name="albums" path="/html/photo/" redirect="true"/>
269            <forward name="photos" path="/html/photo/" redirect="true"/>
270            <forward name="album_move" path="/html/photo/album_move.vm"/>
271            <forward name="album_add" path="/html/photo/album_add.vm"/>
272            <forward name="album_edit" path="/html/photo/album_edit.vm"/>
273            
274        </action>
275        
276        <action
277            name="userForm"
278            validate="false"
279            path="/dlog/user"
280            scope="request"
281            type="com.liusoft.dlog4j.action.DlogAction">
282            
283            <forward name="reg" path="/dlog/reguser.vm"/>
284            <forward name="login" path="/dlog/login.vm"/>
285            <forward name="fetchpwd" path="/dlog/fetchpwd.vm"/>
286            <forward name="newsite" path="/dlog/new_site.vm" redirect="true"/>
287            <forward name="edituser" path="/dlog/myprofile.vm"/>
288            <forward name="viewuser" path="/dlog/viewuser.vm" redirect="true"/>
289            <forward name="friends" path="/dlog/friends.vm" redirect="true"/>
290            <forward name="blacklist" path="/dlog/blacklist.vm" redirect="true"/>
291            
292        </action>
293        
294        <action
295            name="siteForm"
296            validate="false"
297            path="/dlog/site"
298            scope="request"
299            type="com.liusoft.dlog4j.action.DlogAction">
300            
301        </action>
302        
303    </action-mappings>
304
305</struts-config>
306

strut-config.wml.xml这个是和手机wap业务有关,暂不学习。
第 5 步:创建 Velocity 模板
posted on 2010-05-03 23:58 ohgrateboy 阅读(457) 评论(0)  编辑  收藏 所属分类: 开源项目-dlog4j博客系统学习