advertisement
javaboutique
Search Tips
Articles  |   Tutorials  |   Reviews  |   Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source  |   Forums  |  
javaboutique
Browse DevX


Partners & Affiliates











advertisement


Tutorials : A very simple JSP-architecture :
Contents
Introduction
The "Customer Lookup" application
The "view"

The "Customer Lookup" application

To show how these principles work, let's create a small, simple "lookup-customer" application. It consists of a single page where you enter the customer's ID, push a button and consequently get the data for the customer (name and address in our example).

It's a good idea to let the controller- and view-files have similar names. We'll call our controller ctrlcustomerinfo.jsp and the view customerinfo.jsp. To prefix with "ctrl" is yet another standard that's useful to follow.

The "Customer" JavaBean

We'll need a single bean to get customer data from a database. It will contain these methods:

Method syntax

Purpose

void setCustomerID(String id)

set the ID of the customer

int readCustomerInfo()

read the data for the customer. Return the number one if the customer was found, else zero.

String getCustomerName()

get the name of the customer

String getCustomerAddress()

get the address of the customer

If you look at the code for the JavaBean, you'll see that for simplicity the data base access has been left out, and replaced by some simple logic that will return data for ID-values of 1 and 2 only.

Commands to the controller

It might seem that there is only one command to this page, namely the one that initiates the fetch for customer data. But many pages also need an "initial" command simply to put up the page the first time it's shown. So does our page. This gives us these commands:

  • prompt
  • getdata

The "prompt" command doesn't do much--it shows the page with a message asking the user to enter an ID.

The "getdata" command will do this:

  • get the customer ID from the form
  • invoke a bean to get the customer data
  • check if data was returned
  • setup an appropriate message

Generally, if the controller receives a command that it does not recognize, it should treat it as system error, and handle it accordingly. This could be by throwing an exception, showing an "Application Error" page to the user, or whatever has been decided as the standard way of handling system errors. In our small application we will simply throw an exception with an informative message, which will end up on the common error page.

The structure of the JSP-controller

With the above principles in mind the controller ends up looking like this:

	<%@ page import="java.util.*" %>

	<%@ page errorPage="error.jsp" %>
	
	<jsp:useBean id="customer" class="hansen.playground.Customer" scope="request" />
	
	<%@ include file = "util.inc" %> // contains "cString"
	
	<%String url = request.getRequestURI(); // name of this file
	 // get command
	 String command = cString(request.getParameter("command"));
	 if (command.equals("prompt")) {
	   // prompt user for the id
	   session.putValue("customerinfo.message","");
	 } else if (command.equals("getdata")) {
	   // let the bean fetch data for this customer
	   String id = cString(request.getParameter("id"));
	   customer.setId(id);
	   if (customer.readCustomerInfo() == 1) {
	     // id found
	     session.putValue("customerinfo.message","Customer found");
	   } else {
	     session.putValue("customerinfo.message","Customer not found");
	   }
	 } else if (command.equals("")) throw new Exception("No command given to "+url);
	 else throw new Exception("Invalid command (" + command + ") given to "+url);
	
	pageContext.forward("customerinfo.jsp"); %>

The file "util.inc" contains the utility method "cString" mentioned earlier.

The exceptions thrown for invalid or missing commands are caught by the error-page.

Note, that the controller should never contain HTML-code or anything else submitted to the browser. It's a good, general principle that the controller should not deal with the presentation of data.

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.

 Avaya Developer Showcase
 MSDN Spotlight
 PHP for Windows Showcase
XML error: undefined entity at line 34
advertisement
Receive Articles via our XML/RSS feed
Receive Articles via our XML/RSS feed

JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.

IBM Brings Developers Into the Cloud
Apache at 10: You Can't Buy Us
Microsoft's CodePlex Foundation Moving Forward
Apple Claims 100,000 Apps, Google Analyzes Them
Nokia Latest to Play Opera Mobile 10 Browser
PayPal Opens Up Payment Platform to Devs
Ubuntu Linux 9.10 'Karmic Koala' Starts Its Climb
IBM Links Rational Developer Tools, Tivoli Apps
Libraries Give Vista Apps a Windows 7 Look
Ubuntu: The 'Default Alternative' to Windows?

Delivering Web-based Embedded Fonts in CSS 3
Adobe Helps PHP Developers Create Rich Internet Applications
Java Developers Finding a Home at Adobe Flex
Virtualization Delivers a Dynamic Infrastructure
Consuming XML Web Services in iPhone Applications
Build a More Agile Business with IBM
POJO-Based Solutions for LDAP Access: One Good, One Better
IBM Offers Enhanced Measurement and Management for Energy Usage
IBM Helps Transformation to an Information-Based Enterprise
Top Five Touch UI-Related Design Guidelines

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Reprints, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs