This page describes the public IBIS-PH View System which is a Web/internet
based application that allows the viewing of health data. This includes
normal web pages, indicator profile reports, and custom queries on Utah
specific health data. The application is based on the Module View Controller (MVC) design pattern
with Java servlets acting as the controllers, XSLTs providing the view, with
XML documents/data files providing the model. The Spring MVC Web Framework
is used to provide an open standard that allows for pluggable solutions.
Figure 1 shows a high level overview of the parts and how they interact.
Following the diagram, each of the main functional types of the application
The "org.ibisph.filters" package provides the system with standard Java servlet
filters. The web.xml file controls which filter is applied to which page
request. The base org.ibisph.filter abstract class provides an additional
URL request check so that filter URL mapping is not limited to the basic Java
servlet filter mappings. See the Filters
for more detailed information.
The model (data of interest to be displayed) is contained within an XML file.
Most View System requests deal with only one XML file (a "page" type XML file,
an Indicator Profile XML, a Query Module XML etc.). This file is typically
specified as part of the HTTP request URL. A special controller is used that
parses the URL for the XML filename and optionally the path. A base directory
property (defined in the Spring bean XML configuration files) is then added as
a prefix to locate the exact XML data file to be used as the model. For
indicator profiles the process is very similar. For the Query Modules, the
XML is loaded into the user's session and is not reparsed for each page.
See the MVC Model
section for a more
detailed discussion of the XML used in the IBIS-PH View System.
The view portion of the MVC pattern is almost exclusively handled by an XSLT
system ID and an XML/XSLT transformer. CSS is also used as part of the view
view creation is handled by XSLT. The XSLTs used by the IBIS-PH View System
are comprised of many layers of imported XSLT files. The reason for this
complexity is 1) to provide modularization of XSLT templates and 2) to help
implement a mechanism where site specific implementations can override the base
XSLT template definitions while keeping the site specific code separate from
the main/core XSLT templates. See the
section for a more detailed discussion of the XSLT structure
and how the views are created for the IBIS-PH View System.
The controller portion of the MVC pattern consists of Java Filter and Servlet
code to manipulate and determine/control which model (XML) to combine with
which view (XSLT). The Spring Framework's MVC RequestDispatcher servlet is
used with IBIS-PH View System specific Spring MVC Controller code to handle
the various requests. These controllers are simple Java objects that implement
the Spring MVC Controller interface. That is, they have a handleRequest()
method that returns a Spring MVC ModelAndView object. The RequestDispatcher
servlet then uses the View object returned and calls its render() method with
the model to produce the desired/specified output. See the
section for a more detailed discussion of the controllers used in
the IBIS-PH View System.