>(2) Then, as you said, WeblogRequestMapper is the overall entry for >processing all request. WeblogRequestMapper.handleRequest() will parse the >requesting url, then find the corresponding "Action name" to process the >request.
WeblogRequestMapper will map all requests looking for the front tier, if no match does a chain.doFilter(..). If the request ends in .rol (aka .action) will be picked up by the struts application. The struts .action as been replaced by .rol. >(b) Another question is that, in class BookmarkEdit, there is "save()" >method besides "myPrepare()" and "execute()". >From the code,* I cannot clearly see how the save() method is called, or >who will call save() method?* from bookmarkEdit.jsp the save method is called via Dynamic Method Invocation (DMI) https://cwiki.apache.org/confluence/display/WW/Action+Configuration#ActionConfiguration-DynamicMethodInvocation eg save is called via !save on the submit: <s:submit value="%{getText('generic.save')}" action="%{#mainAction}!save"/> <s:submit value="%{getText('generic.cancel')}" action="bookmarkEdit!cancel" /> Cheers Greg On 24 February 2018 at 19:02, x86 wj <wj86...@gmail.com> wrote: > hi Greg, > > *1. According to your explanation, I try to express the request > processing. * > When a request comes in: > (1) Firstly, several filterings will filter the request. > (2) Then, as you said, WeblogRequestMapper is the overall entry for > processing all request. WeblogRequestMapper.handleRequest() will parse > the > requesting url, then find the corresponding "Action name" to process the > request. > (3) After finding the "Action name", then corresponding Action Class will > really process the business function. while the mapping from "action name' > to "action class" is specified in Struts.xml. > (4) The 'Action class' will process the logic. It firstly runs > its myPrepare() method, then call the execution() method. > (5)After processing the execute() method, then continue the pass the > several filterings. > > The processing of an incoming request is right as what I said? > > *2. From the structs, each "action" corresponds to a "action class". Aslo, > There is more than one action is processed by the same action class.* > For example, > > <action name="bookmarkAdd" > class="org.apache.roller.weblogger.ui.struts2.editor. > BookmarkEdit"> > <param name="actionName">bookmarkAdd</param> > <param name="pageTitle">bookmarkForm.add.title</param> > <result name="input" type="tiles">.BookmarkEdit</result> > <result name="success" type="chain">bookmarks</result> > <result name="error" type="chain">bookmarks</result> > </action> > > <action name="bookmarkEdit" > class="org.apache.roller.weblogger.ui.struts2.editor. > BookmarkEdit"> > <param name="actionName">bookmarkEdit</param> > <param name="pageTitle">bookmarkForm.edit.title</param> > <result name="input" type="tiles">.BookmarkEdit</result> > <result name="success" type="chain">bookmarks</result> > <result name="cancel" type="redirectAction"> > <param name="actionName">bookmarks</param> > <param name="weblog">${weblog}</param> > <param name="folderId">${folderId}</param> > </result> > <result name="error" type="chain">bookmarkEdit</result> > </action> > > (a) we can see "bookmarkAdd" and "bookmarkEdit' the two actions are both > processed by "org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit". > But there is only one execute() method in class BookmarkEdit. It means > "bookmarkAdd' and "bookmarkEdit" are processed by the same execution() > method? > If so, *how does execute() distinguish the two different actions to process > differently?* > > (b) Another question is that, in class BookmarkEdit, there is "save()" > method besides "myPrepare()" and "execute()". > From the code,* I cannot clearly see how the save() method is called, or > who will call save() method?* > > > > I am new to structs and roller. A lot of details I would like to ask and > hope make it clear. > Thank you for your help. > Best regards, > Wuxia Jin > > > On Sat, Feb 24, 2018 at 12:07 PM, Greg Huber <gregh3...@gmail.com> wrote: > > > .....should be WeblogRequestMapper > > > > Cheers Greg > > > > On 24 February 2018 at 04:39, x86 wj <wj86...@gmail.com> wrote: > > > > > Roller is in a web architecture of "presentation -> business logic -> > > > persistent layer". But the project is complex. From the source code, I > > have > > > no idea which packages(or classes) are responsible for the controller. > > The > > > following will list an example to express my meaning. > > > > > > For example, Jpetstore is a small project with only 24 classes. > > > https://github.com/mybatis/jpetstore-6/blob/master/src/ > > > main/java/org/mybatis/jpetstore/web/actions/OrderActionBean.java > > > > > > This link shows that OrderActionBean is one of the controller class in > > > web.action package. OrderActionBean.listOrders is one function entry > > > provided by system. > > > > > > So, I would like to know, in roller,* where can I find the similar > > > 'controllerClass.method()' that clearly present function's entry*. Can > > you > > > give me some example? > > > > > > Thanks a lot for your time. I really need your help. > > > Best regards, > > > Wuxia Jin > > > > > >