WEB TECHNOLOGIES LAB MANUAL - KNREDDY



WEB Technologies lab manual

IV BTECH I SEM- CSE

| | |

|SNO |PROGRAM |

| |Creation of static web pages of online book store such as HOME, LOGIN, and |

|1 |CATALOGUE pages. |

| | |

|2 |Creation of static web pages for REGISTRATION and CART pages. |

| | |

|3 |Validation of REGISTRATION and LOGIN pages |

| |Design of web pages using CSS propertie (font, background, background-repeat, |

|4 |links etc),using layers and using customized cursor |

| |Validation of XML file using DTD and displaying its data in a table using XSL and |

|5 |CSS |

| |Creation of simple visual bean with area filled with a color. The shape of area |

|6 |depends on property shape, and configuration of the bean. |

| |Installation of TOMCAT web server APACHE tomcat on port no 4040 and APACHE |

|7 |on port no 8080 |

| | |

|8 |Hello message servlet program |

|9 |User authentication using cookies and init parameters configured in web.xml |

| | |

|10 |JDBC program to retrieve data from student table |

| | |

|11 |Insertion of details in registration page into database using servlet |

| | |

|12 |Jsp program to demonstrate usage action element |

| | |

|13 |Insertion of registration details and user authentication using JSP |

| | |

|14 |Extraction of each catalog book details from database using JDBC |

| | |

|15 |Session management program using servlet |

| | |

| | |

| |JSP Source Code for Basic Arithmetic Example |

|16 | |

| |Write a JavaScript program for selection sort |

|17 | |

Week1&2:

Designing of following static web pages required for an online book store web site.

1) HOME PAGE

2) LOGIN PAGE:

3) CATOLOGUE PAGE:

The catalogue page should contain the details of all the books available in the web site in a table.

The details contain the following:

a. Snap shot of Cover Page. b. Author Name.

c. Publisher. d. Price.

e. Add to cart button.

4) CART PAGE:

a. The cart page contains the details about the books which are added to the cart.

b. The cart page should look like this:

5) REGISTRATION PAGE:

“registration form “with the following fields

1) Name (Text field)

2) Password (password field)

3) E-mail id (text field)

4) Phone number (text field)

5) Sex (radio button)

6) Date of birth (3 select boxes)

7) Languages known (check boxes – English, Telugu, Hindi, Tamil)

8) Address (text area)

¬ Create a file in notepad and save it as “book.html”

Book

¬ Create a file in notepad and save with “top.html”

top

a:link{text-decoration:none}

a:visited {text-decoration:none;color:red}

a:hover {text-decoration:underline;color:green}

a:active {text-decoration:none;color:blue}

AMAZON BOOKS WORLD

HOME

LOGIN

REGISTRATION

CATALOGUE

CART

¬ Create a file in notepad and save it as “left.html”

left

a:link{text-decoration:none}

a:visited {text-decoration:none;color:red} a:hover {text-decoration:underline;color:green} a:active {text-decoration:none;color:blue}

Left

ece

eee

mech

cse

¬ Create a file in notepad and save it as “right.html”

right frame

welcome to amazon books world

This site provides the books information related to various categories.

¬ Create a file in notepad and save it as “home.html”

home page

welcome to amazon books world

This site provides the books information related to various categories.

¬ Create a file in notepad and save it as “login.html”

login form

login into the site

name

password

¬ Create a file in notepad and save it as “registration.html”

Registration form

Registration form

NAME

PASSWORD

PHONE NUMBER

E-MAIL

GENDERmale female

DATE OF BIRTHday12 

month   janfeb   year19901991

LANGUAGES KNOWNTELUGU   ENGLISH HINDI   

  

ADDRESS

 

¬ Create a file in notepad and save it as “catalogue.html”

catalogue page

Book: XML Bible Author: Winston Publication: Wiely

$ 40.5

Book : HTML in 24 hours Author : Sam Peter

Publication : Sam publication

$ 50

Book : AI

Author : S.Russel Publication : Princeton hall

$ 63

Book : Java 2 Author : Watson

Publication : BPB publications

$ 35.5

¬ Create a file in notepad and save it as “cart.html”

