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

Structure#

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 page providers), 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:
  1. JSP pages allow quite a lot more flexibility: you can change the functionality, parameters, etc. of your JSPWiki installation very easily, without recompilation.
  2. 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.