On this page the architecture and design of the JSPWiki is described. This page is thought of as a help for coming developers who need to figure out how to apply changes and where these should be applied.

''NB: I changed this page to contain a high-level description of the JSPWiki 1.9.x and 2.0 design. --[JanneJalkanen]''


JSPWiki follows the basic Model-View-Controller paradigm:

;__Model__: is handled by the WikiEngine class and any subsidiary classes.  Via using different Manager objects, it handles page storage (see PageProviders), etc.
;__View__: is handled via a number of JSP pages, that are stored in the {{templates/}} directory.  Normally JSPWiki uses the "default" template, but it is possible to change this via deployment-time configuration.
;__Controller__: is handled via a number of custom JSP pages (Wiki.jsp, Edit.jsp, etc) that reside in the top-level directory.  Unlike most [application frameworks], JSPWiki uses JSP pages instead of servlets as the main entry point, for a couple of reasons:
# JSP pages allow quite a lot more flexibility: you can change the functionality, parameters, etc. of your JSPWiki installation very easily, without recompilation.
# JSP pages ''are'' servlets.  So in effect we're running a servlet-based system.

!!Other stuff

''Other stuff TBA as I think of it.  You can make note below if you want me to speak about certain aspects of the design.''

I just reverse-engeneered the most important classes using Omondo-UML-Plugin for eclipse and came up with a little diagram (see attached pdf), which shows the main dependencies of the important classes in package jspwiki. -- MaxVoelkel

Attached is the UML class diagram and rough sequence diagram for JSPWiki using Jude. Not perfect, but provide a rough overview of the flow and class interactions.  -- [WillRubel]

[CategoryDocumentation], [CategoryOfficialDocumentation]