cart page

Book Name

Price

Quantity

Amount

Java2

$35.5

2

$70

XML Bible

$40.5

1

$40.5

Total amount -$110

¬ Create a file in notepad and save it as “csit.html”

csit books

Computer Science & IT Books

Book: Mobile Computing Author: Winston

Publication: Wiely

$ 40.5

Book : Computer Networks Author : Sam Peter Publication : Sam publication

$ 50

Book : Computer Communications Author : S.Russel

Publication : Princeton hall

$ 63

Book : Web Design Author : Watson Publication : BPB publications

$ 35.5

¬ Create a in notepad and save it as “eee.html”

eee books

Electrical and Electronics Eng. Books

Book: Machines Author: Winston

Publication: Wiely

$ 40.5

Book : Power Electronics Author : Sam Peter Publication : Sam publication

$ 50

Book : Transmision Systems Author : S.Russel

Publication : Princeton hall

$ 63

Book : Network Theory Author : Watson Publication : BPB publications

$ 35.5

¬ Create a file in notepad and save it as “ece.html”

ece books

Electronics & Communtion Eng. Books

Book: Micro Processor Author: Winston Publication: Wiely

$ 40.5

Book : Priciples of Communtion Author : Sam Peter

Publication : Sam publication

$ 50

Book : Digital Logic Design Author : S.Russel

Publication : Princeton hall

$ 63

Book : Signal Processing Author : Watson

Publication : BPB publications

$ 35.5

Output:

WEEK 3:

VALIDATION:

a) Using JavaScript to validate the following fields of the registration page.

1. Name (Name should contains alphabets and the length should not be less than 6 characters).

2. Password (Password should not be less than 6 characters length).

3. E-mail id (should not contain any invalid and must follow the standard pattern name@)

4. Phone number (Phone number should contain 10 digits only).

b) Also validate the login page with these parameters.

Create a file in notepad and save with “registration.html” which contains javascript code

to validate the name,password,e-mail and phone number entered in registration page.

login form

function validate()

{

name=document.forms[0].elements[0].value; pwd=document.forms[0].elements[1].value; name_re=new RegExp("^[A-Za-z][a-zA-Z .]+$","g"); pwd_re=new RegExp("^[0-9a-zA-Z]+$","g");

if(name.match(name_re))

{

if(pwd.match(pwd_re))

{

alert("login successful");

}

else

{

}

else

{

alert(" invalid password");

document.forms[0].elements[1].select();

}

alert("invalid user name");

document.forms[0].elements[0].select();

}

}

login into the site

name

password

¬ Crate a file in notepad and save with “login.html” , contains javascript code for

login form validation

Registration form

function validate()

{

var flag=true;

var name=document.forms[0].elements[0].value; var pwd=document.forms[0].elements[1].value; var phno=document.forms[0].elements[2].value; var email=document.forms[0].elements[3].value;

name_re=new RegExp("^[A-Za-z][a-zA-Z .]+$","g");

pwd_re=new RegExp("^[0-9a-zA-Z]+$","g");

email_re=new RegExp("^[a-zA-Z][\\w_.]+[@][\\w]+[.][a-zA-Z]+$","g");

phno_re=new RegExp("^[\\d]+","g");

if(!name.match(name_re))

{

alert(" name contains only alphabets only"); flag=false; document.forms[0].elements[0].select();

}

if(name.length and type run. This causes the BDK to start. You should see three windows, titled ToolBox, BeanBox, and Properties. The ToolBox window should include an entry labeled “Colors” for your new Bean.

7. Create an Instance of the Colors Bean (Testing)

After you complete the preceding steps, create an instance of the Colors Bean in the BeanBox window. Test your new component by pressing the mouse anywhere within its borders. Its color immediately changes. Use the Properties window to change the rectangular property from false to true. Its shape immediately changes.

¬ Create and Configure an Instance of the OurButton Bean

Create an instance of the OurButton Bean in the BeanBox window. Then follow these steps:

1. Go to the Properties window and change the label of the Bean to “Change”.You should see that the button appearance changes immediately when this property is changed.

2. Go to the menu bar of the BeanBox and select Edit | Events | action

|actionPerformed.

3. Move the cursor so that it is inside the Colors Bean display area, and click the left mouse button. You should see the Event Target Dialog dialog box.

4. The dialog box allows you to choose a method that should be invoked when this button is clicked. Select the entry labeled “change” and click the OK button. You should see a message box appear very briefly, stating that the tool is “Generating and compiling adaptor class.”

5. Click on the button. You should see the color change.

OUT PUT:

[pic]

Week-7:

1) Install TOMCAT web server and APACHE.

While installation assign port number 4040 to TOMCAT and 8080 to APACHE. Make sure that these ports are available i.e., no other process is using this port.

2) Access the above developed static web pages for books web site, using these servers by putting the web pages developed in week-1 and week-2 in the document root.

