// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= The NetBeans E-commerce Tutorial - Designing the Application
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: The NetBeans E-commerce Tutorial - Designing the Application - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, The NetBeans E-commerce Tutorial - Designing the Application


==== Tutorial Contents

1. link:intro.html[+Introduction+]
2. *Designing the Application*
* <<scenario,The Scenario>>
* <<requirements,Gathering Customer Requirements>>
* <<mockups,Preparing Mockups>>
* <<architecture,Determining the Architecture>>
* <<planning,Planning the Project>>
* <<seeAlso,See Also>>
3. link:setup-dev-environ.html[+Setting up the Development Environment+]
4. link:data-model.html[+Designing the Data Model+]
5. link:page-views-controller.html[+Preparing the Page Views and Controller Servlet+]
6. link:connect-db.html[+Connecting the Application to the Database+]
7. link:entity-session.html[+Adding Entity Classes and Session Beans+]
8. link:manage-sessions.html[+Managing Sessions+]
9. link:transaction.html[+Integrating Transactional Business Logic+]
10. link:language.html[+Adding Language Support+]
11. link:security.html[+Securing the Application+]
12. link:test-profile.html[+Testing and Profiling+]
13. link:conclusion.html[+Conclusion+]

image::../../../../images_www/articles/68/netbeans-stamp-68-69.png[title="Content on this page applies to NetBeans IDE, versions 6.8 and 6.9"]

The application that you design in this tutorial is based on a real-world scenario. After being introduced to the tutorial scenario, you consolidate a high-level list of customer requirements. You then prepare a diagram of the application's business process flow, and a series of _mockups_ which help both you and your customer get a clearer picture of how the final application will look to an end-user. Finally, you break down the customer requirements into a set of implementation tasks, and structure your application so that the responsibilities and interactions among functional components are clearly defined.

This tutorial unit discusses the MVC (Model-View-Controller) design pattern. After investigating the benefits that this pattern offers, you set about mapping JSP, Servlet, and other technologies to the MVC architecture, and draft a diagram that illustrates the components of the application in terms of MVC.

This unit makes various references to the book _Designing Enterprise Applications with the J2EE Platform, Second Edition_. This book contains guidelines promoted by link:http://www.oracle.com/technetwork/java/blueprints-141945.html[+Java BluePrints+].

Although this tutorial unit does not require use of the NetBeans IDE, it is essential because it lays the groundwork for tasks that will be covered in the following units.

You can view a live demo of the application that you build in this tutorial: link:http://services.netbeans.org/AffableBean/[+NetBeans E-commerce Tutorial Demo Application+].




[[scenario]]
== The Scenario

This tutorial is based on the following scenario. Although this is a fictitious scenario, it demonstrates how the software you are about to develop can be applied to real-world business needs. It also serves as a platform from which you can derive customer requirements. Customer requirements should be established as clearly as possible before any design or implementation begins.


==== The Scenario

A small grocery store, the Affable Bean, collaborates with several local farms to supply a community with organic produce and foods. Due to a long-standing customer base and increasing affluence to the area, the store has decided to investigate the possibility of providing an online delivery service to customers. A recent survey has indicated that 90% of its regular clientele has continuous Internet access, and 65% percent would be interested in using this service.

The grocery store staff have asked you, the Java web developer, to create a website that will enable their customers to shop online. They have also asked that you create an administration console alongside the website, which will allow staff members to keep track of orders.

The store's location is in Prague, in the Czech Republic. Because regular clientele are both English and Czech-speaking, staff have requested that the website support both languages.

The grocery store has already purchased a domain and web hosting plan that provides a Java EE 6-compliant server and MySQL database server. Staff have indicated that one technically-oriented member is able to deploy the application to the production server once it is ready.




[[requirements]]
== Gathering Customer Requirements

The initial phase of any project involves gathering information before making any design or implementation decisions. In its most common form, this involves direct and frequent communication with a customer. Based on the provided scenario, the Affable Bean staff have communicated to you that the application you are to create should fulfill the following requirements:

