Web-based content management system

This paper describes how to design content management system using the newest web-based techniques.


INTRODUCTION
The Internet -today is the most powerful and popular information media. What was impossible even few years ago is now available by "clicking the mouse". Both small firms and global giants do not forget about this form of communication with customers and create web pages for their businesses. Having a website is a necessity and the obligation to arise in the minds of customers. Professionally designed and managed web site allows for a relatively small expense, to obtain a significant increase in its revenues.
The website requires constant professional management. Administration relies mainly on the management of content: updating the information contained on the site, modifying existing and adding new elements. Assistance in this area is offered in the market by many IT companies. However, with a bit of computer skills it is easy to manage own web site. The most import is easy to use Content Management System (CMS) application for creating and updating web pages. CMS applications allow even the less advanced users to manage a comprehensive web page.

CONTENT MANAGEMENT SYSTEM
Content Management System is a web application or set of applications, for easy creation of Web site and update and expansion. Managing the content and presentation of the site managed by CMS is prepared through a simple-to-use user interface. Usually it is a set of web pages containing complex forms and modules.
The primary task of the CMS platform is separation of data content from presentation (the way of its look). Following the loading of new information by the authorized editor, system moves them to the database and then fulfilling their proper places on the web. The use of templates makes it easy to change the whole site concept so the system is very flexible for any changes. Through this approach the process of publication on the Internet is simple -specialists can focus on their work and do not have to know programming techniques. Each web page is generated dynamically, based on templates and content databases -a dynamic in this case means is always up to date information on the site.

PROGRAMING LANGUAGE
Content management systems are usually based on the databases and scripting languages or specialized software on the server side. Of course, there are many programming languages that can be chosen. For most powerful belong JEE, ASP.NET and PHP. In fact, Java has more advantages then others [1]. Most important are low costs, plenty of free frameworks and libraries, very good documentation, development speed and database integration. Beside of that, Java Enterprise Edition (JEE) guarantees object nature and very good support. Additional advantage is the possibility of using a multi-tier architecture and Model and View Controller pattern. Application can be also easily extended and modified according to changed proposed by client.

MULTI-LAYER MODEL
JEE environment is a very advanced platform [2]. Long presence on the market and rapid growth resulted the JEE has become a very good tool for designing Web applications. The primary advantage of this technology is the ability to separate independent layers. Each of them has other specific tasks for themselves. In addition, usage of interfaces ensures a high level of abstraction, so layers can be easily developed, improved, and even reimplemented. Usually the application is divided into three layers, but more often is used more detailed layering, further separating modules based on their functions.

Fig.1 describes five layers of web application:
-Client layer is all that see user in browser; it is very important to preserve the same look for all available browsers; -Presentation layer is responsible for generating view for user; usually HTML view is generated by JSP pages; -Business logic layer is the core of the whole application; it controls data flow between tiers, including access to data repository and prepare information for presentation layer; it also provides security; -Integration layer improves access to data repository; it ensures that application works despite data base dialect; also provides transaction mechanism and pooling; -Data layer is repository for storing all data; it is usually SQL data base.
Implementation of each layer is usually very time-consuming. However, due to Java and a large number of free and open-source Frameworks, is easy to design a modular application. To gain possibility to make connections and ensure the best communication between layers, it is indicated to use the Model-View Controller (MVC) pattern [4].

Fig. 2 -Model and View Control data flow between components. Taken from [5]
Picture describes Model and View Controller architecture. MVC pattern is used to divide application into three cooperating groups of components: -Model Components -implement all business logic. Should not contain elements associated with the user interface because this is the task of other parts of the application.
-View Components -implement the user interface view. These components are responsible for viewing the forms, but are not engaged in controlling the flow control. Most elements of the view are implemented as JSP pages that allow minimizing Java code placed on the site.
-Components Controller -involved in the flow control. Accept the information entered by the user, redirecting them to appropriate components of other layers. Most components communicate to handle requests to the appropriate JSP page.
Using MVC allows centralizing control and management, greatly improves the flow control. In addition, makes code very easy to modify and increases the possibility of code reuse.

BUSSINESS LAYER -SPRING FRAMEWORK
Spring Framework is a tool combining the flexibility and functionality of much more complex platforms. It contains all the mechanisms to improve the design of applications which could be used depending on the needs and objectives.
Spring is multi-layered application stub. Each layer is in fact a separate, unrelated component, but all of them can be connected with each other. Element allowing for quick and easy integration of all components, is Inversion of Control container. This division and the possibility of quick set-up corresponding to the project, makes Spring to be a very flexible design. Important fact is that this architecture is not limited in any way to be used only in web applications. On the contrary -the Spring Framework is great for both web applications and desktop programs.