Accessthe pages by using the urls : (for

tomcat)

(for Apache)

Installing Tomcat Server

While installing tomcat server on your PC you can either make use of Windows Installer or you can download the package from using zip or tar files.

¬ Method 1.Installing Tomcat using Windows Installer

If you click on window installer then this program will automatically install tomcat web server on your computer. When you start installation using this windows installer program initially following window will appear.

[pic]

click the Next button and the following screen will appear

[pic]

you have to accept the terms by clicking the I Agree button

[pic]

Just click Next button and the next window will appear on which the installation directory can be chosen. If we want to change the default path you can click the browse button and can change it. In this a folder created with the name Tomcat 5.5 on the C drive and in that folder Tomcat server installed.

[pic]

Then click the Next button and you will get the Configuration window. Here you can set the connector port. By default the port is 8080 for Apache Tomcat Server. You can change to any other value except the first 1024 values (The first 1024 port numbers are reserved )

[pic]

we can also set the user name and password for administration login. The click the Next

button

[pic]

It will ask to select the JRE 5.0 path installed on our system.

After selecting the path click Install button ,then installation will start

[pic]

[pic]

At the end click the Finish button and the installation procedure gets completed.

After installing this software we need to configure it with the help of environment variables. The configuration of Tomcat can be done using the following steps.

Step 1: First set the user environment variable JAVA_HOME. For that go to control panel ⋄ System ⋄ Advanced tab. Click the Environment variables and set the JAVA_HOME=C:\jdk1.5.0_15 (select the jdk home directory installed on the system)

[pic]

step 2: Then set the environment variable for CATALINA_HOME as the Tomcat’s

directory. This environment variable is needed to start the Tomcat server.

[pic]

Now you can start the Tomcat server by clicking the startup.bat batch file in the C:\Tomcat 5.5\bin Directory or by giving the command at the command prompt as follows.

[pic]

¬ Method 2: Installing Tomcat using the Binary Distributions

Download the Tomcat from the web site

55.cgi .For windows operating system choose option zip files and for Linux platform chose tar.gz .

After extracting the binary distribution in the Tomcat 5.5 directory, we must set the environment variable in the same way as in Method 1.

Now after starting up the Tomcat we must open the command prompt window and must give the following commands.

[pic]

After starting the Tomcat server the following window will appear on your compute

[pic]

By default the tomcat server gets installed on the port 8080 but we can change the port number. For instance if we want to change this port from 8080 to 4040 then we must go to the directory C:\Tomcat 5.5\conf. Then there is an XML file named server.xml. For editing this open this file it in Notepad.

¬ Find the following part

…….

……..

and change the port=4040

now again go to the command prompt , start the Tomcat server by executing the

startup.bat command the following screen will appear.

Note the port number is getting

changed and now it is 4040

For stopping the Tomcat web server just press Control+c keys. Or type the

shutdown.bat command in command prompt.

¬ Testing Tomcat

To test the Tomcat web server we should open some web browser and enter this URL in the address filed

Note that the by default the server name is localhost and we have set the port

4040(default port number is 8080). Following page gets displayed.

[pic]

Installation of Apache web server on port 8080

Apache web server is an open source product and it is available on the internet. Get it download from the site

Get the zip file with MSI installer (no_ssl) for downloading it on windows. Unzip it and the installation procedure will start by appearing following window.

[pic]