1. An online representation of the products that are sold in the physical store. There are four categories (dairy, meats, bakery, fruit &amp; veg), and four products for each category, which online shoppers can browse. Details are provided for each product (i.e., name, image, description, price).
2. Shopping cart functionality, which includes the ability to:
* add items to a virtual shopping cart.
* remove items from the shopping cart.
* update item quantities in the shopping cart.
* view a summary of all items and quantities in the shopping cart.
* place an order and make payment through a secure checkout process.
3. An administration console, enabling staff to view customer orders.
4. Security, in the form of protecting sensitive customer data while it is transferred over the Internet, and preventing unauthorized access to the administration console.
5. Language support for both English and Czech. (Website only)

The company staff are able to provide you with product and category images, descriptions and price details, as well as any website graphics that are to be used. The staff are also able to provide all text and language translations for the website.

There are many practices and methods devoted to software development management. link:http://en.wikipedia.org/wiki/Agile_software_development[+Agile software development+] is one methodology that encourages frequent customer inspection, and places importance on adaptation during the development cycle. Although this is outside the scope of this tutorial, each tutorial unit concludes with a functional piece of software that could be presented to a customer for further communication and feedback.



[[mockups]]
== Preparing Mockups

After gathering customer requirements, you work with the Affable Bean staff to gain a clearer picture of how they expect the website to look and behave. You create a use-case that describes how the application will be used and encapsulates its behavior:


[[useCase]]
=== Use-Case

Customer visits the welcome page and selects a product category. Customer browses products within the selected category page, then adds a product to his or her shopping cart. Customer continues shopping and selects a different category. Customer adds several products from this category to shopping cart. Customer selects 'view cart' option and updates quantities for cart products in the cart page. Customer verifies shopping cart contents and proceeds to checkout. In the checkout page, customer views the cost of the order and other information, fills in personal data, then submits his or her details. The order is processed and customer is taken to a confirmation page. The confirmation page provides a unique reference number for tracking the customer order, as well as a summary of the order.



You also begin creating mockups. There are numerous ways to go about this task. For example, you could use storyboard software, or create a set of wireframes to relay the relationships between pages. Another common method is known as link:http://en.wikipedia.org/wiki/Paper_prototyping[+paper prototyping+], where you collaborate with the customer by sketching ideas on paper.

In this scenario, we've produced _mockups_ of the primary pages the user expects see when navigating through the website. When we later discuss the MVC design pattern, you'll note that these pages map to the _views_ used by the application.

|===
|[.feature]
--
image::images/mockup-index-small.png[role="left", link="images/mockup-index.png"]
--
 |


==== welcome page

The welcome page is the website's home page, and entry point for the application. It introduces the business and service to the user, and enables the user to navigate to any of the four product categories.

 

|[.feature]
--
image::images/mockup-category-small.png[role="left", link="images/mockup-category.png"]
--
 |


==== category page

The category page provides a listing of all products within the selected category. From this page, a user is able to view all product information, and add any of the listed products to his or her shopping cart. A user can also navigate to any of the provided categories.

 

|[.feature]
--
image::images/mockup-cart-small.png[role="left", link="images/mockup-cart.png"]
--
 |


==== cart page

The cart page lists all items held in the user's shopping cart. It displays product details for each item, and tallies the subtotal for the items in the cart. From this page, a user can:

* Clear all items in his or her cart 
(Clicking 'clear cart' causes the 'proceed to checkout' buttons and shopping cart table to disappear.)
* Update the quantity for any listed item 
(The price and quantity are updated; the subtotal is recalculated. If user sets quantity to '0', the product table row is removed.)
* Return to the previous category by clicking 'continue shopping'
* Proceed to checkout
 

|[.feature]
--
image::images/mockup-checkout-small.png[role="left", link="images/mockup-checkout.png"]
--
 |


==== checkout page

