tomcat admin tree 解f
很多人, 都我如何在W上使用 struts 做出一B的罱YY料
而 Tomcat 就有一很好的例 by Craig R. McClanahan
那N, 今天我就短的介B, 他O的精髓吧 ^^~
(1) 下d例程式
jakarta 下d tomcat 5.0.x 的 source code
到 %upzip-dir%/jakarta-tomcat-5.0.x-src/jakarta-tomcat-catalina/webapps/admin 之下
@部分就是 tomcat admin 的系y程式所放置的地方
(2) Controller ( org.apache.webapp.admin.ApplicationServlet )
你看到 web.xml 之中的 controller O定, 你大概{一下,
楹尾皇 ActionServlet 呢, 因 admin 需要使用一些 JMX 的功能
所以^承了 ActionServlet 做了一些其他的,
如果你不了解 JMX, 我建h直接裼 ActionServlet 作 Controller .
(3) Action ( org.apache.webapp.admin.SetUpTreeAction )
SetUpTreeAction 是整 Tree 初始化的重要 action,
第一次取得所有WY料, ⒃谶@ea生⑺械馁Y料放入 session 之中
你吹 servlet.getServletConfig().getInitParameter("...")
裼 web.xml 中的 init-parameter O定值,
接下淼幼骶捅容^重要, 也砍侗容^V泛,
|
碚f, 先建立一 Root 的 TreeNode,
我⒏@ Root 去O定 TreeControl, 就是整罱Y的根.
注意, 最後我放入 session 的是 treeControl
但是@r候, treeControl 只有 root @根c
接著, 我颜罱Y放到 treeControl,
怎Nk, 怎N ?
我利用到 TreeBuilder ( Builder Pattern )
你吹揭恍┭}s的程式a, ]PS, 他⒔⒑芏 tree ( tomcat/ resources/ users )
可以在 web.xml 的 treebuilders 之 init-param 中看到
-org.apache.webapp.admin.TomcatTreeBuilder, -org.apache.webapp.admin.resources.ResourcesTreeBuilder, -org.apache.webapp.admin.users.UsersTreeBuilder @ TreeBuilder, 不^我只f明 UsersTreeBuilder 就足蜃大家了解了
基本上, 我 org.apache.webapp.admin.users.UsersTreeBuilder newInstance() a生物件
接著使用 buildTree() 就能虍a生整 罱Y 放到 treeControl 之中 ~
(4) TreeControl (org.apache.webapp.admin.TreeControl)
@ class 是整 罱Y 外部呼叫的方式,
主要可以取得 root, width . O定 node 等等功能
作椴倏剡@ 罱Y 的控制中心,
所以我旁 session 之中W存取
(5) TreeControlNode (org.apache.webapp.admin.TreeControlNode)
睹恳c, 他提供了
name icon label action target expanded domain
@N傩, 足蜃W可以呈F各N情r下的每c之邮
所以, TreeControl 就是Υ媪怂 TreeControl 的相互PScY料
(6) TreeBuilder ( org.apache.webapp.admin.TreeBuilder )
TreeBuilder 是很蔚 interface,
而作的 XXXTreeBuilder 就是①Y料j到 TreeControl 之中
(7) XxxTreeBuilder ( org.apache.webapp.admin.users.UsersTreeBuilder ) 我拿 UsersTreeBuilder 碚f明,
因 TomcatTreeBuilder 有包含了 JMX ^^~
在 buildTree 中, 最重要的就是⒛阋 所有 Node 放到魅氲 TreeControl 之中. ( 可以看一下 addSubtree(). )
(8) TreeControlTag ( org.apache.webapp.admin.TreeControlTag )
如果你 tablib 熟悉的, 可以看一下@程式
如果不熟悉, 你就作是理所然的程式a
@ taglib 也是整罱Y的控制核心,
他愕木W操控, 更改你的罱Y的展F方式
(9) tree-control-test.jsp 你可以看到 SetUpTreeAction 最後就是 forward 到 Tree Control Test ,
在 struts-config.xml O定中 Tree Control Test 就是指到 tree-control-test.jsp
在@支 jsp 之中, 蔚 taglib 呼叫
|
就可以a生所有的罱Y了
但是, 你可以看到每 Node 的 action 就是 treeControlTest.do
所以最後, 就是 struts-config.xml 中z查 treeControlTest 是指 org.apache.webapp.admin.TreeControlTest @支程式
(10) TreeControlTest ( org.apache.webapp.admin.TreeControlTest )
@是最後一需要查的程式了,
基本上你魅 tree @,
假O你F在是 expand = true 辉O定 false
可以魅 select @
代表F在是@ treeControlNode 是被x取的
@是一有c}s, s具有很好O模M^念的罱Y之作方式..