It will prompt for License Agreement. Just click on I accept .. and click Next button.

[pic]

Click the next button

[pic]

Click the next button

[pic]

Click the next button

[pic]

[pic]

Select the Typical set up. Then the next window will display the default folder in which the Apache will get installed. You can change it if you want by clicking change button. Then click the Next button.

[pic]

Then click the Install button. Finally you will get the installation complete message.

[pic]

[pic]

Hello Servlet Program

¬ The directory structure is

[pic]

¬ Create a program in notepad and save with “hello.html”

hello.html

¬ Create a servlet program and save with “HelloServlet.java”

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("Hello message from servlet"); out.close();

}

}

¬ Create a program in notepad and save with “web.xml”

HelloServlet

HelloServlet

HelloServlet

/helloservlet

Output:

The URL is

[pic]

[pic]

Week-8:

User Authentication :

Assume four users user1,user2,user3 and user4 having the passwords pwd1,pwd2,pwd3 and pwd4 respectively. Write a servelet for doing the following.

1. Create a Cookie and add these four user id’s and passwords to this

Cookie.

2. Read the user id and passwords entered in the Login form (week1) and authenticate with the values (user id and passwords ) available in the cookies.

If he is a valid user(i.e., user-name and password match) you should welcome him by name(user-name) else you should display “ You are not an authenticated user “.

Use init-parameters to do this. Store the user-names and passwords in the webinf.xml and access them in the servlet by using the getInitParameters() method.

Week 8(a):-Using Cookies concept

¬ Create a file in notepad and save with “login.html”

login.html

name

password

¬ Create a file in notepad and save with “web.xml”

UserAuthentication

UserAuthentication

user1

pass1

user2

pass2

user3

pass3

user4

pass4

UserAuthentication

/UA

Output:

The URL is

[pic]

[pic]

JDBC program for retrieving information from student table

¬ Create table with the following command

SQL> create table student(rno number(5),name varchar2(20),percentage number(5,2));

¬ Write a jdbc program in notepad and save with “jdbctest.java”

import java.io.*; import java.sql.*; public class jdbctest

{

public static void main(String[] args) throws Exception

{

Class.forName("oracle.jdbc.driver.OracleDriver"); Connection

conn=DriverManager.getConnection("jdbc:oracle:oci:@XE","system","manager"); Statement stmt=conn.createStatement();

ResultSet rs=stmt.executeQuery("select *from student");

System.out.println("rno \t name \t percentage(%)\n");

while(rs.next())

{ System.out.println(rs.getInt(1)+"\t"+rs.getString(2)+"\t"+rs.getDouble(3));

}

}

}

Output:

Week-9:

Install a database(Mysql or Oracle).

Create a table which should contain at least the following fields: name, password, email-id, phone number(these should hold the data from the registration form). Practice 'JDBC' connectivity.

Write a java program/servlet/JSP to connect to that database and extract data from the tables and display them. Experiment with various SQL queries. Insert the details of the users who register with the web site, whenever a new

user clicks the submit button in the registration page (week2).

The directory structure is:

Week9 \ registration.html

WEB-INF\web.xml

\ classes\RegServlet.class

¬ Create the table in database with the name “registration”

CREATE TABLE REGISTRATION( REGID NUMBER(5), NAME VARCHAR2(20), PASSWORD VARCHAR2(20), PHNO VARCHAR2(10), EMAIL VARCHAR2(20), GENDER VARCHAR2(10), DOB VARCHAR2(20), LANGUAGES VARCHAR2(30),

ADDRESS VARCHAR2(100) );

¬ Create a program in notepad and save with “registration.html”

registration.html

Registration from

NAME

PASSWORD

PHONE NUMBER

E-MAIL

GENDERmale female

DATE OF BIRTHday12  month   janfeb   year19901991

LANGUAGES KNOWNTELUGU   ENGLISH HINDI   

  

ADDRESS

 

¬ Create servlet program and save with “RegServlet.java”