The checkout page collects information from the customer using a form. This page also displays purchase conditions, and summarizes the order by providing calculations for the total cost.

The user is able to send personal details over a secure channel.

 

|[.feature]
--
image::images/mockup-confirmation-small.png[role="left", link="images/mockup-confirmation.png"]
--
 |


==== confirmation page

The confirmation page returns a message to the customer confirming that the order was successfully recorded. An order reference number is provided to the customer, as well as a summary listing order details.

Order summary and customer personal details are returned over a secure channel.

 
|===

Also, you agree with staff on the following rules, which apply to multiple pages:

* The user is able to proceed to checkout from any page, provided that:
* The shopping cart is not empty
* The user is not already on the checkout page
* The user has not already checked out (i.e., is on the confirmation page)
* From all pages, the user is able to:
* View the status of his or her shopping cart (if it is not empty)
* Return to the welcome page by clicking the logo image
* The user is able to select the language (English or Czech) to view the page in for all pages except the confirmation page.

*Note:* Although not presented here, you would equally need to work with the client to produce use-cases and mockups, and establish rules for the administration console. The NetBeans E-commerce Tutorial focuses on developing the store front (i.e., the website). However, Unit 11, link:security.html[+Securing the Application+] demonstrates how to create a login mechanism to access the administration console. Also, you can examine the provided implementation of the administration console by link:https://netbeans.org/projects/samples/downloads/download/Samples%252FJavaEE%252Fecommerce%252FAffableBean_complete.zip[+downloading the completed application+].


[[business]]
=== The Business Process Flow

To help consolidate the relationships between the proposed mockups and better illustrate the functionality that each page should provide, you prepare a diagram that demonstrates the process flow of the application.

The diagram displays the visual and functional components of each page, and highlights the primary actions available to the user in order to navigate through the site to complete a purchase.

image::images/process-flow.png[title="The process flow of the AffableBean application"]



[[architecture]]
== Determining the Architecture

Before you start coding, let's examine the ways in which you can architect the project. Specifically, you need to outline the responsibilities among functional components, and determine how they will interact with each other.

When you work with JSP technologies, you can code all of your business logic into JSP pages using scriptlets. Scriptlets are snippets of Java code enclosed in `<% %>` tags. As you may already be aware, JSP pages are compiled into servlets before they are run, so Java code is perfectly valid in JSP pages. However, there are several reasons why this practice should be avoided, especially when working in large projects. Some reasons are outlined in link:http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/[+Designing Enterprise Applications with the J2EE Platform, Second Edition+] as follows:^<<footnote1,[1]>>^

* *Scriptlet code is not reusable: *Scriptlet code appears in exactly one place: the JSP page that defines it. If the same logic is needed elsewhere, it must be either included (decreasing readability) or copied and pasted into the new context.
* *Scriptlets mix logic with presentation: *Scriptlets are islands of program code in a sea of presentation code. Changing either requires some understanding of what the other is doing to avoid breaking the relationship between the two. Scriptlets can easily confuse the intent of a JSP page by expressing program logic within the presentation.
* *Scriptlets break developer role separation:* Because scriptlets mingle programming and Web content, Web page designers need to know either how to program or which parts of their pages to avoid modifying.
* *Scriptlets make JSP pages difficult to read and to maintain: * JSP pages with scriptlets mix structured tags with JSP page delimiters and Java language code.
* *Scriptlet code is difficult to test: *Unit testing of scriptlet code is virtually impossible. Because scriptlets are embedded in JSP pages, the only way to execute them is to execute the page and test the results.

There are various design patterns already in existence which provide considerable benefits when applied. One such pattern is the MVC (Model-View-Controller) paradigm, which divides your application into three interoperable components:^<<footnote2,[2]>>^