Fig. 3 -Spring Framework -Overview. Taken from [6]
The Spring Framework contains a lot of features, which are well-organized in six modules shown on Fig.3. The most important components of Spring are [7]: -Inversion of Control container -this is the core of the Spring Framework. It ensures consistency in the configuration and management facilities, using the Dependency Injection pattern. It is a technique that allows an application to call methods predefined by the programmer, appropriate for the task [11]. This allows the container to manage of lifecycle of objects, which means that it is responsible for the creation, initialization, configuration, and generating connections between them. Objects created by the IoC container are called beans or business objects. All classes and links between them are declared in the XML file, using the relevant definitions. This solution allows for much easier configuration and modification of individual objects and classes; -Aspect-oriented programming Framework -Spring Framework has its own library for Aspectoriented programming. This solution is based on the Java programming language, which does not require a specific syntax to create aspects, such as AspectJ. An additional advantage is the configuration in real time, with no additional compilation process. This approach has resulted in a simple and flexible in use tool, that combined with ready-made classes can become very easy and fast to configure component.
-Data access framework -Spring has an extensive and very well organized JDBC abstraction layer that wraps a standard JDBC mechanism. It provides skeletons for data access also for other libraries such as Hibernate, JPA, or Oracle TopLink. An additional advantage is that it supports transactions and has advanced error handling mechanism.

INTEGRATION LAYER -HIBERNATE FRAMEWORK
The best tool to persist Java objects is a free library Hibernate [8]. It has gained its popularity mainly by offered possibilities, easy setup and integration with other libraries, like Spring. The most important aspects related to the Hibernate are: -Persist objects in the database, using Object-Relational Mapping (ORM) technique [9], mapping Java classes to the tables (there is also the possibility of more complex mappings such as one table to multiple objects, etc.); -Support for multiple SQL dialects, so application using a single database will work well on another, without necessity to change the implementation of the integration layer; -Information about the mapping may be determined by the annotations, or stored in XML files, which effectively separates it from the business logic layer; -Advanced transaction support; -Good support for complex SQL queries using a rich variety of criteria; -Has its own object query language HQL, queries in this language are portable to all databases supported by Hibernate, it is also possible to use standard SQL queries, but then there is no guarantee for application portability to other databases; -With additional tools (Hibernate Tools) it can generate database schema based on the Plain Old Java Objects (POJO) or vice versa -an existing database schema to Java objects.
Hibernate is responsible for mapping (transfer) data from Java objects to a form of records in the database, and vice versa. Library has also very good mechanism for handling relationships and their object-oriented mapping. It is also possible to set the appropriate dialect, isolation level and character encoding.

PRESENTATION LAYER -ZK AJAX FRAMEWORK
From end user or web page editor point of view, the most important is look of the application and is intuitive interface. One of the most advanced and also very easy to use libraries, designed to maximize efficiency and minimize development costs, is the ZK Ajax Framework [10]. Moreover it is compatible with most popular browsers: Firefox, Internet Explorer, Chrome, Opera, Safari and many others. Besides Java classes, ZK Ajax consists of ZK Studio, which allows for easy integration of all components with the popular Eclipse IDE (Integrated Development Environment). During designing an application, the programmer is able to view all created or updated components. ZK Ajax has a very rich documentation in JavaDoc. It also contains a lot of ready and trusted solutions, which significantly saves time and programming effort. The entire collection of ZK Ajax technology is based on JavaScript and Ajax [11]. Despite its enormous possibilities, it does not require knowledge of any of them, because all the code needed to generate an image is created automatically. An additional advantage is many ways to write code: -injection of code on the JSP page, in tags, -use the components in the form of Java classes, -a combination of both these techniques. ZK uses the JEE platform. This is a set of servlets running on correctly configured container. For proper operation, the ZK requires a set of additional libraries (in the form of JAR files). ZK AJAX is based on the event-driven programming (each event caused by the user should be handled). It provides a very large number of ready-made components, including tables, trees, multimedia components, text boxes, figures, dates, calendars, a number of validators, and the possibility of using web services.

CONCLUSION
Powerful and easy to use Content Management System is a major challenge for developers. However, by using appropriate tools, we can design a simple, customizable system, with set of validators and error handling mechanism. Java Enterprise Edition is one of the beset solutions on market. Variety of additional and open-source Frameworks can make development process mush quicker and easier for much lower costs.