import java.io.IOException; import java.io.PrintWriter; import java.sql.*;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class RegServlet extends HttpServlet { Connection conn=null;

Statement stmt=null; PreparedStatement pstmt=null; ResultSet rs=null;

public void init()throws ServletException{

try{

Class.forName("oracle.jdbc.driver.OracleDriver"); conn=DriverManager.getConnection("jdbc:oracle:oci:@XE","system","manager"); stmt=conn.createStatement();

pstmt=conn.prepareStatement("INSERT INTO REGISTRATION VALUES(?,?,?,?,?,?,?,?,?)");

}

catch(Exception e){ System.out.println("error:"+e.toString());

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

response.setContentType("text/html"); PrintWriter out = response.getWriter();

try{

conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);

conn.setAutoCommit(false);

rs=stmt.executeQuery("SELECT MAX(REGID) FROM REGISTRATION");

int regid;

if(rs.next()){

regid=rs.getInt(1);

}

else{

regid=0;

}

regid++; pstmt.setInt(1,regid); pstmt.setString(2,request.getParameter("name").trim()); pstmt.setString(3,request.getParameter("pass").trim()); pstmt.setString(4,request.getParameter("phno").trim()); pstmt.setString(5,request.getParameter("email").trim()); pstmt.setString(6,request.getParameter("gender").trim());

String dob;

dob=request.getParameter("day")+"/"+request.getParameter("month")+"/"+request.get

Parameter("year"); String languages;

languages=request.getParameter("telugu")+","+request.getParameter("english")+","+re quest.getParameter("hindi");

pstmt.setString(7,dob); pstmt.setString(8,languages); pstmt.setString(9,request.getParameter("address").trim()); int i=pstmt.executeUpdate();

if(i==1)

{

}else{

}

}

mit();

out.println("Registration is successful your regid is " );

out.println(""+regid+"");

conn.rollback();

out.println("registration is fail");

catch(Exception e){

out.println(e);

}

out.close();

}

public void destroy(){

try{

conn.close(); stmt.close(); pstmt.close();

}

catch(Exception e){

e.printStackTrace();

}

}

}

¬ Create a file in notepad and save with “web.xml”

This is the description of my J2EE component

This is the display name of my J2EE component

RegServlet

RegServlet

RegServlet

/regservlet

Output:

The URL is

[pic]

[pic]

JSP program

¬ Create file in notepad and save with “usebean_page.jsp” under “C:\Tomcat

5.5\webapps\ROOT” directory.

Good morning!

Good day!

Good evening!

welcome to our site, open 24 hours a day.

Output:

The URL is

[pic]

Week-10:

Write a JSP which does the following job:

Insert the details of the 3 or 4 users who register with the web site (week9) by using registration form. Authenticate the user when he submits the login form using the user name and password from the database (similar to week8 instead of cookies).

¬ Create a table with name registration1

Create table registration1(name varchar2(20),pass varchar2(20),phno varchar2(10),email varchar2(20));

¬ Create the file save with “registration.html”

registration.html

Registration from

NAME

PASSWORD

PHONE NUMBER

E-MAIL

GENDERmale female

DATE OF BIRTHday12  month   janfeb  

year19901991

LANGUAGES KNOWNTELUGU   ENGLISH HINDI   

  

ADDRESS

 

¬ Create the file and save with “registration.jsp”

¬ Create the file and save with “login.html”

login.html

login form

name

password

¬ Create the file and save with “login.jsp”

login sucessfull

login fail invalid username/password

try again click here

Output:

The URL is

[pic]

[pic]

The URL is

[pic]

[pic]

Week-11:

Create tables in the database which contain the details of items (books in our case like Book name , Price, Quantity, Amount )) of each category. Modify your catalogue page (week 2)in such a way that you should connect to the database and extract data from the tables and display them in the catalogue page using JDBC.

¬ The directory structure is

[pic]

¬ Create the following tables in the database

Create table catalog_books(name varchar2(20),author varchar2(20),publication varchar2(20),price varchar2(20));

Create table cse_books(name varchar2(20),author varchar2(20),publication varchar2(20),price varchar2(20));

Create table ece_books(name varchar2(20),author varchar2(20),publication varchar2(20),price varchar2(20));

Create table eee_books(name varchar2(20),author varchar2(20),publication varchar2(20),price varchar2(20));