* *Model:* Represents the business data and any business logic that govern access to and modification of the data. The model notifies views when it changes and lets the view query the model about its state. It also lets the controller access application functionality encapsulated by the model.
* *View:* The view renders the contents of a model. It gets data from the model and specifies how that data should be presented. It updates data presentation when the model changes. A view also forwards user input to a controller.
* *Controller:* The controller defines application behavior. It dispatches user requests and selects views for presentation. It interprets user inputs and maps them into actions to be performed by the model. In a web application, user inputs are HTTP GET and POST requests. A controller selects the next view to display based on the user interactions and the outcome of the model operations.
image::images/mvc-model.png[title="The Model View Controller pattern"]


Adhering to the MVC design pattern provides you with numerous benefits:

* *Separation of design concerns:* Because of the decoupling of presentation, control, and data persistence and behavior, the application becomes more flexible; modifications to one component have minimal impact on other components. You can, for example, create new views without needing to rewrite the model.
* *More easily maintainable and extensible:* Good structure can reduce code complexity. As such, code duplication is minimized.
* *Promotes division of labor:* Developers with different skill sets are able to focus on their core skills and collaborate through clearly defined interfaces.

*Note:* When JSP technology was first introduced in 1999, the early specifications included a description of two model architectures: Model 1 and Model 2. Model 1 involves implementing business logic directly within JSP pages, whereas Model 2 applies the MVC pattern. For more information on Model 1 and Model 2 architectures, see link:http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier5.html#1078527[+Designing Enterprise Applications with the J2EE Platform, section 4.4.1: Structuring the Web Tier+].

You can apply the MVC pattern to the application that you develop for the Affable Bean company. You can use a servlet as a _controller_ to handle incoming requests. The pages from the <<processFlowDiagram,business process flow diagram>> can be mapped to _views_. Finally, the business data, which will be maintained in a database, can be accessed and modified in the application using link:http://java.sun.com/products/ejb/[+EJB+] session beans with link:http://java.sun.com/javaee/technologies/persistence.jsp[+JPA+] entity classes. These components represent the _model_.

image::images/mvc-diagram.png[title="MVC diagram of the AffableBean application"]




[[planning]]
== Planning the Project

In order to plan the project, you need to extrapolate functional tasks from the customer requirements. The tasks that we produce will structure the implementation plan for the project, and form the outline for tutorial units that follow. In practice, the more capable you are of identifying tasks and the work they entail, the better you'll be able to stick to the schedule that you and your customer agree upon. Therefore, begin with a high-level task list, then try to drill down from these tasks dividing each task into multiple sub-tasks, and possibly dividing sub-tasks further until each list item represents a single unit of work.

