model view controller (mvc) -...

16
Islamic University of Gaza Faculty of Engineering Department of Computer Engineering ECOM 5049 Advanced Internet Technology Lab Lab # 11 Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Upload: nguyencong

Post on 28-Aug-2018

241 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Islamic University of Gaza Faculty of Engineering

Department of Computer Engineering ECOM 5049

Advanced Internet Technology Lab

Lab # 11

Model View Controller (MVC)

Eng. Haneen El-masry

May, 2014

Page 2: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 2

Objectives

To be familiar with MVC concepts.

What is MVC ?

MVC stands for Model View Controller. It is a design approach to separate data

processing code from data presentation code.

Possibilities for Handling a Single Request

1- Servlet only: Works well when:

Output is a binary type, e.g., an image.

There is no output, e.g., you are doing forwarding or redirection.

Format/layout of page is highly variable.

2- JSP only: Works well when:

Output is mostly character data, e.g. HTML.

Format/layout mostly fixed.

3- Combination (MVC architecture): Needed when:

A single request will result in multiple substantially different looking results.

You perform complicated data processing, but have a relatively fixed layout.

MVC Flow of Control

Page 3: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 3

The original request is handled by a servlet. The servlet invokes the business-logic and

data-access code and creates beans to represent the results (that’s the model). Then,

the servlet decides which JSP page is appropriate to present those particular results and

forwards the request there (the JSP page is the view). The servlet decides what business

logic code applies and which JSP page should present the results (the servlet is the

controller).

MVC Implementation

Frameworks as Struts and Java Server Faces (JSF) are sometimes useful, but they

are not required!

Implementing MVC with the built-in RequestDispatcher works very well for most

simple and moderately complex applications.

Implementing MVC with RequestDispatcher

1- Define beans to represent the data

In this case, since a servlet (never a JSP page) will be creating the beans, the

requirement for an empty (zero-argument) constructor is waived.

2- Write a servlet to handle requests

In most cases, the servlet reads request parameters. In fact, with the MVC approach the

servlets do not create any output; the output is completely handled by the JSP pages.

So, the servlets do not call response.setContentType, response.getWriter, or out.println.

3- Populate the beans

The results are placed in the beans that were defined in step 1.

ValueObject value = new ValueObject(...);

4- Store the bean in the request, session, or servlet context Storing Data in request:

request.setAttribute("key", value);

Storing Data in session:

HttpSession session = request.getSession();

session.setAttribute("key", value);

Page 4: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 4

Storing Data in application:

ServletContext application= getServletContext();

application.setAttribute("key", value);

5- Forward the request to a JSP page

The servlet determines which JSP page is appropriate to the situation and uses the forward method of RequestDispatcher to transfer control to that page.

RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/SomePage.jsp");

dispatcher.forward(request, response);

Note:

If your JSP pages only make sense in the context of servlet-generated data, place the pages under the WEB-INF directory. That way, servlets can forward requests to the pages, but clients cannot access them directly.

6- Extract the data from the beans

Once the request arrives at the JSP page, the JSP page uses jsp:useBean and jsp:getProperty to extract the data.

The servlet, not the JSP page, should create all the data objects. So, to guarantee that the JSP page will not create objects, you should use:

<jsp:useBean ... type="package.Class" /> instead of

<jsp:useBean ... class="package.Class" />.

The JSP page should not modify the objects. So, you should use jsp:getProperty but not jsp:setProperty.

Page 5: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 5

Example: Bank Account Balances

BankCustomer Bean

Page 6: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 6

showBalance.java Servlet

UnKnownCustomer.jsp

Page 7: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 7

NegativeBalanceCustomer.jsp

NormalBalanceCustomer.jsp

Page 8: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 8

HighBalancecustomer.jsp

The Output

Page 9: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 9

Page 10: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 10

Comparing the Three Data-Sharing Approaches

Request-Based Sharing

Example

Our goal is to display a random number to the user. Each request should result in a new

number, so request-based sharing is appropriate.

- NumberBean.java

- RandomNumberServlet.java

Page 11: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 11

- RandomNum.jsp

The Output

Session-Based Sharing

Example

Our goal is to display users’ first and last names. If the users fail to tell us their name, we

want to use whatever name they gave us previously. If the users do not explicitly specify

a name and no previous name is found, a warning should be displayed. Data is stored

for each client, so session-based sharing is appropriate.

Page 12: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 12

- NameBean.java

- RegistrationServlet.java

Page 13: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 13

- ShowName.jsp

The Output

Page 14: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 14

Application-Based Sharing

Example

Our goal is to display a user mood. If the user fails to tell us his mood, we want to use

whatever mood we most recently computed for any user. Data is shared among

multiple clients, so application-based sharing is appropriate.

- MoodBean.java

Page 15: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 15

- MoodServlet.java

- MoodShow.jsp

The Output

Page 16: Model View Controller (MVC) - site.iugaza.edu.pssite.iugaza.edu.ps/hmasry/files/Lab11-Model-View-Controller-MVC1.pdf · Model View Controller (MVC) Eng. Haneen El-masry May, 2014

Advanced Internet Technology Lab

Eng. Haneen 16

Notes:

If the jsp destination page uses relative URLs for images or style sheets, it needs

to make them relative to the servlet URL or the server root, not to the

destination page’s actual location.

POST requests cannot be forwarded to normal HTML pages. The solution to this

problem is to simply rename the HTML page to have a .jsp extension.

The most common request-forwarding scenario is one in which the request first

goes to a servlet and the servlet forwards the request to a JSP page.

It is certainly possible for the destination page to be a servlet. Similarly, it is quite

possible for a JSP page to forward requests elsewhere.

The servlet can combine its output with that of one or more JSP pages, using

include method of RequestDispatcher instead of forward method.