Create table mech_books(name varchar2(20),author varchar2(20),publication varchar2(20),price varchar2(20));

¬ Insert some books information into the above tables

insert into catalog_books values('AI','S.Russel','Princeton','$63'); insert into catalog_books values('HTML in 24 hours','Sam Peter','Sam publications','$50');

insert into catalog_books values('XML BIBLE','WINSTON','WIELY','$40.2');

insert into catalog_books values('JAVA2','WATSON','BPB','$35.5');

¬ Create the file and save with “catalog.jsp”

catalogue page

NAMEAUTHORPUBLICATIONPRICE

¬ Create the file and save with “csebooks.jsp”

CSE BOOKS CATALOGUE PAGE

NAMEAUTHORPUBLICATIONPRICE

¬ Create the file and save with “ ecebooks.jsp”

ECE BOOKS CATALOGUE PAGE

NAMEAUTHORPUBLICATIONPRICE

¬ Create the file and save with “ eeebooks.jsp”

EEE BOOKS CATALOGUE PAGE

NAMEAUTHORPUBLICATIONPRICE

¬ Create the file and save with “ mechbooks.jsp”

MECHANICAL BOOKS CATALOGUE PAGE

NAMEAUTHORPUBLICATIONPRICE

Output:

The URL is

[pic]

[pic]

Program on session management in servlets

¬ Create a file in notepad and save with “home.html”

home

¬ Create a servlet program, in which session is created by using getSession () method of HttpsServletRequest. An HttpSession object is returned. This object can store set of bindings that associated with names with objects. The setAttribute (), getAttribute (), getAttributeNames () and removeAttribute () methods can be used to manage these bindings. Save the file with “DateServlet.java”

import java.io.*; import java.util.*; import javax.servlet.*;

import javax.servlet.http.*;

public class DateServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException { HttpSession hs = request.getSession(true); response.setContentType("text/html"); PrintWriter pw = response.getWriter(); pw.print("");

// Display date/time of last access.

Date date = (Date)hs.getAttribute("date");

if(date != null) {

pw.print("Last access: " + date + "");

}

// Display current date/time. date = new Date();

hs.setAttribute("date", date);

pw.println("Current date: " + date);

}

}

¬ Create deployment descriptor file “web.xml”

DateServlet

DateServlet

DateServlet

/dateservlet

Output:

The URL is

[pic]

[pic]

WEEK 11:

JSP Source Code for Basic Arithmetic Example

JSP 2.0 Expression Language - Basic Arithmetic

JSP 2.0 Expression Language - Basic Arithmetic

This example illustrates basic Expression Language arithmetic.

Addition (+), subtraction (-), multiplication (*), division (/ or div),

and modulus (% or mod) are all supported. Error conditions, like

division by zero, are handled gracefully.

EL Expression

Result

\${1}

${1}

\${1 + 2}

${1 + 2}

\${1.2 + 2.3}

${1.2 + 2.3}

\${1.2E4 + 1.4}

${1.2E4 + 1.4}

\${-4 - 2}

${-4 - 2}

\${21 * 2}

${21 * 2}

\${3/4}

${3/4}

\${3 div 4}

${3 div 4}

\${3/0}

${3/0}

\${10%4}

${10%4}

\${10 mod 4}

${10 mod 4}

\${(1==2) ? 3 : 4}

${(1==2) ? 3 : 4}

OUTPUT:

JSP 2.0 Expression Language - Basic Arithmetic

[pic]

|EL Expression |Result |

|${1} |1 |

|${1 + 2} |3 |

|${1.2 + 2.3} |3.5 |

|${1.2E4 + 1.4} |12001.4 |

|${-4 - 2} |-6 |

|${21 * 2} |42 |

|${3/4} |0.75 |

|${3 div 4} |0.75 |

|${3/0} |Infinity |

|${10%4} |2 |

|${10 mod 4} |2 |

|${(1==2) ? 3 : 4} |4 |

.

WEEK 12:

WRITE A JAVASCRIPT SCRIPT FOR SELECTION SORT.

PROGRAM

Sort

var b,i,j,temp;

var a;

a=[];

document.write("Enter array");

for(i=0;i ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download