* Set up the development environment
* Register the development server in the IDE
* Create a web project in the IDE
* Run the web project from the IDE (test compilation, deployment, run capabilities, and ensure interoperability between IDE, server and browser)
* Register the database server in the IDE
* Establish a connection to the database server from the IDE
* Create a database instance on the database server
* Prepare the data model for the application
* Create an entity-relationship diagram (use a visual database design tool)
* Identify objects
* Create a schema
* Create entities
* Add entity properties
* Identify relationships between entities
* One-to-Many relationships
* Many-to-Many relationships
* Forward-engineer the entity-relationship diagram into an SQL script
* Run the script on the database server to generate the schema
* Create front-end project files
* Stylesheet
* Placeholders for JSP pages (requires implementing HTML and CSS content to get pages to display like mockups)
* welcome page
* category page
* cart page
* checkout page
* confirmation page
* Organize the application front-end
* Place JSP pages in the application's `WEB-INF` directory
* Create page header and footer
* Remove instances of code duplication (header and footer code from JSP pages)
* Register header and footer includes with the web deployment descriptor
* Create a controller servlet
* Create mappings for views in deployment descriptor
* Create skeleton code in servlet to handle client requests
* Connect the application to the database
* Add sample data to the database
* Create data source and connection pool on server
* Test data source (ping connection pool)
* Ensure that views can access data from the database
* Add database driver JAR to server
* Create a resource reference to the data source in the application
* Query the database from a JSP page
* Set any necessary application-wide parameters
* Code database-access and conditional logic in views that do not require user session (welcome, category)
* Develop the business logic
* Set up the model
* Create JPA entity classes from database tables
* Create and configure persistence unit
* Create EJB stateless bean facades for entity classes
* Integrate EJB model with views
* Integrate EJB facades in controller servlet
* Modify views to use data from scoped variables (instead of any JSTL `<sql>` queries)
* Create shopping cart functionality
* Create Java classes to hold temporary data (`ShoppingCart`, `ShoppingCartItem`)
* Integrate code for `HttpSession` object into controller servlet
* Add session-related actions to controller servlet
* Create shopping cart widget in page header
* Integrate session-related data into views (cart, checkout)
* Apply JSTL `<c:url>` tags to enable url-rewriting in the event that user has disabled cookies
* Configure session time-out in web deployment descriptor
* Add logic to controller servlet handle requests in the event of session time-out
* Integrate transactional logic
* Create code to extract and validate user data from checkout form
* Create an EJB stateless session bean to handle inserting orders and customers into database
* Implement logic to query the database on newly-created orders
* Implement order and customer details display in confirmation page
* Add language support
* Create a properties file containing messages for all text in the application
* default language (English)
* English
* Czech
* Register a localization context parameter in deployment descriptor
* Add logic to view that sets page language based on language value saved in user's session
* Apply `<fmt:message>` tags to all text contained in view
* Factor out English description from database (_optional_), use resource bundles instead
* Create administration console
* Create new artifacts
* Views
* login
* welcome
* error
* Controller servlet
* Create login functionality
* Create interface
* Add actions to controller servlet
* Configure login functionality in deployment descriptor
* Implement admin functionality (in welcome page)
* For viewing order details
* For viewing customer details
* Secure the application
* Configure SSL connection for checkout, confirmation views, and administration console
* Enable SSL on server
* Register security settings in deployment descriptor
* Create user roles and permissions for administration console
* Create security roles on server
* Declare security roles, constraints in deployment descriptor
link:/about/contact_form.html?to=3&subject=Feedback: NetBeans E-commerce Tutorial - Designing the Application[+Send Us Your Feedback+]



[[seeAlso]]
== See Also


=== Online Resources

* link:http://www.oracle.com/technetwork/java/blueprints-141945.html[+Java BluePrints+]
* link:http://www.oracle.com/technetwork/java/catalog-137601.html[+J2EE Patterns Catalog+]
* link:http://java.net/projects/bpcatalog/[+Java BluePrints Solutions Catalog+]
* link:http://java.sun.com/blueprints/patterns/MVC-detailed.html[+Java BluePrints: Model-View-Controller+]
* link:http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier5.html[+Web-Tier Application Framework Design+]
* link:http://download.oracle.com/docs/cd/E17477_01/javaee/5/tutorial/doc/bnadr.html[+The Java EE 5 Tutorial - Chapter 3: Getting Started with Web Applications+]


=== Technical Articles

* link:http://java.sun.com/developer/technicalArticles/javaserverpages/servlets_jsp/[+Servlets and JSP Pages Best Practices+]
* link:http://java.sun.com/developer/technicalArticles/J2EE/despat/[+Design Patterns for Building Flexible and Maintainable J2EE Applications+]


=== Books

* link:http://volume1.coreservlets.com/[+Core Servlets and JavaServer Pages, Volume 1: Core Technologies, 2nd Edition+]
* link:http://volume2.coreservlets.com/[+Core Servlets and JavaServer Pages, Volume 2: Advanced Technologies, 2nd Edition+]



== References

1. <<1,^>> For a more extensive list, see link:http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier3.html#1097966[+Designing Enterprise Applications with the J2EE Platform, section 4.2.6.8: Using Custom Tags to Avoid Scriptlets+].
2. <<2,^>> For more information on the MVC pattern, see link:http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/app-arch/app-arch2.html#1105854[+Designing Enterprise Applications with the J2EE Platform, section 11.1.1: Model-View-Controller Architecture+].

 

