internet prgramming-notes

497
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING CS1401 – INTERNET PROGRAMMING BRANCH – CSE SEMESTER - VII UNIT – I: BASIC NETWORK AND WEB CONCEPTS Internet standards – TCP and UDP protocols – URLs – MIME – CGI – Introduction to SGML. UNIT – II: JAVA PROGRAMMING Java basics – I/O streaming – files – Looking up Internet address – Socket programming – Client/Server programs – E-mail client – SMTP – POP3 programs – web page retrieval – protocol handlers – content handlers – applets – image handling – Remove Method Invocation. UNIT – III: SCRIPTING LANGUAGES HTML forms – frames – tables – web page design – Java Script introduction – control structures – functions – arrays – objects – simple web applications UNIT – IV: DYNAMIC HTML

Upload: gokulnath013674

Post on 15-Nov-2014

153 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: internet prgramming-notes

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

CS1401 – INTERNET PROGRAMMING

BRANCH – CSE SEMESTER - VII

UNIT – I: BASIC NETWORK AND WEB CONCEPTS

Internet standards – TCP and UDP protocols – URLs – MIME – CGI – Introduction to SGML.

UNIT – II: JAVA PROGRAMMING

Java basics – I/O streaming – files – Looking up Internet address – Socket programming – Client/Server programs – E-mail client – SMTP – POP3 programs – web page retrieval – protocol handlers – content handlers – applets – image handling – Remove Method Invocation.

UNIT – III: SCRIPTING LANGUAGES

HTML forms – frames – tables – web page design – Java Script introduction – control structures – functions – arrays – objects – simple web applications

UNIT – IV: DYNAMIC HTML

Dynamic HTML – introduction – cascading style sheets (CSS) – object model and collections – event model – filters and transition – data binding – data control – ActiveX control – handling of multimedia data.

UNIT – V: SERVER SIDE PROGRAMMING

Page 2: internet prgramming-notes

Servlets –deployment of simple servlets – web server (Java web server / Tomcat / Web logic) – HTTP GET and POST requests – session tracking – cookies – JDBC – simple web applications – multi-tier applications.

TEXT BOOKS

1. Deitel, Deitel and Nieto, “Internet and WWW – how to program”, Pearson Education Publishers, 2000.

2. Elliotte Rusty Harold, “Java Network Programming”, O’Reilly Publishers, 2002

REFERENCES

1. R. Krishnamoorthy & S. Prabhu, “Internet and java programming”, New Age International publishers, 2004.

2. Thomno A. Powell, “The complete reference HTML and XHTML”, Fourth Edition, Tata McGraw Hill, 2003.

3. Naughton, “The Complete Reference – Java2”, Tata McGraw-Hill, 3rd Edition, 1999.

2

Page 3: internet prgramming-notes

CS1401 – INTERNET PROGRAMMING

UNIT I – BASIC NETWORK AND WEB CONCEPTS

1.1 Internet Standards 1.2 TCP and UDP protocols 1.3 URLs 1.4 MIME 1.5 CGI 1.6 Introduction to SGML.

1.1INTERNET STANDARDS

The Internet is a system that allows the computers all over the world to communicate with each other. The Internet is a network of network that connects computers all over the world.

The computers on the Internet can talk to each other because they are networked. All the systems in the network can share or exchange information electronically because of the network connection only. The systems are connected through local and long distance telephone lines, and some even use wireless satellite communications.

CHARACTERISTICS OF INTERNET

It is a Loose Organization. Internet is not a big organization of company or club. It is a Loose Organization. The computers on the internet are controlled by their owners. Nobody controls the Internet.

It is a Relaxing Place. Internet enables users to exchange information in an open and public way. Internet provides various information about Film, TV, Medicine, Nutrition, Astrology, Politics, Employment, Games, and Mails etc.

It is a Business Tool Big companies relies computers in internet for business communication. Nowadays, several organizations are running their business through internet for various purposes like exchange of information, material specifications, payments and billings etc.

3

Page 4: internet prgramming-notes

It is an Information Pool Internet is a pool of information. The information the users in need, it can be easily located and retrieved from the internet.

Internet satisfies the various levels of users like kids, from students to business professionals, from small industries to multinational Companies Researchers and Government Organizations including Military Services.

INTERNET STANDARD (STD)

In computer network an Internet Standard (STD) is a normative specification or set

of rules or a technology or methodology applicable to the Internet.

Internet Standards are created and published by the Internet Engineering Task Force

(IETF).

An Internet Standard is a Special Request For Comments (RFC) or set of RFCs.

An RFC that is to become a Standard or part of a Standard begins as an Internet Draft,

and is later (usually after several revisions) accepted and published by the RFC Editor

as a RFC and labeled a Proposed Standard.

RFC is labelled a Draft Standard, and finally a Standard.

Collectively, these stages are known as the standards track, and are defined in RFC

2026.

The label Historic is applied to deprecated standards-track documents or obsolete

RFCs that were published before the standards track was established.

Only the IETF, represented by the Internet Engineering Steering Group (IESG), can approve standards-track RFCs.

The definitive list of Internet Standards is maintained in Internet Standards Document STD 1: Internet Official Protocol Standards.

EXPERIMENTAL STANDARD

A proposal after being submitted is considered as an experimental standard.

4

Page 5: internet prgramming-notes

PROPOSED STANDARD

A Proposed Standard (PS) is Stable well-understood, has received Significant community review, and appears to enjoy enough community interest to be considered valuable. It is provided by IETF (Internet Engineering Task Force).

IETF include TCP/IP, MIME and SMTP. IETF standards are published as Internet Draft and Request For Comments (RFCs). It deals from informational documents to detailed specification of standard Internet Protocol. RFCs documents are published with the help of Internet Engineering Steering Group (IESG).

DRAFT STANDARD

A Specification from which at least two independent and interoperable implementations from different code bases have been developed, and for which sufficient successful operational experience has been obtained, may be elevated to the Draft Standard (DS) level.

A Draft Standard is normally considered to be a final specification, and changes are likely to be made only to solve specific problems encountered. In most circumstances, it is reasonable for vendors to deploy implementations of Draft Standards into a disruption sensitive environment.

EDIT STANDARD

A Specification for which significant implementation and successful operational experience has been obtained may be elevated to the Internet Standard (STD) level. An Internet Standard, which may simply be referred to as a Standard, is characterized by a high degree of technical maturity and by a generally held belief that the specified protocol or service provides significant benefit to the Internet community

WHY NETWORKING IN JAVA IS ESSENTIAL?

5

Page 6: internet prgramming-notes

Java is the first programming language designed from the ground up with networking in mind.

As the global internet continues to grow, java is uniquely suited to build the next generation of network applications.

Java is platform independence, it also provides security. The Java programs compiled one computer can be executed in some other computer because of the platform independency.

It makes network programs easy. It is easy for java applications to send and receive data across the internet. The client-server implementation using HTTP, FTP and POP3 is also very easy using Java programs.

It is also possible for applets to communicate across the internet, though they are limited by security restrictions.

WHAT CAN A NETWORK PROGRAM DO?

Networking adds a lot of power to simple programs. With networks, a single program can retrieve information stored in millions of computers located anywhere in the world.

A single program can communicate with tens of millions of people. A single program can harness (tie together) the power of many computers to work on one problem.

Network applications generally take one of several forms. The distinction is clients and servers.

In the simplest case, clients retrieve data from a server and display it. More complex clients filter and reorganize data, repeatedly retrieve changing data, send data to other people and computers, and interact with peers in real time for chat, multiplayer games, or collaboration.

HOW JAVA IS USEFUL IN RETRIEVING DATA AND TO DISPLAY?

A network client retrieves data from a server and shows it to a user.

Web browsers are limited. They can talk to only certain kinds of servers (Generally web, FTP, gopher, and perhaps mail and news servers.

6

Page 7: internet prgramming-notes

They can understand and display certain kinds of data (generally text, HTML, and a few standard image formats.)

A java program can send SQL queries in a database.

A Java program can connect to a network time-server to synchronize itself with an atomic clock. A java program can speak any custom protocols it needs to speak, including the one to control the HAWC (High Resolution Airborne Wideband Camera) on the Stratospheric Observatory for Infrared Astronomy (SOFIA).

A java program can use the full power of a modern graphical user interface to show this data to the user and get a response to it.

1.1.2 REPEATEDLY RETRIEVE DATA

Used sending data continuously.

File storage

Massively parallel computing

Smart forms – includes various controls like text box, radio button, text area control

etc.

Peer-to-Peer Interaction – used in various client/server models.

Games – Combine the ability to easily include networking in your programs with

java’s powerful graphics and you have the recipe for truly awesome multiplayer

games.

Chat – Used in various chat applications.

Whiteboards – Java programs are not limited to sending ext and data across the

network. A number of programmers have developed whiteboard software that allows

users in diverse locations to draw on their computers.

Servers Java applications can listen for network connections and respond to them.

This makes it possible to implement servers in Java. Both Sun and W3C have written

web servers in Java designed to be as fully functional and fast as servers written in C.

Various protocols are available in Server for communication like HTTP, FTP, and

TCP etc.

7

Page 8: internet prgramming-notes

ELECTROIC COMMERCE (E-COMMERCE)

1. Shopping sites have proven to be one of the few real ways to make money from

consumers on the web.

2. Although many sites accept credit cards through HTML forms, the mechanism is

clunky (clubbing).

1.1.3 THE LAYERS OF A NETWORK

Logical path

The Host to HostLayer

THE HOST TO NETWORK LAYER

1. This layer is also referred as data link layer, or network-interface layer.

2. This layer defines how a particular network interface, such as an Ethernet card or PPP connection, sends IP data grams over its physical connection to the local network and the world.

3. The part of H to H layer made up of the hardware used to connect different computer (wires, fiber-optic cables, microwave relays, or smoke signals) is sometimes called the physical layer of the network.

THE INTERNET LAYER

Application Layer

Transport Layer (TCP, UDP)

Internet layer (IP)Physical path(Ethernet, FDDI etc

Application Layer

Transport Layer (TCP, UDP)

Internet layer (IP)Physical path

8

Page 9: internet prgramming-notes

1. The internet protocol is the most widely used network layer protocol in the world and the only network layer protocol java understands.

2. Data is sent across the internet layer in packets called data grams. Each IP datagram contains a header from 20 to 60 bytes along a payload that contains up to 65,515 bytes of data.

TRANSPORT LAYER

Data grams packets are generated and transported only via this layer.

APPLICATION LAYER

The layer that delivers data to the user is called the application layer. The 2 lower layers all work together to define how data is transferred from one computer to another.

1.1.4 IP ADDRESSES AND PORTS

1. It is very difficult to remember the IP address of each and every node.2. It order to avoid this problem domain names are used.3. Example google.com, rediff.com etc.PORTS

1. Ports are used in receiving and sending data to another server or client.2. Port number can take the value in the range of 0 to 65535.3. Example for port numbers

Protocol Port Protocol Purpose

Echo 7 TCP/UDP Echo is a test protocol used to verify that 2 machines are able to connect by having one echo back the other’s input.

Discard 9 TCP/UDP Discard is a less useful test protocol in which all data received by the server is ignored.

FTP 21 For File Transfer ProtocolSMTP 25 For Simple Mail Transfer ProtocolHTTP 80 For Hyper Text Transfer ProtocolPOP3 110 For Post Office Protocol NTP 119 Usenet news transfer is more formally known as the

Network News Transfer Protocol

9

Page 10: internet prgramming-notes

RMI Registry

1099 This is the registry service for Java Remote Objects.

1.1.5 INTERNET ADDRESS CLASS

1. Internet addresses are assigned to different organizations by the Internet Assigned Numbers Authority (IANA).

2. ISP – Internet Service Providers gives block addresses.

3. Class C address block specifies the first 3 bytes of address, for example 199.1.32. This allows room for 254 individual addresses from 199.1.32.1 to 199.1.32.254

4. Class B address specifie only the first 2 bytes of the addresses.

5. There are also Class D and E addresses used for IP multicast group.

6. Each node on the Internet has a unique number and it is called as Internet Protocol Address or IP address.

7. The format of IP address is

Where A, B, C and D values will be in the range of 0 to 255 and each one is called as an octet.

Examples are as follows:

1. 195.244.178.145 Valid IP address

2. 155.233.254 Invalid IP address because the fourth octet is missed (should be the combination of four octets. Example 128.156.252.250)

3. 255.0.258.158 Invalid because the third octet exceeds 255

10

A.B.C.D

Page 11: internet prgramming-notes

1.1.6 INTERNET SERVICE PROVIDER

An ISP is an organization that provides individuals and other companies’ access to the Internet and other related services. They are three types of connections seen in homes/organizations. They are

1. ISDN – Integrated Services Digital Network2. Cable Modem3. A dial-up Telephone Modem

FIREWALLS

The hardware and software that sits between the Internet and the local network, checking all the data that comes and goes out is called “firewalls”.

PROXY SERVERS

Proxy servers are related to firewalls prevents hosts on a network from making direct connections to the outside world, a proxy server can act as a go-between.

Thus a machine that is prevented from connecting to the external network by a firewall would make a request for a web page from the local proxy server instead of requesting the web page directly from the remote web server.

1.1.7 THE CLIENT/SERVER MODEL - MODEL 1 - CLIENT/SERVER

Web Server

Request

Response

Client

11

Internet

Page 12: internet prgramming-notes

1. Model 1 is the simplest of client/server model in web architecture.

2. The client sends Request to the Web Server through Internet.

3. The Request is acknowledged by the Web Server and it sends Responses to the Client.

4. Now the Server sends the Requested information to the Client from Web Server.

5. At the end of data transfer, the Client disconnects from the Server.

MODEL 2 – WWW Database Client/Server

Request

Response

Client Web server Database Server

1. In Model 2 the client sends Request to the Web Server through Internet.

2. The Request is acknowledged by the Web Server and it sends Responses to the Client.

3. If the information is not available, then the Server searches data in the Database Server also.

4. Now the Server sends the Requested information to the Client from Web Server or from Database Server.

12

Internet

Page 13: internet prgramming-notes

5. At the end of data transfer, the Client disconnects from the Server.

MODEL 3 – WEB SERVER / APPLICATION SERVER

Request

Response

Client Web server Application Server

1. In Model 3 the client sends Request to the Web Server through Internet.

2. The Request is acknowledged by the Web Server and it sends Responses to the Client.

3. If the information is not available, then the Server searches data in the Application Server also.

4. Now the Server sends the Requested information to the Client from Web Server or from Application Server.

5. At the end of data transfer, the Client disconnects from the Server.

13

Internet

Page 14: internet prgramming-notes

MODEL 4 – WEB SERVER / APPLICATION SERVER/DATABASE SERVER

Request Web server Application Server

Client

Response

Database Server

1. In Model 4 the client sends Request to the Web Server through Internet.

2. The Request is acknowledged by the Web Server and it sends Responses to the Client.

3. If the information is not available, then the Server searches data in the Application Server and Database Server also.

4. Now the Server sends the Requested information to the Client from Web Server or from Application Server or Database Server.

14

Internet

Page 15: internet prgramming-notes

5. At the end of data transfer, the Client disconnects from the Server.

MODEL 5: WEB SERVER / TRANSACTION SERVER/DATABASE SERVER

Request

Response

Client Web server Transaction Server

Database Server

1. In Model 5 the client sends Request to the Web Server through Internet.

2. The Request is acknowledged by the Web Server and it sends Responses to the Client.

3. If the information is not available, then the Server searches data in the Transaction Server and Database Server also.

4. Now the Server sends the Requested information to the Client from Web Server or from Transaction Server or Database Server.

15

Internet

Page 16: internet prgramming-notes

5. At the end of data transfer, the Client disconnects from the Server.

6. The Transaction ensures the ACID properties for several transactions with the Databases.

MODEL 6: WEB SERVER / TRANSACTION SERVER / DATABASE SERVER/APPLICATION SERVER

Request

Response

Client Web server Transaction Server

Application Server Database Server

1. In Model 6 the client sends Request to the Web Server through Internet.

2. The Request is acknowledged by the Web Server and it sends Responses to the Client.

3. If the information is not available, then the Server searches data in the Web Server, Transaction Server, Application Server and Database Server also.

16

Internet

Page 17: internet prgramming-notes

4. Now the Server sends the Requested information to the Client from Web Server or from Transaction Server or Database Server or Application Server.

5. At the end of data transfer, the Client disconnects from the Server.

1.1.8 W3C RECOMMENDATIONS (WWW 3 - World Wide Web Consortium)

W3C LEVELS1. Recommendation - is the highest level of W3C standard. However, the W3C is very

careful not to actually call this a “standard” for fear of running afoul (afraid) of antivirus statutes.

2. Proposed Recommendation - A proposed recommendation is mostly complete and unlikely to undergo more than minor changes.

The main purpose of a proposed recommendation is to work out bugs in the specification document rather than in the underlying technology documented.

3. Candidate Recommendation

A candidate Recommendation indicates that the working group has reached consensus on all major issues and is ready for third-party comment and implementations.

1.2 TCP AND UDP PROTOCOLS

1.2.1 TCP/IP PROTOCOL ARCHITECTURE

TCP/IP Protocol architecture contains the following layers. They are

1. Application Layer2. Transport Layer3. Internet Layer4. Network Layer

17

Page 18: internet prgramming-notes

5. Physical Layer

COMPARISON OF OSI AND TCP/IP PROTOCOL ARCHITECTURE

Application Layer Application Layer

Presentation Layer

Session LayerTransport (host – to – host) Layer

Transport Layer

Network Layer Internet Layer

Data Link Layer Network Access Layer

Physical Layer Physical Layer

TCP/IP PROTOCOL SUITE

Socket communication takes place via protocol. Protocol is a set of rules and regulations which should be obeyed by both server and client system.

Internet Protocol (IP) is a low level routing protocol that breaks data into small packets and sends them to an address across a network.

But IP does not provide guarantee to the delivered packets at the destination side.

Transmission Control Protocol (TCP) is a higher level protocol solves this problem and also provides guarantee to the delivered datagram packets.

A third protocol, User Datagram Protocol (UDP) is next to TCP and can be used directly to support fact, connectionless, unreliable protocol.

18

Page 19: internet prgramming-notes

TCP PROTOCOL FORMAT

DO – Data Offset R - Reserved CWR - Congestion Window Reduced ECE - Explicit Congestion Notification URG - Urgent Pointer field significant ACK - Acknowledgement field significant PSH - Push function RST - Reset the connection SYN - Synchronize the sequence numbers FIN - No more data from sender

DIFFERENCE BETWEEN CONNECTION ORIENTED AND CONNECTION LESS PROTOCOLS

SL.NO

Connection Oriented Protocol

Connection less Protocol

1 Clients sends request to the Server Making Request to the server is not necessary

19

Source Port Destination Port

Sequence Number

Acknowledgment Number

DO R C E U A P R S F Destination W C R C S S Y I R E G K H T N N Port

Checksum Urgent Pointer

Options + Padding

Page 20: internet prgramming-notes

2 Client has to wait until its receives Response from the Server

Not applicable

3 After receiving Response from the Server, Client establishes connection with the Server.

No need to establish a connection

4 After establishing a connection with the Server Clients starts transmitting the packets to the Server.

Establishing a connection is not necessary.

5 At the end of data transfer client disconnect the connection with the Server.

In connection less service the packets are transmitted continuously with out getting permission or without making connection with the server.

6 Guarantee is provided to datagram packets.

Fast but unreliable, because no guarantee is provided to the data.

THE NETWORKING CLASSES AND INTERFACES

The classes contained in the java.net packages are shown below:

APPLICATION LAYER Application layer contains the logic needed to support the various user

applications.

File manager, emails etc.

Authenticator ServerSocket

CacheRequest Socket

CacheResponse SocketAddress

ContentHandler SocketPermission

DatagramPacket URI

DatagramSocket URL

MulticastSocket URLEncoder

20

Page 21: internet prgramming-notes

Application layer provides access to OSI environment for users and also provides distributed information services.

TRANSPORT (HOST TO HOST) LAYER

Provides reliable data transmission and maintain that all of the data arrived in the same order in which they were sent.

INTERNET LAYER

Concerned with data access and routing data across a network for two end systems attached to the same network.

NETWORK ACCESS LAYER

Takes care of exchange of data between an end system and the network to which it is attached.

PHYSICAL LAYER

Covers the physical interface between data transmission device and a network. It specifies the characteristics of transmission medium, nature of signals, data rate, related informations.

1.3 URLs

Uniform Resource Locator

URL identifies the location of a resource on the internet. It is used to specify the type of protocol used, name of the server, location of file on the server.

The syntax of URL is as follows.

SYNTAX

21

Protocol name://username@hostname:port/path/filename#fragment?Query

Page 22: internet prgramming-notes

1.3.1 PROTOCOL SCHEME

Protocol scheme specifies the name of the protocol used by the server. It includes file, ftp, https, gopher, news, telnet and other strings.

USER NAME

It specifies the optional user name for the server.PORT

It specifies optional port numbers, default port number value is 80 for HTTP server.

PATH

Path points to a particular file in the directory specified.

FRAGMENT (ANCHOR / REFERENCE)It is used to identify a particular part in the document.

QUERY STRING

It provides additional arguments for the server. It is commonly used only in http URLs.

RELATIVE URLs

URLs that are not complete but inherit pieces of information from their parent are called relative URLs.

In a relative URL, any pieces that are missing are assumed to be the same as corresponding pieces from the URL of the document in which the URL is found.

If any hyperlink <a href = “example.html”> is to be clicked the browser cuts the example.html from the root URL and it attaches example.html to the URL and loads the document as

http://www.cse.com/dept/example.html

If the relative URL begin with a /. Then it is relative to the document root instead of relative to current file.

22

Page 23: internet prgramming-notes

1.3.2 UNIFORM RESOUCE NAME (URN)

URN is a name for a particular resource but without reference to a particular location. The use of URN is used to handle resources that are mirrored in many different locations. URN identify the resources itself, not the place where the resource lives.

SYNTAX OF URN

Name space - is the name of a collection of certain resources contained by some authority.

Resource-name – is the name of resource within that collection.

There are 2 types of URLs.

1. URL – Uniform Resource Locaters (is a pointer to a particular resource on the Internet at a particular location.)

2. URNs – Uniform Resource Name (is a name for a particular resource but without reference to a particular location)

1.3.3 URI (UNIFORM RESOURCE IDENTIFIER)

It takes tow types

1. Uniform Resource Locators (URLs)2. Uniform Resource Name (URNs)

Urn:name:resource-name

23

Page 24: internet prgramming-notes

FORMAT OF URI

URI

URN is a name for a particular resource but without reference to a particular location. The main use of URN is to handle resources that are mirrored in many different locations. They identify the resources itself, not the place where the resources live.

1.3.4 URL

Uniform Recourse Locator is a way to unambiguously identify the location of a resource on the Interned.

URI Uniform Resource Identifier is a string of characters in a particular syntax that identifies a resource.

The resource identified may be a file on a server, but it may also be an email address, a news message, b book, a person’s name, an Internet host.

SYNTAX

1. Tells the web browser a lot about the document

2. The protocol used to retrieve the document

3. The name of the host where the document lives and

4. The path to that document on the host.

RELATIVE URL

URL that is not complete but inherits pieces from their parent is called relative URLs.

24

URL URN

Scheme:scheme-specific-part

Page 25: internet prgramming-notes

ABSOLUTE URL

In contrast, a completely specified URL is called an absolute URL.

SYNTAX FOR URL

Where,

Protocol is another word for what was called the scheme of the URL.

Scheme is the word used in the URI RFC.

Protocol part can be file, ftp, http, https, gopher, news, telnet, wais or various other strings (through not urn)

The hostname part of a URL is the name of the server that provides the resource you want, like www.oreilly.com.

It can also be the server’s IP address, like 128.55.47.56

The user-name is an optional user name for the server.

The port number is also optional.

Path points to a particular directory on the specified server. The path is relative to the document root of the server, not necessarily to the root of the file system on the server.

25

Protocol://username@hostname:port/path/filename#fragment?query

Page 26: internet prgramming-notes

SCHEME TYPES

1. data – base 64 encoded data included directly in a link

2. file – A file on a local disk

3. FTP – An FTP server

4. gopher– a Gopher server

5. mailto – an email address

6. news – A Usenet newsgroup

7. Telnet – A connection to a Telnet based service (only used in Remote Login System)

8. urn – Uniform Resource Name

1.4 MIME

HTTP is a standard protocol that defines how a web client talks to a server and how data is transferred from the server back to the client.

HTTP relies heavily on two other standards.

MIME (Multi purpose Internet Mail Extensions

HTML

1. MIME is a way to encode different kinds of data, such as sound and text, to be transmitted over a 7-bit ASCII connection.

.2. It also lets the recipient know what kind of data has been sent, so that it can be

displayed properly.

3. MIME was originally designed to facilitate multimedia email and to provide an encoding that could get binary data past the most train –damaged mail transfer programs.

4. It is an open standard for sending multipart, multimedia through internet email.

5. MIME supports almost a hundred predefined types of content.

26

Page 27: internet prgramming-notes

6. The MIME contents are classified into two levels. They are

Type – It specifies what kind of data is contained (picture, text, movie) Subtype – It specifies the type of data (html, plain, gif, jpeg) etc.

1. MIME is an open standard for sending multipart, multimedia data through Internet email.

2. MIME was originally intended for email, it has become a widely used technique to describe a file’s contents so that client software can tell the difference between different kinds of data.

MIME SUB TYPES

Type Subtype Description

Text Calendar

Css

Directory

Calendar control

A CSS used for HTML and XML

Address book information such as name, phone, email address.

Enriched Font and paragraph level formatting such as bold, email etc

Plain Simply raw ASCII textHtml Html languages used by web browsers.Richtext This is an HTML like markup for encoding formatting

into pure ASCII text.Sgml Sgml standard language

1.4.1 APPLICATIONS OF MIME

1. The data returned by HTTP is sent in MIME format only.

2. Java program relies on MIME format to find an appropriate content handler for a particular stream of data.

3. The original SMTP protocol was designed but MIME is designed for sending multimedia data base like audio, video content types.

27

Page 28: internet prgramming-notes

1.4.2 MIME MESSAGE FORMAT

MIME message consists of header field followed by data field.

Header field indicates 1. MIME version2. The content type3. Data transfer encoding scheme4. Message identification5. Message description

The message body contains the actual data being transferred which may consist of plain text, images, WWW electronic mail

MIME SUB TYPES

1. MIME version field – indicate a version number to declare a message to be to be conformant (conflict with this specification and allows mail processing agents to distinguish between such ,messages and those generated by older or non-conformant software, which is presumed to lack such a field.

2. A Content type header field, which is used to specify the type and subtype of data in the body of a message and fully specify the native representation of such data.

2.1 A TEXT content type is used to represent textual information in a number of character sets and formatted text description languages in a standardized manner.

2.2 A multipart content type value, which can be used to combine several body parts, possible of differing types of data, into a single message.

2.3 An application content type can be used to transmit application data or binary data, and hence, among other uses, to implement an electronic mail file transfer service.

2.5 A message content type is used to encapsulate another mail message.

2.5 An image content type is used for transmitting still image or picture data.

2.6 An audio content type is used for transmitting audio or voice data.

28

Header Field Data

Page 29: internet prgramming-notes

2.7 A video content type is used for transmitting video or moving image data with audio as part of the composite video data format.

3. A content transfer encoding header field, used to specify an auxiliary encoding that was applied to the data in order to allow it to pass through mail transport mechanisms which may have data or character set limitations.

4. Content-ID and Content-Description header fields can be used to describe the data in a message body.

1.4.3 MIME MEDIA TYPES

There are 4 top lever media types they are:

1. Text – Textual information. The subtype “plain” in particular indicates plain text containing no formatting commands or directives of any sort.

2. Image – Image data. “Image” requires a display device such as a graphical display, a graphics printer, or a FAX machine) to view the information.

3. Audio – Audio data. “Audio” requires an audio output device such as speaker or a telephone to display the contents.

4. Video – Video requires the capability to display moving images, typically including specialized hardware and software. The two composite top level media types are

4.1 Multipart – data consisting of multiple entities of independent data types.

4.2 Message – An encapsulated message.

29

Page 30: internet prgramming-notes

1.5 CGI – COMMON GATEWAY INTERFACE

In general a programming language is something which has its own keywords, operators, compilers etc.

But CGI does not own any keywords, operators, compilers etc of its own.

Instead, CGI has got its own requirement of what a web enabled programming language should have .

So CGI is called as a specification. CGI is not a programming language, it is actually the specification defined by the W3C.

So CGI is an environment, which has necessary functions and interfaces for interacting with web servers .

CGI can be viewed as an entity which acts as the middleware between the web servers and external databases. Thus CGI applications perform specific information processing on the databases on behalf of web servers.

1.5.2 CGI ARCHITECTURE

CGI allows the user to give dynamic operations to its pages.

Traditionally, HTML program is static. CGI provides more interaction to their users.

30

Web Browser WebServer

CGIProgram

DatabaseFile

Page 31: internet prgramming-notes

The CGI programs are saved with an extension of .cgi

The CGI server can recognize any extension type, for example

1. .exe2. .cgi3. .asp4. .php35. .shtml6. .pl and so on.

For example named example.pl can be executed as follows.

In the above diagram the web browser sends a request to Web Server.

The Web server forwards this request to CGI program.

Now the CGI server searches the output from the file or database.

The CGI server can understand the above mentioned type of files.

1.5.3 CGI ENVIRONMENT VARIABLES

CGI environment variables are entities which are known by both web server and CGI programs for communicating useful data between them.

CGI ENVIRONMENT VARIABLESSL. NO

Variable Meaning

1 AUTH_TYPE Contains the authentication method used to validate the web browser. This checks the user name and password.

2 CONTENT_LENGTH Returns the length of the user provided content from the web page requesting the CGI script.

3 CONTENT_TYPE Returns the type of the data. Example text/html or image/jpeg.

31

http://www.server-name.com/cgi-bin/example.pl

Page 32: internet prgramming-notes

4 GATEWAY_INTERFACE Returns the version of the CGI interface being used.

5 PATH_INFO Holds the additional path information for the CGI script.

6 PATH_TRANSLATED Holds the additional path information for the CGI script. This value is set from the information appended to the URL requesting the CGI script.

7 QUERY_STRING Returns the string in the query.

8 REMOTE_ADDR Stores the IP address pf the machine running the Web browser requesting the CGI script.

9 REMOTE_IDENT Stores the user’s login name only if he web server supports identification.

10 REMOTE_USER Stores the username the web browser specified for authentication. This is only set if the server supports authentication and the CGI script is protected.

11 SCRIPT_NAME Stores the virtual path and name of the CGI script being executed. This is used for self-referencing URLs.

12 SERVER_NAME Contains the name, either domain name or IP address, of the machine running the Web server.

13 SERVER_PORT Contains the port number on which the web browser sent the request to the web server.

14 SERVER_PROTOCOL Displays the name and version of the protocol being used to make the CGI script. In most cases, this will be the HTTP protocol and will look something like HTTP/1.0.

15 SERVER_SOFTWARE Stores the name and version of the Web server software that executed the CGI script. Fox example Netscape Communication Server

32

Page 33: internet prgramming-notes

Version 1.1.

1.5.4 HTTP REQUEST HEADER ENVIRONMENT VARIABLES

SL. NO

Variable Meaning

1 HTTP_ACCEPT Contains the list of media types separated by comma. Fox example audio/basic, image/gif, text/*.* and so on.

2 HTTP_ACCEPT_ENCODING Contains the valid encoding methods the browser can receive in response from the web server. Examples are x-zip, x-stuffit, x-tar.

3 HTTP_ACCEPT_LANGUAGE Contains the browser’s preferred language for a response from the Web Server. An example en_UK which si the English of the United Kingdom.

4 HTTP_AUTHORIZATION Contains the authorization information from the web browser. Example is user name and password.

5 HTTP_CHARGE_TO Formats for this field are still undermined.

6 HTTP_FROM Contains the name of the requesting user us supplied by the web browser in an e-mail address format. For example [email protected]

7 HTTP_IF_MODIFIED_SINCE Can contain a value specified in a valid ARPANET date standard, such as Weekday, DD-Mon-YY HH:MM:SS TIMEZONE.

8 HTTP_USER_AGENT Contains the name of the web browser that requested the document. An example

33

Page 34: internet prgramming-notes

Mozilla/2.0, which would be the user agent for the Netscape 2.0 browser for Windows 95.

1.5.5 CGI – PARSED HEADERS

Every CGI script must precede any data to the web server with a parsed header.

A parsed header is the lines of code output by CGI script that get parsed by the web server.

This parsed header is in the same format as an HTTP header and can contain any of the CGI variable names.

Parsed headers must always be immediately followed by a blank line.

Any lines in the parsed header that are not directives to the web server are sent back to the web browsers as part of the HTTP response header.

SERVER DIRECTIVES FOR PARSED HEADERS

SL. NO

Variable Meaning

1 CONTENT_TYPE Specifies to the Web server the MIME type of the data being returned by the CGI script.

2 LOCATION Contains either the virtual path or the URL of a document that CGI script wants retuned to the Web browser requesting your script.

3 Status Returns to the web sever an HTTP status line, which will then be returned to the web browser. Status code and the reason string. Examples are 404 Not Found and 403 Forbidden (not allowed).

1.5.6 HTTP RESPONSE HEADERS

34

Page 35: internet prgramming-notes

SL. NO

Variable Meaning

1 ALLOWED Specifies to the requesting browser which request methods are allowed. Examples are GET, HEAD and PUT.

2 CONTENT_ENCODING Specifies which encoding method is used. Examples are x-zip, x-stuffit and x-tar.

3 CONTENT_LANGUAGE Specifies the language the returning document is in. An example is “en” which is English in one of its forms.

4 CONTENT_LENGTH Specifies the size in bytes of the returning data.

5 CONTENT_TRANSFER_ENCODING

Specifies the encoding of the data between the web server and the web browser. The default is binary.

6 CONTENT_TYPE Contains the type of the data being transferred. Examples are text/html and image/gif.

7 COST Will contain the cost of the retrieval of the object being requested. The format of this header has not yet been specified.

8 DATE Contains a creation date of the requested object in a valid ARPAET format.

9 DERIVED_FROM Can contain a version number for the requested object, allowing for version control of editable documents.

10 EXPIRES Contains an expiration data for the requested information, after which the document should be retrieved again. This header is used primarily for caching mechanisms and is an ARPANET date format.

11 LAST_MODIFIED Contains the date when the requested object was last modified. This header is in an ARPANET date format.

12 LINK Holds information about the document being returned. You can use it to specify information such as the inclusion of another URL within the

35

Page 36: internet prgramming-notes

returned document or the creator of the returned object.

13 MESSAGE_ID Contains a unique identifier for the HTTP message.

14 PUBLIC Fairly similar to the ALLOW response header. However, it specifies the required methods that anyone can use, not just the requesting browser. Examples for this header are GET, HEAD, and TEXTSEARCH.

15 TITLEContains the title of the document being returned. For an HTML file, this is equivalent to the value contained with in the <TITLE> .. </TITLE> tags.

16 URI Gives the URI where the requested object can be found. This will not always be the URL the user entered in the web browser requesting the returned object. However, it will point to an object that should be the same as the one being returned, with some degree of variance. An example HTTP://www.google.com , version which gives a URI with the same document, which might vary in language or version.

17 VERSION Defines the version of an object that can be changed. Its format is currently undefined.

1.5.6 CGI – COMMON GATEWAY INTERFACE - EXAMPLE

CGI is used to generate web pages dynamically. It is not a programming language. It is an environment which provides facility for executing programs and

SIMPLE CGI PROGRAM

36

Page 37: internet prgramming-notes

<HTML><HEAD><TITLE> CGI EXAMPLE </TITLE></HEAD><BODY> <FORM METHOD = GET ACTION = “/cgi/register.pl”>

Enter your Name <input type = “text” name = nname size = 25> Enter your Mail address <input type = “text” name = nmail size = 10> </FORM>

<input type = “submit” name = “nsubmit”> <input type = “reset” name = “nreset”></FORM> </BODY> </HTML>

1.6.1 SGML – STANDARD GENERALIZED MARKUP LANGUAGE

HTML is an instance of SGML.

SGML was invented in the mid-1970s by Charles Goldfarb at IBM

SGML is now an International Standards Organization (ISO) standard, specifically ISO 8879:1986.

SGML allows the user to create various user defined tags easily without any rules.

1.6.2 XML – EXTENSIBLE MARKUP LANGUAGE

Similar to SGML

Allows the user to create any number of user defined tags.

The value of an attribute may be enclosed in double of single quotes like this:

<H1 ALIGN=CENTER> THIS IS CENTERED H1 HEADING </H1>

STYLES can be introduced for XML program like CSS using XLS file(XML Style Sheet program)

37

Page 38: internet prgramming-notes

Here XML styles are saved with an extension of .xls (XML style sheet)

Using .xls files various styles can be given to the data which is inside the XML program.

1.6.3 XML DATA FILE FOR PRODUCT DETAILS

<PRODUCT MANUFACTURER=”ABC COMPANY”> -Assumed as record name

<NAME> KEY BOARD </NAME> <TYPE> KEY BOARD </TYPE> <PRICE> 1500 </PRICE></PRODUCT

EXAMPLE 2 – XML DATA FILE FOR EMPLOYEE DETAILS<EMPLOYEE”> - Assumed as record name <PRNO> 1001 </PRNO> <NAME> JACK </NAME> <BASIC> 10000 </BASIC> <DA> 3000 </DA> <HRA> 2000 </HRA> <CCA> 500 </CCA> <PF> 1000 </PF> <GROSS> 15500 </GROSS> <NET> 14500 </NET></EMPLOYEE>

<EMPLOYEE”> - Assumed as record name <PRNO> 1002 </PRNO> <NAME> JILL </NAME> <BASIC> 20000 </BASIC> <DA> 3000 </DA> <HRA> 2000 </HRA> <CCA> 500 </CCA> <PF> 1000 </PF> <GROSS> 25500 </GROSS> <NET> 24500 </NET></EMPLOYEE>

<EMPLOYEE”> - Assumed as record name <PRNO> 1005 </PRNO>

38

Page 39: internet prgramming-notes

<NAME> BLACK </NAME> <BASIC> 5000 </BASIC> <DA> 1000 </DA> <HRA> 500 </HRA> <CCA> 500 </CCA> <PF> 1000 </PF> <GROSS> 7000 </GROSS> <NET> 6000 </NET></EMPLOYEE>

HTTP

1. Standard protocol for communication between web browsers and web servers.

2. HTTP specifies how a client and server establish a connection, how the client

requests data from the server, how the server responds to that request, and finally

how the connection is closed.

3. HTTP 1.0 is the currently accepted version of the protocol. It uses MIME to encode data. The basic protocol defines a sequence of 4 steps for each request from a client to the server.

a) Making the connectionb) Making a requestc) Receiving the responsed) Closing the connection

1.6.4 HTTP 1.0 RESPONSE CODES

1. 2xx Successful – between 200 and 299 indicates that the request was received, understood, and accepted.

2. 200 OK - common response code for GET/POST.

3. 201 Created – The server has created a date file at a URL, specified in the body of the response. Now web browser attempt to load that URL.

4. 202 Accepted – request has been accepted

5. 204 No content – The server has successfully processed the request but has no information to send back to the client.

39

Page 40: internet prgramming-notes

6. 3xx Redirection – Response codes from 300 to 399 indicate that the web browser needs to go to a different page.

Note

HTTP 1.1 doubles the number of responses. However, a response code

From 200 to 299 always indicates success; A response code from 300 to 399 always indicates redirection; 400 to 499 indicate client error; 500 to 599 indicate a server error.

1.6.5 APPLETS AND SECURITY

Applets are just more files that are transferred like any other.

Applets are small windows in which the data can be given and data can be displayed also.

WHERE DO APPLETS AND CLASSES COME FROM?

When a browser sees an applet tag and decides to download and play the applet, it starts a long chain of events.

Let’s say your browser sees the following applet tag:

<applet codebase = http://javafaq/classes code = “Animation.class” width = 200 height = 300>

1. The web browser sets aside a rectangular area on the page 200 pixels wide and 300 pixels height.

2. The browser opens a connection to the server specified in the code base parameter, using port 80.

3. The browser requests the .class file from the web server as it requests any other file. If a code base is present, it is prefixed to the requested filename. Otherwise, the document base (the directory that contains the HTML page) is used.

4. The server responds by sending a MIME header followed by a blank line (\r\n) followed by the binary data in the .class file.

40

Page 41: internet prgramming-notes

5. The web browser receives the data and stores it in a byte array.

6. The byte code verifier goes over the byte codes that have been received to make sure they don’t do anything forbidden, such as converting an integer in to pointer.

SECURITY: WHO CAN AN APPLET TALK TO AND WHAT CAN IT SAY?

There is much FUD (fear, uncertainty, and doubt) in the press about what Java applets can and cannot do.

1. Applets cannot access arbitrary addresses in memory. Applet produces output in the form of a Window. Applets are useful in writing programs using AWT (Abstract Window Toolkit) controls.

2. Applets cannot access the local file system in any way. They cannot read from or write to the local file system nor can they find out any information about files.

3. Applets cannot launch other programs on the client. In other words, they can not call Sysem.exec() or Runtime.exec().

4. Applets cannot load native libraries or define native method calls.

5. Applets may not define any system properties.

Finally, most important usage of applets is

1. An applet can only open network connections to the host from which the applet itself was downloaded.

2. An applet cannot listen on ports below 1024 (IE 5.0 does not allow applets to listen on any ports)

3. Even if an applet can listen on a port, it can accept incoming connections only from the host from which the applet itself was downloaded.

END OF UNIT - I

UNIT II – JAVA PROGRAMMING2.1 Java Basics

41

Page 42: internet prgramming-notes

2.2 I/O Streaming 2.3 Files2.4 Looking up Internet Address 2.5 Socket Programming 2.6 Client/Server Programs 2.7 E-mail client2.8 Web Page Retrieval2.9 Protocol Handlers 2.10 Content Handlers2.11 Applets 2.12 Image Handling 2.13 Remote Method Invocation

2.1 JAVA BASICS

Java is related to C++, which is a direct descendant of C. Java derives its syntax from C. Java’s Object oriented features were influenced by C++.

Java is platform independent compiled language.

Java is byte code, Byte code is a highly optimized set of instructions designed to be executed by the Java run time system, which is called Java Virtual Machine (JVM).

A Java program is executed by the JVM solves the major problems associated with web based programs.

Since java programs are executed JVM, which can run on any computer once the run-time package exists for a given system.

CHARACTERISTICS OF JAVA PROGRAM1. Simple2. Secure3. Portable 4. Object Oriented5. Robust6. Multithreaded

7. Architecture-neutral 8. Interpreted

9. High Performance 10. Distributed 11. Dynamic

SIMPLE:

42

Page 43: internet prgramming-notes

Java was designed to be easy for the professional programmer to learn and use effectively.

Object oriented programming language concepts are explained using Java very easily.

OBJECT ORIENTED

Java program describes the basic principles of object oriented programming.

ROBUST

Java is robust because it clears

1. It clears Memory management mistakes

2. It clears Mishandled exceptional conditions

3. It eliminates these problems by managing memory allocation and de-

allocation.

4. It also provides garbage collection for unused objects.

MULTITHREADED

1. To create interactive, networked programs, Java threaded programming.

2. Using multi threading concept multiple process can be executed.

3. Java also maintains smooth synchronization during multi threading process.

ARCHITECTURE NEUTRAL

1. The central issue for the Java designers was code longevity and portability.

2. The main problem is that no guarantee exists that if you write program today, it will run tomorrow – even on the same machine.

3. Operating system upgrades, processor upgrades make a program malfunction. But Java designers made several hard decisions in the Java language and the Java Virtual Machine in an attempt to alter this situation.

4. The main goal of Java program is “Write once, run anywhere, any time, forever”.

43

Page 44: internet prgramming-notes

INTERPRETED AND HIGH PERFORMANCE

1. Java program is compiled in JVM which in turn creates Java byte Code.

2. The Java byte code is cross platform and can run in any machine.

DISTRIBUTED

1. Java is designed for the distributed environment of the Internet because it handles TCP/IP protocols.

2. Java also supports Remote Method Invocation (RMI).

3. RMI method enables a program to invoke methods across a network.

DYNAMIC

1. Java programs carry with them substantial amounts of run time information that is used to verify and resolve accesses to objects at run time.

2. This makes it possible to dynamically link code in a safe and expedient manner.

3. This is crucial to the robustness of the Java environment, in which small fragments of byte code may be dynamically updated on a running system.

2.2 I/O STREAMING

1. I/O in Java is built on streams.

2. Input streams are used to read data; Output streams are used to write data.

3. Different fundamental stream classes such as java.io.FileInputStream and sun.net.TelnetOutputStream can be used to read and write particular sources of data.

4. Filter streams can be chained to an input stream or an output stream.

5. Filters can modify the data as it is read or written – for instance, by encrypting or compressing it.

44

Page 45: internet prgramming-notes

6. Java.io.DataOutputStream class provides a method that converts an integer to four bytes and writes those bytes onto its underlying output stream.

7. Finally, readers and writers can be chained to input and output streams to allow programs to read and write text (that is characters) rather than bytes.

OUTPUT STREAMS

Java’s basic output class is java.io.OutputStream. It takes the following methods:

public abstract class OutputStream

This class provides the fundamental methods needed to write data. The methods in OutputStream classes are:

1. public abstract void write(int b) throws IOException

This method is used to write integer values.

2. public void write(byte[] data) throws IOException

This method is used to write data in the form of bytes.

3. public void write(byte[] data, int offset, int length ) throws IOException

This method is used to write data in bytes. Here while writing the data the Offset value can also be specified. If the Offset values mentioned in write method, the write operation will be performed starting from the Offset value.

4. public void flush() throws IOException

Flush method rescues the user form the deadlock problem by forcing the buffered stream to send its data even if the buffer is not yet full.

5. public void close() throws IOException

This method is used to close the Output stream class.

45

Page 46: internet prgramming-notes

THE FLOW OF BUFFERED STREAM & FLUSH COMMAND

Flush Method

EXPLANATION

The message is sent from the Server to the Client.

If the message in buffer is not enough to send, then it automatically calls Flush

method. The Flush method forces the buffer stream to send the data to Client even if

the buffer is not yet full.

INPUT STREAMS

Java’s basic output class is java.io.InputStream

This class provides the fundamental methods needed to read data. The methods in InputStream classes are as follows:

1. public abstract int read() throws IOException

This method is used to read the data from the buffer.

46

Message is sent from server to client

This message is not enough, so it is waiting to get some more messages

The whole message is sent to the client

WEBSERVER

WEBCLIENT

Buffered OutputStream

Page 47: internet prgramming-notes

2. public int read(byte[] input) throws IOException

The method is used to read byte of information. Here byte refers an array of valaues.

3. public int read(byte[] input, int offset, int length ) throws IOException

This method is used to read byte of information. Offset values and length can also be included.

4. public long skip(long ) throws IOException

The method is used to skip value or values during read operation.

5. public int available() throws IOException

This method is used for checking whether the data is available or not for read operation.

6. public void close() throws IOException

This method is used to close the input stream class.

EXAMPLE PROGRAM FOR READING 10 BYTES FORM INPUTSTREAM

byte[] input = new byte[10];

for (int I = 0; I < input.length; i++){ int b = in.read();

if (b = = -1) break;

input[i] = (byte) b;

}

Here read method is used to read a character at a time.

The value of b becomes -1 if it reaches to the end of file.

47

Page 48: internet prgramming-notes

If the value of b is -1 then the read operation is suspended, because it

reaches to the end of file

MARKING AND RESETTING

The Input Stream class also has three less commonly used methods that allow programs to back up and reread data they’ve already read. These are:

1. public void mark(int readAheadLimit)

2. public void reset() throws IOException

3. public Boolean markSupported()

MARKING

1. Mark the current position in the stream with the mark() method.

2. At a later point, you can reset the stream back to the marked position using the reset() method.

3. Subsequent reads then return data starting from the marked position.

4. If you try to reset back too far, then IOException will be thrown.

5. There can be only one mark in a stream at any given time. Marking a second location erases the first mark.

6. Marking and resetting are usually implemented by storing every byte read from the marked position in an internal buffer.

FILTER STREAMS

1. Input/Output stream are fairly raw classes. They allow you to read and write bytes, either singly or in groups, but deciding what those bytes mean – whether they are integers or IEEE 754 floating numbers or Unicode text is completely up to the programmer and the code.

2. Many files transferred by FTP are stored in the zip format. Java provides a number of filter classes you can attach to raw streams to translate the raw bytes to and from these and other formats.

THE FLOW OF DATA THROUGH A CHAIN FILTERS

48

APPLICATION

Page 49: internet prgramming-notes

Network

BUFFERED STREAMS

49

InputStreamReader

GZIPInputStream

CipherInputStream

BufferedInputStream

TelnetInputStream

Page 50: internet prgramming-notes

The BufferedOutputStream class stores written data in a buffer until the buffer is full or the stream is flushed.

Then it writes the data onto the underlying output stream at the time.

BufferedInputStream class works Similar to BufferedOutputStream class for read operation.

CONSTRUCTORS FOR BUFFERED IN/OUT STREAM CLASSES

1. public BufferedInputStream(InputStream in)

2. public BufferedInputStream(InputStream in, int bufferSize)

3. public BufferedInputStream(InputStream out)

4. public BufferedInputStream(InputStream out, int bufferSize)

PRINTSTREAM CLASS The printStream class is the first filter output stream most programmers encounter’ because System.out is a PrintStream. However, other output streams can also be chained to print streams, using these two constructors:

1. public printStream(OutputStream out)2. public printStream(OutputStream out, Boolean autoflush)

METHODS OF PRINTSTREAM CLASS

It has 9 overloaded print() methods and 10 overloaded println() methods. They are 1. public void print(boolean b)

2. public void print(char b)

3. public void print(int b)

4. public void print(long b)

5. public void print(float b)

6. public void print(double b)

7. public void print(char[] text)

8. public void print(String s)

50

Page 51: internet prgramming-notes

9. public void print(Object o)

10 overloaded println() methods.

1. public void println(boolean b)

2. public void println(char b)

3. public void println(int b)

4. public void println(long b)

5. public void println(float b)

6. public void println(double b)

7. public void println(char[] text)

8. public void println(String s)

9. public void println(Object o)

10. println()

PUSHBACK INPUT STREAM

It is a subclass of FilterInputStream that provides a pushback stack so that a program can “unread” bytes onto the input stream.

The read() and available() methods are invoked exactly as with normal input streams.

public void unread(int b) throws IOException – pushes an unsigned byte given as an int between o and 255 onto the stream.

More unread() methods that push a specified array or sub array onto the stream.

public void unread[byte[] input) throws IOException

public void unread[byte[] input, int offset, int length) throws IOException

DATA STREAMS

51

Page 52: internet prgramming-notes

The DataInputStream and DataOutputStream classes provide methods for reading and writing java’s primitive data types and strings in a binary format.

It has 11 methods for writing a particular java data types. They are

1. public final void writeBoolean(boolean b) throws IOException

2. public final void writeByte(int b) throws IOException

3. public final void writeShort(int s) throws IOException

4. public final void writeChar(int c) throws IOException

5. public final void writeInt(int i) throws IOException

6. public final void writeLong(long l) throws IOException

7. public final void writeFloat(float f) throws IOException

8. public final void writeDouble(double d) throws IOException

9. public final void writeChars(Strong s) throws IOException

10. public final void writeBytes(String s) throws IOException

11. public final void writeUTF(Sring s) throws IOException

COMPRESSING STREAMS

Java .util.zip package contsins filter streams that compress and decompress streams in zip, gzip, and deflate(shrink or reduce) formats.

There are 6 stream classes that perform compression and decompression.

1. public class DeflaterOutputStream extends FilterOutputStream

2. public class DeflaterInputStream extends FilterInputStream

3. public class QDeflaterOutputStream extends FilterOutputStream

4. public class DeflaterOutputStream extends FilterOutputStream

5. public class DeflaterOutputStream extends FilterOutputStream

6. public class DeflaterOutputStream extends FilterOutputStream

DIGEST (assimilate, absorb, grasp, observe) STREAMS

52

Page 53: internet prgramming-notes

The java.util.security package contains two filter streams that can calculate a message digest for a stream.

They are DigestInputStream and Digest-OutputStream.

A message digest, represented in Java by the java.util.security.MessageDigest class, is a strong hash code for the Stream; it is a large integer (typically 20 bytes long in binary format) that can easily be calculated from a stream of any length in such a fashion that no information about the stream is available from the message digest.

A message Digest object that uses a particular algorithm, such as the Secure Hash Algorithm (SHA).

ENCRYPTING STREAMS

CipherInputStream and CipherOutputStream are part of a standard extension to java called the Java Cryptography Extension.

public CipherInputStream(InputStream in, Cipher c)

public CipherOutStream(InputStream in, Cipher c) – used for encryption and decryption respectively.

READERS AND WRITERS

Java’s native character set is the 2-byte Unicode character set. Consequently, Java provides an almost complete mirror of the input and output stream class hierarchy that’s designed for working with characters instead of bytes.

Two abstract super classes define the basic API for reading and writing characters.

The java.io.Reader class specifies the API by which characters are read.

The java.io.Writer class specifies the API by which characters are written.

Wherever input and output streams use bytes, readers and writers use Unicode Characters.

53

Page 54: internet prgramming-notes

The most important sub classes are InputStreamReader and the OutputStreamWriter classes.

In addition java.io.package also includes several raw reader and writer classes that read characters without directly requiring an underlying input stream. They are

1. FileReader

2. FileWriter

3. StringReader

4. StringWriter

5. ChararrayReader

6. CharArrayWriter

WRITERS

The Writer class mirrors the java.io.OutputStream.class. It is abstract class and has two protected constructors. Writer class is never used directly. The various methods of Writer classes are as follows:

1. protected Writer()

2. protected Writer(Object lock)

3. public abstract void write(char[] text, int offset, int length) throws

IOException

4. public void write(int c) throws IOException

5. public void write(char[] text) throws IOException

6. public void write(String s, int offset, int length) throws IOException

7. public abstract void flush() throws IOException

8. public abstract void close() throws IOException

READERS

54

Page 55: internet prgramming-notes

The Reader class mirrors the java.io.InputStream class.

All the classes of writer are applicable to readers also, change read instead of

write operation.

LINENUMBERREADER

The LineNumberReader class replaces the deprecated LineNumberInputStream class from Java 1.0. It’s a subclass of BufferedReader that keeps track of the current line number being read.

Line number can be retrieved at any time with the getLineNumber() method.

public LineNumberReader(Reader in) public LineNumberReader(Reader in, int bufferSize)

Similarly we have

1. PushbackReader2. PrintWriter classes.

THREADS

A thread with a little t is a separate independent path of execution in the virtual machine.

A Thread with a capital T is an instance of the java.lang.Thread class.

There is a one-to one relationship between threads executing in the virtual machine and Thread objects also constructed by the virtual machine.

To start a new thread running in the virtual machine, construct an instance of Thread class and invoke its start() method as follows:

55

1. For creating a Thread

Thread t = new Thread();t.start()

2. To run a ThreadPublic void run()

Page 56: internet prgramming-notes

RACE ALGORITHM

Java Virtual Machine uses different algorithms to allot time to different threads. This is called a race condition.

POLLING

The solution mostly adopt is to have the getter method return a flag value (or perhaps throw an exception) until the result field is set. Then the main thread periodically polls the getter method to see whether it’s returning something other than the flag value.

CALLBACKs

There are more efficient ways to handle the problem. The infinite loop that repeatedly polls each ReturnDigest object to see whether it is finished can be eliminated.

SYNCHRONIZATION

Synchronization is the process of organizing threads in a proper way. That is if one thread is activated another thread will be put into sleep mode. In the next cycle the thread which is in sleep mode is activated now and the other thread is put in to sleep mode.

Synchronization process is very much essential for handling Threads properly.

SYNCHRONIZED BLOCKS

Synchronization must be considered any time multiple threads share same resources. These threads may be instances of the same Thread subclass or use the same Run able class, or they may be instances of completely different classes.

ALTERNATIVES TO SYNCHRONIZATION

Synchronization is not always the best possible solution to the problem of inconsistent behavior as a result of thread scheduling. There are a number of techniques you can use to avoid the need for synchronization.

56

Page 57: internet prgramming-notes

1.1 Use local variables instead of fields wherever possible. Local variables do not have synchronization problems.

1.2 String arguments are safe because they are immutable that is, once a string object has been created, it cannot be changed by any thread. An immutable object never changes its state.

1.3 A third technique is to use a thread unsafe class but only as a private field of a class that is thread-safe. As long as the containing class accesses the unsafe class only in a thread –safe fashion, and as long as it never lets a reference to the private field leak out into another object, the class is safe.

1.4 Each separate thread its own separate log so that no resources were shared between the individual threads.

DEADLOCK

Deadlock occurs when two threads each need exclusive access to the same set of resources, but each thread possesses a different subset of those resources.

THREAD SCHEDULING

1. The order in which the threads are executed is called thread scheduling.2. It is used to schedule the thread one by one without overlapping.3. If the scheduling is not proper it may lead to errors.

PRIORITIES

1. Each thread has a priority that’s specified as an integer from 1 to 10. When multiple threads are able to run, generally the VM will run only the highest-priority thread, though that’s not a hard-and-fast rule.

2. public static final int MIN_PRIORITY = 1; public static final int MIN_PRIORITY = 5; public static final int MIN_PRIORITY = 10;

The priority which has 10, 5 and 1 will get executed in order.

Thread scheduling is divided into

57

Preemptive -> It is Possible to alter the sequence in the middle

NonPreemptive -> It is not possible to alter the sequence.

Page 58: internet prgramming-notes

THERE ARE 10 WAYS A THREAD CAN PAUSE IN FAVOR OF OTHER THREADS OR INDICATE THAT IT IS READY TO PAUSE.

They are as follows:

1. It can block on I/O2. It can block on a synchronized object3. It can yield4. It can go to sleep5. It can join another thread6. It can wait on an object7. It can finish8. It can be preempted by a higher-priority thread.9. It can be suspended10. It can be stopped

BLOCKING

Blocking occurs at any time a thread has to stop and wait for a resource it doesn’t have.

The most common way a thread in a network program will voluntarily give up control of the CPU is by blocking on I/O.

Threads can also block when they enter a synchronized method or block.

YIELDING

The second way for a thread to give up control is to explicit yield.

A thread does this by invoking the static Thread.yield() method

public static void yield()

58

Page 59: internet prgramming-notes

SLEEPING

Sleeping is more powerful form of yielding. Whereas yielding indicates only that a thread is willing to pause and let other equal-priority threads have a turn, a thread that goes to sleep will pause whether any other thread is ready to run or not.

Sometimes sleeping is useful even if you don’t need to yield to other threads. Putting a thread to sleep for a specified period of time lets you write code that executes one every second, every minute, every ten minutes, and so forth.

Thread.sleep() – used to put the thread in sleep mode.

JOINING THREADS – used to join two threads.

Public final void join(long milliseseconds) throws InterrupteException

Public final void join(long milliseseconds, int nanoseconds) throws InterrupteException

WAITING ON AN OBJECT

A thread can wait on an object it has locked.

While waiting, it releases the lock on the object and pauses until it is notified by some other thread.

Another thread changes the object in some way, notifies the thread waiting on that object, and then continues.

It remains asleep until one of three thing happens

1. The timeout expires2. The thread is interrupted3. The object is notified.

THREAD POOLS

1. Adding multiple threads to a program dynamically improves performance, especially for I/O – bound programs such as most network programs.

2. Even if the threads finish quickly, this can overload the garbage collector or other parts of the VM, and hurt performance.

59

Page 60: internet prgramming-notes

2.3 FILES

Java provides a number of classes and methods that allow the user to read and write files.

In java, all files are byte-oriented, and Java provides methods to read and write bytes from and to a file.

The common file stream classes are FileInputStream and FileOutputStream, which create byte streams linked to files. The following methods are used in files.

FileInputStream(String filename) throws FilenotFoundException

FileOutputStream(String filename) throws FilenotFoundException

Here,

filename specifies the name of the file that you want to open.

When you create an input stream, if the file does not exist, then FileNotFoundException is thrown.

When the file operations are over then close it by calling close(). It is defined by both FileInputStream and FileOutputStream classes. The close method takes the following form.

void close() throws IOException

read() returns -1 when the end of the file is encountered.

60

Page 61: internet prgramming-notes

2.4 LOOKING UP INTERNET ADDRESSES

DNS, IP ADDRESSES

1. Devices connected to the Internet are called nodes.

2. Nodes that are computers are called hosts.

3. Each node or host is identified by at least one unique 32-bit number called an Internet address.

4. An IP address is normally written as four bytes of memory, each ranging from 0 to 255.

5. For example 152.255.6.9 is called the dotted quad format.

6. To avoid the complexity of IP address problem, the designers of the Internet invented the domain Name System (DNS).

IPv6 AND 128-bit Addresses

The current IP address standard uses 32 bits, which is enough to address more than four billion computers, almost one for every person on earth.

A new standard called IPv6 will begin using 16-byte, 128-bit addresses.

This expands the available address space to 2128 or 1.6043703E32 different addresses.

THE INETADDRESS CLASS The java.net.InetAddress class is Java’s encapsulation of an IP address.

It is used by most of the other networking classes, including Socket, ServerSocket, URL, DatagramSocket, DatagramPacket, and more.

CREATING NEW INETADDRESS OBJECTS

1. public static InetAddress InetAddress.getByname(String hostname) throws UnknownHostException

61

Page 62: internet prgramming-notes

2. public static InetAddress[] InetAddress.getAllByname(String hostname) throws UnknownHostException

3. public static InetAddress InetAddress.getLocalHost() throws UnknownHostException

Method 1 – Used most frequently. This is a static method that takes the hostname you’re looking for as its argument. It looks up the host’s IP address using DNS.Call getByname() method.

Example – InetAddress address = InetAddress.getByname(www.oreilly.com);

Method 2 – Some computers have more than one Internet address. Given a hostname, it returns an array that contains all the addresses corresponding to that name.

Method 3 – Contains one final means of getting an InetAddress object. It returns the IP address on which it’s running.

Byte 0 Byte 1 Byte 2 Byte 3A 0 N/W HOSTB 1 0 N/W C 1 1 0 N/W HOSTD 1 1 1 0 Multi cast groupE 1 1 1 1 0 Reserved for feature use

THE COMMON LOG FILE FORMAT

Web server logs track the hosts that access a web site. By default, the log reports the IP addresses of the sites that connect to the server.

However, you can often get more information from the names of those sites than from their IP address.

1. remotehost – is either the hostname or IP address from which the browser connected.

2. rfc931 – username of the user on the remote system, as specified by Internet protocol RFC 931.

3. authuser – is the authentication username as specified by RFC931.

4. [date] – the date and time of the request are given in brackets.

62

Remotehost rfc931 authuser [date] “request” status bytes

Page 63: internet prgramming-notes

5. “request” – request from the client

6. status – This is a numeric HTTP status code returned to the client.

7. bytes – This is the number of bytes of data that was sent to the client as a result of this request.

RETRIEVING DATA WITH URLs

1. The simplest way for a Java program to locate and retrieve data from the network is to use the URL class.

2. User do not need to worry about the details of the protocol being used, the format of the data being retrieved, or how to communicate with the server; you simply tell Java the URL, and it gets the data for you.

THE URL CLASS

The java.net.URL class is an abstraction of a Uniform Resource Locator like ftp://ftp.redhat.com/pub.

It extends java.lang.object, and it is final class that cannot be subclassed.

The URL class itself forms the context through which the different strategies are selected.

public final class URL extends object implements Serializable

CREATING NEW URLs

The simplest URL constructor just takes an absolute URL in string form as its single argument

Public URL(String url) throws MalformedURLException Try { URL u = new URL(http://www.macfaq.com/personal.html); } catch (MalformedURLException e) { System.err.println(e) }

63

Page 64: internet prgramming-notes

METHODS OF URL

URL provides the following five public methods. They are as follows:

1. getFile()2. getHost()3. getPort()4. getProtocol()5. getRef() 6. getAuthority()

1. getProtocol() – method returns a String containing the scheme of the URL. For example http,https or file.

2. getHost() – method returns a String containing the hostname of the URL.

3. getPort() – method returns the port number specified in the URL as an int. If no port was specified in the URL, then getport() returns -1 to signify that the URL does not specify the port explicitly, and will use the default port for the protocol.

4. getFile() – method returns a String that contains the path and file portion of a URL; remember that java does not break a URL into separate path and file parts.

5. getRef() – method returns the named anchor part of the URL. If the URL does not have a named anchor, the method returns null.

6. getQuery() – method returns the query of the URL,

7. getAuthority() – Between the scheme and the path of a URL, you will find the authority. The term authority is taken from the URI specification (RFC 2396), where this part of the URI indicates the authority that’s resolvind the resource.

RETRIEVING DATA FROM A URL

Data can be retrieved using URL class.

The URL class has three methods (four in java 1.3) to retrieve data from a URL. They are

1. public final InputStream openStream() throws IOException

2. public URLConnection openConnection() throws IOException

64

Page 65: internet prgramming-notes

3. public final Object getContent() throws IOException

4. public final Object getContent[class[] classes) throws IOException

OpenStream() – method connects to the resource referenced by the URL, performs any necessary handshaking between the client and the server, and then returns an InputStream from which data can be read.

Openconnection() – method opens a socket to the specified URL and returns a URLConnection object.

An URLConnection represents an open connection to a network resource. If the call fails, openConnection() throws an IOException.

getContent() – method is the third and final way to download data referenced by a URL. The getContent() method retrieves the data referenced by the URL and tries to make it into some type of object.

Object getContent[class[] classes – Starting with JDK1.3, it is possible for a content handler to provide different views of an object. This overloaded variant of the getContent() method lets you choose what class you’d like the content returned as.

UTILITY METHODS

1. The URL class contains a couple of utility methods that perform common operations on URLs.

2. The samefile() method tests whether two URL objects point to the same file. If they do, the sameFile() returns true, otherwise, it returns false.

3. equals(Object o) – An object is equal to a URL only if it is also a URL, both URLs point to the same file as determined by the sameFile() method, and both URLs have the same ref(or both URLs have null refs).

4. hashCode() – method returns an int that is used when URL objects are used as keys in hash tables. Thus, it is called by the various methods of java.util.Hashtable.

THE URLEncoder and URLDecoder Classes

One of the problems that the designers of the web faced was differences between local operating systems.

65

Page 66: internet prgramming-notes

To solve these problems, characters used in URLs must come from a fixed subset of ASCII, in particular:

1. The capital letters A-Z2. The lowercase letters a-z3. The digits 0-94. The punctuation characters -,!, @, #, $, * ‘ (and ,)

URLEncoder

The java.net.URLEncoder class contains a single static method called encode() that encodes a String according to these rules.

The java.net.URLDecoder class contains a single static method called encode() that decodes a String according to these rules:

Public static String encode(String s) and static String decode(String s) methods can be used to encoding and decoding strings respectively.

COMMUNICATING WITH CGIs AND Servlets through GET METHOD

1. The URL class makes it easy for Java applets and applications to communicate with server-side CGI programs and servlets that use the GET method.

2. CGI programs and servlets that use the POST method require the URLConnection class.

3. Study the coding for creating textbox, checkbox, label, radio button and checkbox elements.

ACCESSING PASSWORD-PROTECTED SITES

Java.net package includes an Authenticator class that can be used to provide a username and password for sites that provide themselves using HTTP authentication.

Since Authenticator is an abstract class, you must subclass it.

To make the URL class use your subclass, you install it as the default authenticator by passing it to the static Authenticator.setDefault() method.

Authenticator.setDefault(new DialogAuthenticator())

66

Page 67: internet prgramming-notes

2.5 SOCKET PROGRAMMING

SOCKETS FOR CLIENTS

DATAGRAMS

Data is transmitted across the Internet in packets of finite size called datagrams.

Each datagram contains a header and payload.

The header contains the address and port to which the packet is going, the address and port from which the packet came, and various other house keeping information used to ensure reliable transmission.

Sockets are an innovation of Berkely Unix that allow the programmer to treat a network connection as just another stream onto which bytes can be written and from which bytes can be read.

Sockets shield the programmer from low-level details of the network, such as media types, packet sizes, packet transmission, network address, and more.

SOCKET BASICS

A socket is a connection between two hosts. It can perform 7 basic operations:

1. Connect to a remote machine2. Send data3. Receive data4. Close a connection5. Bind a port6. Listen for incoming data7. Accept connections from remote machine on the bound port

Java programs normally use client sockets in the following fashion

1. The program creates a new socket with a Socket() constructor.

2. The socket attempts to connect to the remote host.

67

Page 68: internet prgramming-notes

3. Once connection is established, the local and remote hosts get input and output streams from the socket and use those streams to send data to each other.

4. This connection is full-duplex; both hosts can send and receive data simultaneously.

5. There will normally be some agreed-upon hand-shaking followed by the transmission of data from one to the other.

6. When the transmission of data is complete, one or both sides close the connection. Some protocols, such as HTTP 1.0, require the connection to be closed after each is serviced.

7. FTP, allows multiple requests to be processed in a single connection.

THE SOCKET CLASS

1. The java.net.Socket class is Java’s fundamental class for performing client-side TCP operations.

2. Each lets you specify the host and the port you want to connect to.

3. Hosts may be specified as an InetAddress or a String.

4. Ports are always specified as integer values from 0 to 65,535.

CONSTRUCTERS USED FOR CREATING SOCKETS

1. public Socket(String host, int port) throws UnknownHostException, IOException

Creates a TCP socket to the specified port on the specified host and attempts to connect to the remote host.

2. public Socket(InetAddress host, int port) throws IOException

This constructor creates a TCP socket to the specified port on the specified host and tries to connect. It differs by using an InetAddress object.

3. public Socket(String host, int port, InetAddress interface, int localPort) throws IOException

This constructor creates a socket to the specified port on the specified host and tries to connect. It connects to the host and port specified in the first two arguments.

68

Page 69: internet prgramming-notes

4. public Socket(InetAddress host, int port, InetAddress interface, int localPort) throws IOException

Identical to the previous one except that the host to connect to is passed as an InetAddress, not a String. It creates a TCP socket to the specified port on the specified host from the specified interface and local port, and tries to connect.

GETTING INFORMATION FROM SOCKET

1. public InetAddress getInetAddress() – Tells which remote host the Socket is connected, if the connection is closed or not.

2. public int getPort – Tells the port number in which the socket is connected.

3. public int getLoalPort() - There are two ends to a connection: the remote host and the local host. It is used for getting the local port number.

4. public InetAddress getLocalAddress() – returns the address of the local host.CLOSING THE SOCKET

Public synchronized void close() throws IOException – is used to close the socket.

SETTING SOCKET OPTIONS

Socket options specify how the native sockets on which the Java Socket class relies to send and receive data. The following options can be used to set sockets.

TCP_NODELAY – ensures that packets are sent as quickly as possible regardless of their size.

SO_BINDADDR

SO_TIMEOUT – ensure that the call will not block for more than a fixed number of milliseconds.

SO_LINGER – option specifies what to do with datagrams that have not yet been sent when a socket is closed.

69

Page 70: internet prgramming-notes

SO_SNDBUF – used to get and set the suggested send buffer used for network output.

SO_RCVBUF – Most TCP stacks use buffers to improve network performance, say 10 Mbps and up.

SO_KEEPALIVE – is turned on, then the client will occasionally send a data packet over an idle connection, off terminates the data transfer.

FINGER Finger is a straightforward protocol described in RFC 1288.

The client makes a TCP connection to the server on port 79 and sends a one line query.

The server responds to the query and closes the connection.

The format of the query precisely, defied, the format of the response somewhat less so.

The data transferred is pure printable and ASCII text.

WHOIS

Whois is a simple directory service protocol defined in RFC 954.

It was originally designed to keep track of administrators responsible for Internet hosts and domains.

A whois client connects to one of several central servers and requests directory information for a person or persons; it can usually give you a phone number, and email address, and a U.S. mail address (not necessarily current ones though).

THE STRUCTURE OF WHOIS PROTOCOL

The client opens a TCP socket to port 43 on the server whois.internic.net.

When you are using whois, you almost always connect to this server; there are a few other servers, but these are relatively rare.

But there is a separate whois server for the U.S. department of Defencse.

70

Page 71: internet prgramming-notes

1. The client sends a search string terminated by a carriage return/linefeed pair (/r/n). You can also search for domain names, like oreilly.com or netscape.com, which give you information about a network.

2. The server sends an unspecified amount of human-readable information in response to the command and closes the connection.

3. The client displays this information to the user.

THE FOLLOWING TABLE SHOWS PREFIX SHOULD BE PLACED BEFORE SEARCH STRIND ON THE COMMAND LINE.

Prefix MeaningDomain Find only domain recordsGateway Find only gateway recordsGroup Find only group recordsHost Find only host recordsNetwork Find only network recordsOrganization Find only organization recordsASN Find only Autonomous System Number recordsFull or = Show complete record for each matchPerson Find only person recordsSUBdisplay % Show the users of the specified host, the hosts on the specified network etc.

SOCKETS FOR SERVERS

The ServerSocket() class contains everything you need to write servers in Java. It has constructors that create new ServerSocket objects, methods that listen for connection on a specified port, and methods that return a Socket object when a connection is made so that you can send and receive data.

THE SERVERSOCKET CLASS

The basic life cycle of a server is

1. A new ServerSocket created on a particular port using a ServerSocket() constructor.

71

Page 72: internet prgramming-notes

2. The ServerSocket listens for incoming connection attempts on that port using its accept() method. Accept() blocks until a client attempts to make a connection, at which point accept() returns a socket object connecting the client and server.

3. Depending on the type of server, either the socket’s getInputStream() method, getOutputStream() method, or both are called to get input and output streams that communicate with the client.

4. The server and the client interact according to an agreed-upon protocol until it is time to close the connection.

5. The server, the client, or both close the connection.

6. The server returns to step 2 and waits for the next connection.

THE CONSTRUCTORS FOR SERVERSOCKET

There are 3 public ServerSocket constructors

1. public ServerSocket(int port) throws IOException

2. public ServerSocket(int port, int quuelength) throws IOException, BindException

3. public ServerSocket(int port, int quuelength, InetAddress bindaddress) throws IOException

Method 1 This constructor creates a server socket on the port specified by the argument. If you pass 0 for the port number, the system selects an available port for you. A port chosen for you by the system is called an anonymous port since you don’t know it number.

Method 2 This constructor creates a ServerSocket on the specified port with a queue length of you choosing.

Method 3 Along with method 2 it also binds the specified IP address.

HTTP SERVERS

1. HTTP is a large protocol.

72

Page 73: internet prgramming-notes

2. A full featured HTTP server must respond to requests for files, convert URLs into file-names on the local system.

3. It also respond to POST and GET requests, handle requests for files that don’t exist, interpret MIME types, launch CGI programs.

4. Our investigation of HTTP servers begins with a server that always sends out the same file, no matter who or what the request.

A FULL-FLEDGED HTTP SERVER

1. HTTP server can serve an entire document tree, including images, applets, HTML files, and more.

2. This server is called full fledged server.

SECURE SOCKETS

1. Confidential communication through an open channel such as the public Internet that nonetheless resists eavesdropping absolutely requires that the data be encrypted.

2. In traditional secret key (or symmetric) encryption, the same key is used both to encrypt and decrypt the data.

3. In public key (or asymmetric) encryption, different keys are used to encrypt and decrypt the data. One key, called the public key, is used to encrypt the data. This key can be given to anyone.

METHODS OF THE SSL Socket Class (Secure Socket Layer socket class)

The SSLSocket class has a number of methods for configuring exactly how much and what kind of authentication and encryption is performed.

EVENT HANDLERS

Network communications are slow compared to the speed of most computers. Authenticated network communications are even slower

JSSE(Java Secure Socket Extension) uses the standard event model to notify programs when the handshaking between client and server is completes.

It can be implemented using HandshakeCompletedListener interface.

73

Page 74: internet prgramming-notes

Public interface HandshakecompledListener extends java.util.EventListner

SESSION MANAGEMENT SSL is most commonly used on web servers.

Web connections tend to be transitory(fleeting or temporary)

Using JSSE, you don’t need to do anything extra to take advantage of sessions.

Using session various informations can be retrieved using the following methods.

1. public byte[] getId()

2. public SSLSessionContext getSessionContext()

3. public long getCreateation()

4. public long getLastAccessdTime()

5. public void invalidate()

6. public void removeValue(String name)

UDP DATAGRAMS AND SOCKETSUDP PROTOCOL

UDP – User Datagram protocol is an alternative protocol for sending data over IP that is very quick, but not reliable.

That is, when you send UDP data, you have no way of knowing whether it arrived, much less whether different pieces of data arrived in the order in which you sent them.

THE STRUCTURE OF UDP DATAGRAM

0 4 8 12 16 20 24 28 31Version Header

LengthType of service Datagram length

Identification Flags Fragment offset

Time-to-live(TTL) protocol Header checksumSource address

Destination addressoptions

Source (0 – 65535) Destination port (0 – 65535)Combined length of data and UDP header(8 – 65535)

Destination port (0 – 65535)

74

Page 75: internet prgramming-notes

Data CONSTRUCTORS FOR RECEIVING DATAGRAMS

The following constructors create a new DatagramPacket objects for receiving data from the network.

1. public DatagramPacket(byte[] buffer, int length)

2. public DatagramPacket(byte[] buffer, int offset, int length) CONSTRUCTORS FOR SENDING DATAGRAMS

The following constructors create a new DatagramPacket objects for sending data across the network.

1. public DatagramPacket(byte[] data, int length, InetAddress destination, int port)

2. DatagramPacket(byte[] data, int offset, int length, InetAddress destination, int port)

DATA GRAM METHODS It has 5 methods that retrieve different parts of a datagram. The actual data plus several fields from its header. These methods are mostly used for datagrams you receive from the network.

1. public InetAddress getAddress(): Returns InetAddress object containing the address of the remote host.

2. public int port(): Returns an integer specifying the remote port.

3. public byte[] getData[]: Method returns a byte array containing the data from the datagram.

4. public int getLength() – method returns the number of bytes of data in the datagram.

5. public int getOffset() – returns the point in the array returned by getData() where the data from the datagram begins.

DATA GRAM SET METHODS

1. public void setData(byte[] data) – changes the payload of the UDP datagram.

75

Page 76: internet prgramming-notes

2. public void setData(byte[] data, int offset, int length) – alternative method for sending large amount of data.

3. public void setAddress(InetAddress remote) – lets you change the address a datagram packet is sent to.

4. public void setPort(int port) – changes the port a datagram is addressed to.

5. public void setLength(int length) – changes the number of bytes of data in the internal buffer that are considered to be part of the datagram’s data as opposed to merely unfilled space.

SENDING AND RECEIVING DATA GRAMS

public void send(DatagramPacket dp) throws IOException – for sending datagram packet.

ublic void receive(DatagramPacket dp) throws IOException – for receiving datagram packet.

MULTICAST SOCKETS/UNICAST SOCKETS

Unicast socket provides point-to-point communication.

Unicast sockets create a connection with two well-defined endpoints.

There is one sender and one receiver, and although they may switch roles, at any given time it is easy to tell which is which.

UNICAST SOCKETS

Multicasting sends data from one host to many different hosts, but not to everyone.

The data goes only to clients that have expressed an interest in the data by joining a particular multicast group.

Protocols require broadcasts only when there is no alternative, and routers limit broadcast to the local network or subnet, preventing broadcasts from reaching the Internet at large.

Inicast is useful during Real Audio, Video broadcasting.

76

Page 77: internet prgramming-notes

COVERAGE OF PACKET WITH A TTL OF 5

CAMPUSWORLD

Packet dies

COMMON PERMANENT MULTICAST ADDRESS

Domain name IP address PurposeBASE-ADDRESS.MCAST.NET 224.0.0.0 The reserved base address. This is never

assigned to ay multicast group

ALL-SYSTEMS.MCAST.NET 224.0.0.1 All systems on the local subnet

ALL-ROUTERS.MCAST.NET 224.0.0.2 All routers on the local subnet

AVMRP.MCAST.NET 224.0.0.4 All distance vector multicast routing protocol (ADVMRP) routers on this

77

0

1

234

5 4 3 21

0

43

21

32

1

2

Page 78: internet prgramming-notes

subnet.

MOBILE-AGENT.MCAST.NET 224.0.0.11 Mobile agents on the local subnet.

CLIETNS AND SERVERS IN NULTICAST GROUP

1. When a host wants to send data to a multicast group, it puts that data in multicast datagrams, which are nothing more than UDP datagrams addressed to a multicast group.

2. Most multicast data is either audio or video, or both.

3. If few pixels or even a whole frame of video is lost in transit, the signal isn’t blurred beyond recognition.

4. Therefore, multicast data is sent via UDP, which, though unreliable, can be as much as three times faster than data sent via connection-oriented TCP.

ESTIMATED TTL VALUES FOR DATAGRAMS ORIGINATING IN CONTIENTAL US

DESTINATION TTL VALUE TO USEThe local host 0The local subnet 1The local campus – that is, the same side of the nearest Internet router – but on possible different LANs

16

High band width sites 32The United States 48North America 64High bandwidth sites worldwide 128All sites worldwide 255

ROUTERS AND ROUTING

A multicast socket sends one stream of data over the Internet to the clients’ router.

The router duplicates the stream and sends it to each of the clients.

Without multicast sockets, the server would have to send four separate but identical

streams of data to the router, which would route each stream to a client.

78

Page 79: internet prgramming-notes

Using the same stream to send the same data to multiple clients significantly reduces

the bandwidth required on the Internet backbone.

With Multicast Socket With out Multicast Sockets

Clients clients

-----------------------------------------------------------------------------------------------------------

Router

------------------------------------------------------------------------------------------------------------- THE INTERNET

Router---------------------------------------------------------------------------------------------------------------Server

Just create a Multisocket, have the socket join a multicast group, and stuff the address of the multicast group in the DatagramPacket you want to send.

The routers and the MulticastSocket class take care of the rest.

The biggest restriction on multicasting is the availability of special multicast routers (mrouters).

Mrouters are reconfigured internet routers or workstations that support the IP multicast extension.

79

Page 80: internet prgramming-notes

Multicasting is supported in the built-in TCP stack of Microsoft Windows 95, 98 and NT.

On Macs, multicasting is supported by Open Transport but not by MacTCP.

Pinging in multicasting can be done using all-routers.mcast.net.

CONSTRUCTORS IN MULTICASTING

1. public MulticastSocket() throws SocketException

2. public MulticastSocket(int port) throws SocketException – receives datagram on a well known port.

COMMUNICATING WITH A MULTICAST GROUP

Once a Multicast Socket has been created, it can perform four key operations. These are

1. Join a multicast group2. Send date to the members of the group3. Receive data from the group4. Leave the multicast group

THE URL CONNECTION CLASS

URLConnection is an abstract class that represents an active connection to a resource specified by a URL.

The URLConnection class has two different but related purposes.

First it provides more control over the interaction with a server than the URL class.

With a URLConnection, you can inspect the MIME headers sent by an HTTP server and respond accordingly.

Second, the URLConnection class is part of Java’s protocol handler mechanism, which also includes the URLStreamHandler class.

OPENING URLCONNECTION: A program that uses the URLConnection class directly follows this basic sequence of steps.

1. Construct a URL object

80

Page 81: internet prgramming-notes

2. Invoke the URL object’s openconnection() method to retrieve a URLConnection object for that URL.

3. Configure the URLConnection

4. Read the header fields.

5. Get an input stream and read data.

6. Get an output stream and write data.

7. Close the connection.

SYNTAX

try{ URL u = new URL(http://www.gogle.com);

URLConection uc = u.openConnection();}

catch (IOException e){ System.err.println(e);}

EXAMPLE FOR URL CONNECTION IMPLEMENTATION

JAVA PROGRAM TO DISPLAY THE CONTENTS OF THE HOME PAGE

UrlConnection.java

// Demonstrate URLConnection

import java.net.*;import java.io.*;import java.util.Date;

81

Page 82: internet prgramming-notes

class UrlConnection{ public static void main(String args[]) throws Exception { int c; URL hp = new URL("http://www.google.com"); URLConnection hpCon = hp.openConnection();

System.out.println("Date : " + new Date(hpCon.getDate()));

System.out.println("Content-Type : " + hpCon.getContentType());

System.out.println("Expires : " + hpCon.getExpiration());

System.out.println("Last-Modified : " + new Date(hpCon.getLastModified()));

int len = hpCon.getContentLength();

System.out.println("Content-Length : " + len);

if(len > 0) { System.out.println("=========Content ========="); InputStream input = hpCon.getInputStream(); int i = len;

while (((c = input.read()) != -1) && (--i > 0))

{

System.out.print((char) c); }

input.close(); }

else { System.out.println("No content Available "); } }}

82

Page 83: internet prgramming-notes

EXPLANATION

1. getDate()- Returns the date.

2. getContentType()- Returns the type of Content, for example whether text/html document.

3. getExpiration()- Returns 0 if the web site is not expired.

4. getLastModified()- Returns the date in which the web site is modified.(Latest date of modification)

RETRIEVING SPECIFIC MIME HEADER FIELDS

1. public String getContentType() – returns the MIME content type of the data.

2. public String getContentLength() – returns the MIME content length in bytes.

3. public String getContentEncoding() – returns a String that tells you how the content is encoded.

4. public long getDate() – methods returns a long that tells you when the document was sent, in milliseconds since midnight, GMT.

5. public long getExpiration – Some documents have server-based expiration dates that indicate when the document should be deleted from the cache and reloaded from the server.

6. public long getLastModified() – returns the date on which the document was last modified.

83

Page 84: internet prgramming-notes

2.6 CLIENT SERVER PROGRAMS

2.6.1 HTTP SERVER PROGRAM

import java.net.*;import java.io.*;class WebServer{ public static void main(String args[]) { ServerSocket serversocket= null;

Socket clientSocket = null; int connects=0; try { //Create the serverSocket serversocket = new ServerSocket(80,5); while(connects<5)

{ clientSocket = serversocket.accept();

ServiceClient(clientSocket); connects++; } serversocket.close(); } catch(IOException ioe) { System.out.println("Error in Simple Webserver:" + ioe); }} public static void ServiceClient(Socket client) throws IOException{ DataInputStream inbound =null; DataOutputStream outbound=null; try {//Accquire the streams for IO

inbound = new DataInputStream(client.getInputStream()); outbound=new DataOutputStream(client.getOutputStream()); //Format the output(response header and tiny HTML Document

84

Page 85: internet prgramming-notes

StringBuffer buffer=new StringBuffer("<html> <body> <p>Welcome to Sample WebServer </body> </html>"); String inputLine; while((inputLine=inbound.readLine())!=null) { if(inputLine.equals("")) { outbound.writeBytes(buffer.toString()); break;

} } }finally{ //cleanup

System.out.println("Cleaning up connectiojn:"+client); outbound.close(); inbound.close(); client.close(); client.close();}}}

HTTP CLIENT PROGRAM

import java.io.*;import java.net.*;public class WebClient{ public static void main(String args[]) { try { Socket clientSocket1=new Socket("localhost",80); System.out.println("Client1:"+clientSocket1); getPage(clientSocket1); } catch(UnknownHostException uhe) { System.out.println("UnknownHostException:"+uhe); }

85

Page 86: internet prgramming-notes

catch(IOException ioe) { System.out.println("IOxception"+ioe); } }public static void getPage(Socket clientSocket){ try { DataOutputStream outbound=new DataOutputStream(clientSocket.getOutputStream()); DataInputStream inbound=new DataInputStream(clientSocket.getInputStream()); outbound.writeBytes("GET/HTTP/1.0\r\n\r\n"); String responseLine; while((responseLine=inbound.readLine())!=null) { System.out.println(responseLine); if(responseLine.indexOf("</HTML>")!=1) break; } outbound.close(); inbound.close(); clientSocket.close(); }catch(IOException ioe) { System.out.println("IOException:"+ioe); }}}

2.6.2 FTP SERVER PROGRAM

import java.lang.*;import java.net.*;import java.io.*;

class server{ public static void main(String args[])throws IOException {

86

Page 87: internet prgramming-notes

String str=new String(); String str1=new String(); int c;

int l; str="\0"; ServerSocket ss=new ServerSocket(2555); Socket s=ss.accept(); InputStream in=s.getInputStream(); OutputStream out=s.getOutputStream(); int i=in.read(); for(int j=0;j<i;j++) { c=in.read(); str1=str1+((char)c); } System.out.println(str1);

System.out.println("\n\tContents of file are:\n");

FileInputStream fin=new FileInputStream(str1);

do{

l=fin.read();if(l!=-1){

System.out.println((char)l);

}}while(l!=-1);fin.close();s.close();

ss.close(); } }

87

Page 88: internet prgramming-notes

FTP CLIENT PROGRAM

import java.lang.*;import java.net.*;import java.io.*;

class client{ public static void main(String args[])throws IOException { String str=new String();

int c;BufferedReader br=new BufferedReader(new

InputStreamReader(System.in));InetAddress a=InetAddress.getLocalHost();Socket s=new Socket(a,2555);

InputStream in=s.getInputStream();OutputStream out=s.getOutputStream();System.out.println("Enter the filename to be read");

str=br.readLine();int i=str.length();

out.write(i);byte buf[]=str.getBytes();

out.write(buf);s.close();

System.out.println("FILE SENT"); } }

2.7 E-MAIL CLIENT

What is E-mail?

Email is an electronic message sent form one computer to another. User can send or receive email information at any time. Email can be personal or business

88

Page 89: internet prgramming-notes

related information. Email may be sent or receive with or without an attachment. Attachment can be any file pictures or photographs text file memo etc. If email contains any attachments, attachments can be viewed using word or additional tools like notepad or Internet Explorer.

Using email we can send even music and computer programs.

Using email the following tasks can be done. They are

1. Send messages or memos or greetings for any special occasions.2. Receive or read messages3. Reply to messages4. Forward messages5. Send the same message to multiple persons at the same time6. Attach a text file or images7. Save mail to a file and print the mail messages

EMAIL ADDRESS

Email can be sent using a specified channel called an email address.

The format of email address organization-name@domain-name

For example google.com

Where goggle is name of the company or an organization name

Some of the domain names and its descriptions are given below.

Domain Example Description.com Yahoo.com Commercial organization as well as individuals.net Microsoft.net ISP & Network related companies.org Microsof.org Non commercial organization.gov Senate.gov Government agencies.mil Army.mil Military.edu Annauniv.edu Educational institution.web Web based companies.tv Television channel.info Information site

Two letters after period (.) can be used to segregate between the countries. Examples are as given below:

89

Page 90: internet prgramming-notes

.au yahoo.co.au Australia

.us yahoo.co.us US

.uk yahoo.co.uk United Kingdom

.in yahoo.co.in India

.ca yahoo.co.ca Canada

RETRIEVING ARBITARY MIME HEADER FIELDS

The previous 6 methods specific commands from a MIME header. But the following methods inspect arbitrary fields in a MIME header.

1. public String getHeaderFieldKey(String name) – returns the key value of a named MIME header field.

2. public String getHeaderField(int n) – This method returns the key of the nth MIME header field

3. public String getHeaderField(int n) – returns the value of the nth MIME header field. The request method is header field zero, and the first actual header is one.

4. public long getHeaderFieldDate(String name, long default) – This method retrieves the value of the MIME header field name and tries to convert it to an int. If fails, either because it can’t find the requested header field or because that field does not contain a recognizable integer, then getHeaderFileInt() returns the default argument.

PROTOCTED URL

1. The url field specifies the URL that the URLConnection connects to.

2. It is set by the constructor when the URLConnection is created and should not change.

3. url returns “true” if it connected properly, also referred as protected, otherwise it returns “false”, referred as unprotected.

DOINPUT

Most URLConnection objects provide input to a client program.

90

Page 91: internet prgramming-notes

Fox example, a connection to a web server with the GET method would produce input for the client, but a connection to a web server with the POST method might not.

DOOUTPUT

Programs can use a URLConnection to send output back to the server. For example, a program that needs to send data to the server using the POST method could do so by getting an output stream from URLConnection.

useCaches - The useCaches variable determines whether a cache will be used if it is available. The default value is true, meaning that the cache will be used; false means the cache won’t be used.

CONTENT HANDLERS

The URLConnection class is intimately tied to Java’s protocol and content handler mechanism.

The protocol handler is responsible for making connections, exchanging headers, requesting particular documents, and so fourth.

Protocol handler is used to identify what type of protocol is used in network.

GETTING CONTENT

1. public Object getContent() throws IOException -> used to identify the content which is to be received.

2. public Object getContent(Class[] classes) throws IOException -> used to get the content if it is in the form of an array.

CONTENT HANDLER FACTORY

The URLConnection class contains a static Hashtable of ContentHandler objects. Whenever the getContent() method of URLConnection is invoked, java looks in this Hashtable to find the right content handler for the current URL, as indicated by the URL’s content type.

PROTOOL HANDLERS

91

Page 92: internet prgramming-notes

Protocol Handler is used to identify what type of protocol is being used between servers and clients.

VARIOUS METHODS

1. Protected void setURL(URL u, String protocol, String host, int port, String file, String ref)

2. Procted InetAddress getHostAddress(URL u)

3. Protected boolean hostEqual(URL ul, URL u2) -> determines two URLs refer to the same server.

4. Protected boolean samefile(URL ul, URL u2) -> determines two URLs refer to the same file.

5. Protected Boolean equals(URL u1, URL u2) - > determines protocol, host, file, path, and ref is equal or not.

CONTENT HANDLERS

1. Content handlers are one of the ideas that got developers excited about Java in the first place.

2. At the time that HotJava was created, netscape, NCSA, Spyglass,and a few other combatants were fighting a battle over who would control the standard for the web browsing.

3. A content handler is an instance of a subclass of java.net.contentHandler.

THE CONTENT HANDLER CLASS

The contentHandler class has only a simple constructor.

TO SUMMERARIZE, HERE’S THE SEQUENCE OF EVENTS

1. A URL object is created which points at some Internet resource.

2. The URL’s getContent() method is called to return an object representing the contents of the resource.

92

Page 93: internet prgramming-notes

3. The getContent() method of the URL calls the getContent() method of its underlying URLConnection.

4. The URLConnectiongetContent() method calls the nonpublic method getContentHandler() to find a content handler for the MIME type and sub type.

5. getContentHandler() checks to see whether it already has a handler for this type in its cache.

6. If there wasn’t an appropriate ContentHandler in the cache and the ContentHandlerFactory isn’t null, getContentHandler() calls the contentHandlerFactory’s createContentHandler() method to instantiate a new ContentHandler. If this is successful, the ContentHandler object is returned to getContent().

7. If the contentHandlerFactory is null or createContentHandler() fails to instantiate a new ContentHandler, then Java looks for a content handler class named type. subtype, where type is the MIME type of the content and subtype, where type is the MIME subtype in one of the packages named in the java.content.handler.pkgs ststen orioerty.

8. Java looks for a content handler class named sun.net.www.content.type.subtype. If it’s found, it is returned, otherwise returns null.

9. If the ContentHanler object is not null, then this contentHanler’s getContent() method is called.

10. Either the returned object or the exception is passed up the call chain, eventually reaching the method that invoked getContent.

2.7.1 SMTP

SMTP CLIENT

import java.io.*;

import java.net.*;

public class smtpclient

{

93

Page 94: internet prgramming-notes

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

{

Socket s=new Socket("localhost",8080);

DataInputStream dis = new DataInputStream(s.getInputStream());

DataOutputStream dos=new DataOutputStream(s.getOutputStream());

DataInputStream in=new DataInputStream(System.in);

PrintStream ps=new PrintStream(s.getOutputStream());

ps.println("ready");

String resp=dis.readLine();

System.out.println("Enter the from address");

String strf=in.readLine();

ps.println(strf);

System.out.println("Enter the to address");

String strt=in.readLine();

ps.println(strt);

System.out.println("Enter the message");

while(true)

{

String cmd=in.readLine();

ps.println(cmd);

if(cmd.equals("quit"))

{

System.out.println("Client quit");

break;

}

}

}

}

94

Page 95: internet prgramming-notes

SMTP SERVER

import java.io.*;

import java.net.*;

import java.util.*;

public class smtpserver

{

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

{

ServerSocket ss=new ServerSocket(8080);

Socket s= ss.accept();

ServiceClient(s);

}

public static void ServiceClient(Socket s) throws Exception

{

DataInputStream dis=null;

PrintStream ps=null;

dis=new DataInputStream(s.getInputStream());

ps=new PrintStream(s.getOutputStream());

FileWriter fw=new FileWriter("abc.eml");

FileInputStream fi;

String tel=dis.readLine();

if(tel=="ready")

System.out.println("ready signal received: Client accepted");

ps.println("Enter the address");

String from=dis.readLine();

fw.write("from:"+from+"\n");

ps.println("Enter the address");

95

Page 96: internet prgramming-notes

String to=dis.readLine();

fw.write("to:"+to+"\n");

ps.println("Enter message:");

String cmd=dis.readLine();

fw.write("\n");

System.out.println(cmd);

fw.write("Message:"+cmd+"\n");

fw.close();

}

}

Output SMTP

96

Page 97: internet prgramming-notes

2.7.2 POP3 PROGRAMS (CLIENT)

IMPORT JAVA.LANG.*;IMPORT JAVA.NET.*;IMPORT JAVA.IO.*;CLASS CLIE{

PUBLIC STATIC VOID MAIN(STRING ARGS[]) THROWS EXCEPTION{

INT C;STRING STR;BUFFEREDREADER BR= NEW BUFFEREDREADER(NEW

INPUTSTREAMREADER(SYSTEM.IN));INETADDRESS A= INETADDRESS.GETLOCALHOST();SOCKET S=NEW SOCKET(A,2555);INPUTSTREAM IN=S.GETINPUTSTREAM();OUTPUTSTREAM OUT=S.GETOUTPUTSTREAM();SYSTEM.OUT.PRINTLN("ENTER USERNAME:");STR=BR.READLINE();INT I=STR.LENGTH();OUT.WRITE(I);BYTE BUF[]=STR.GETBYTES();OUT.WRITE(BUF);WHILE((C=IN.READ())!=-1){

SYSTEM.OUT.PRINT((CHAR)C);}S.CLOSE();

}}

POP3 PROGRAMS (SERVER):

import java.lang.*;import java.net.*;import java.io.*;class serv1{

97

Page 98: internet prgramming-notes

public static void main(String args[]) throws IOException{

String str=new String(); String str1=new String(); int c;

while(true){

str="\0";str1="\0";ServerSocket ss=new ServerSocket(2555);Socket s=ss.accept();InputStream in=s.getInputStream();OutputStream out=s.getOutputStream();int i=in.read();

for(int j=0;j<i;j++){

c=in.read();str1=str1+((char)c);

}System.out.println(str1);

str="\n\nhello "+str1;

if(str1.equals("\0xyz")){

str=str+"\nU ve 2 msgs\n\n";}

else if(str1.equals("\0abc")){

str=str+"\nU ve 5 msgs\n\n";}

else{

str=str+"\nInvalid username\n\n";}

byte buf[]=str.getBytes();out.write(buf);

s.close();ss.close();

}}

}

98

Page 99: internet prgramming-notes

2.8 WEB PAGE RETRIEVAL

// DEMONSTRATE URLCONNECTION

IMPORT JAVA.NET.*;IMPORT JAVA.IO.*;IMPORT JAVA.UTIL.DATE;

CLASS URLCONNECTION{ PUBLIC STATIC VOID MAIN(STRING ARGS[]) THROWS EXCEPTION { INT C; URL HP = NEW URL("HTTP://WWW.GOOGLE.COM"); URLCONNECTION HPCON = HP.OPENCONNECTION();

SYSTEM.OUT.PRINTLN("DATE : " + NEW DATE(HPCON.GETDATE())); SYSTEM.OUT.PRINTLN("CONTENT-TYPE : " + HPCON.GETCONTENTTYPE());

SYSTEM.OUT.PRINTLN("EXPIRES : " + HPCON.GETEXPIRATION());

SYSTEM.OUT.PRINTLN("LAST-MODIFIED : " + NEW DATE(HPCON.GETLASTMODIFIED()));

INT LEN = HPCON.GETCONTENTLENGTH();

SYSTEM.OUT.PRINTLN("CONTENT-LENGTH : " + LEN);

IF(LEN > 0) { SYSTEM.OUT.PRINTLN("=========CONTENT ========="); INPUTSTREAM INPUT = HPCON.GETINPUTSTREAM(); INT I = LEN;

WHILE (((C = INPUT.READ()) != -1) && (--I > 0))

{

SYSTEM.OUT.PRINT((CHAR) C);

99

Page 100: internet prgramming-notes

}

INPUT.CLOSE(); }

ELSE { SYSTEM.OUT.PRINTLN("NO CONTENT AVAILABLE "); } }}

OUTPUT:

Write programs in Java to do the following:

4.1 Set the URL of another server4.2 Download the Homepage of the server4.3 Display the contents of Home page with Date, Content type, and Expiration Date, Last Modified and Length of the Home Page.

Date : Tue Jun 19 10:16:08 GMT+05:30 2007

Content-Type : text/html; charset=ISO-8859-1

Expires : 0

Last-Modified : Wed Jun 13 19:21:13 GMT+05:30 2008

Content-Length : 20737

=========Content =========

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Welcome to Sathyabama University</title>

100

Page 101: internet prgramming-notes

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><link href="mystyle.css" rel="stylesheet" type="text/css"><script language="JavaScript" type="text/JavaScript"><!--function MM_preloadImages() { //v3.0 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}}//--></script><script language="JavaScript" type="text/JavaScript"><!--function reopen() {

TheNewWin = window.open("reopen.htm","help","height=360,width=530,toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no");}function reopen3() {

TheNewWin = window.open("reopen3.htm","help","height=300,width=530,toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no");}function pra_exam() {

TheNewWin = window.open("practical_examination.htm","help","height=600,width=820,toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no");}function placements() {

TheNewWin = window.open("placement.htm","help","height=430,width=630,toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes");}function finalyear() {

TheNewWin = window.open("kind_notice_final_year.htm","help","height=410,width=530,toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no");}function secondandthirdyear() {

TheNewWin = window.open("kind_notice_2_3_year.htm","help","height=260,width=530,toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no");}//-->

101

Page 102: internet prgramming-notes

</script>

2.9 PROTOCOL HANDLERS

2.10 CONTENT HANDLERS

2.11 APPLETS

Applet program for implementing various colors, font style and size

PROGRAM:import java.awt.*;import java.awt.event.*;import java.applet.*;public class colfont extends Applet implements ItemListener{Choice c1,c2,c3,c4;Label l1,l2,l3,l4;Panel p1,p2;static int f;public void init(){c1=new Choice();c2=new Choice();c3=new Choice();c4=new Choice();c1.addItemListener(this);c2.addItemListener(this);c3.addItemListener(this);c4.addItemListener(this);l1=new Label("Font");l2=new Label("Font Style");l3=new Label("Font Color");l4=new Label("Font Size");p1=new Panel();p2=new Panel();}public void start(){GraphicsEnvironment g=GraphicsEnvironment.getLocalGraphicsEnvironment();Font f2[]=g.getAllFonts();

102

Page 103: internet prgramming-notes

for(int i=0;i<f2.length;i++)c1.addItem(f2[i].getFontName());c2.addItem("Plain");c2.addItem("Bold");c2.addItem("Italic");c2.addItem("Bold+Italic");c3.addItem("red");c3.addItem("blue");c3.addItem("green");c3.addItem("cyan");c3.addItem("yellow");for(int i=10;i<=100;i++)c4.addItem(String.valueOf(i));p1.add(l1);p1.add(c1);p1.add(l2);p1.add(c2);p1.add(l3);p1.add(c3);p1.add(l4);p1.add(c4);p2.setLayout(new BorderLayout());add("NORTH",p1);add("CENTER",p2);}public void itemStateChanged(ItemEvent e){repaint();}public void paint(Graphics g){if(c2.getSelectedItem().equals("Plain"))f=Font.PLAIN;if(c2.getSelectedItem().equals("Bold"))f=Font.BOLD;if(c2.getSelectedItem().equals("Italic"))f=Font.ITALIC;if(c2.getSelectedItem().equals("Bold+Italic"))f=Font.BOLD+Font.ITALIC;g.setFont(new Font(c1.getSelectedItem(),f,Integer.parseInt(c4.getSelectedItem())));if(c3.getSelectedItem().equals("red"))g.setColor(Color.red);if(c3.getSelectedItem().equals("blue"))g.setColor(Color.blue);

103

Page 104: internet prgramming-notes

if(c3.getSelectedItem().equals("green"))g.setColor(Color.green);if(c3.getSelectedItem().equals("cyan"))g.setColor(Color.cyan);if(c3.getSelectedItem().equals("yellow"))g.setColor(Color.yellow);g.drawString("COLORS AND FONTS USING APLLET",200,200);}}

HTML CODING:

//<applet code=colfont width=300 height=400></applet>

OUTPUT WINDOW:

104

Page 105: internet prgramming-notes

2.12 IMAGE HANDLING

2.13 REMOTE METHOD OF INVOCATION

RMI PROGRAM FOR POWER COMPUTATION

RMI method Invocation (RMI) allows a Java object that executes on one machine to invoke a method of a Java object that executes on another machine.

RMI is a Java approach to designing object oriented distributed applications.

105

Page 106: internet prgramming-notes

CORBA (Common Object Request Broker Architecture ),

DATAGRAMS

Datagrams are bundles of information passed between machines. In other words datagram packets are container which holds the data to be transmitted across the stream.

Java implements datagrams on top of the UDP protocol by using two classes.

1. Datagram Packet – Datagram object is the object container for holding data.

2. Datagram Socket – object is the mechanism used to send or receive the Datagram Packets.

LIST OF CONSTRUCTURS USED FOR CREATING DATAGRAM PACKET

There are four constructors used in creation of Datagram Packet. They are

1. DatagramPacket(byte data[], int size)

2. DatagramPacket(byte data[], int offset, int size)

3. DatagramPacket(byte data[], InetAddress ip-address, int port)

4. DatagramPacket(byte data[], int offset, int size, InetAddress ip-address, int port)

METHODS USING DATAGRAM PACKETS

SL NO

Datagram Method Description

1 InetAddress getaddress() Returns the address of the source (for datagrams being received) or destination (for datagrams being sent).

2 Byte[] getData() Returns the byte array of data contained in the datagram. Mostly used to retrieve data from the datagram after it has been received.

3 Int getLength() Returns the length of the valid data contained in byte

106

Page 107: internet prgramming-notes

array that would be returned from the getData() method. This may not equal the length of the whole byte array.

4 Int getOffset() Returns the starting index of the data.

5 Int getPort() Returns the port number.

6 Void setAddress(InetAddress ipaddress)

Sets the address to which a packet will be sent. The address is specified by ipAdress.

7 Void setData(byte[] data) Sets the data tp data. The offset to zero, and the length to number of bytes in data.

8 Void setLength(int size) Sets the length of the packet to size

9 Void setPort(int port) Sets the port to port

STEPS FOR SIMPLE CLIENT/SERVER APPLICATION USING RMI

Step One: Enter and compile the source codeStep Two: Generate a StubStep Three: Install Files on the client and server machinesStep Four: Start the RMI Registry on the Server MachineStep Five: Start the ServerStep Six: Start the ClientRMI PROGRAM FOR POWER COMPUTATION

STEP 1: INTERFACE PROGRAM

import java.rmi.*;public interface Number extends Remote{

public double power(double x, double y)throws RemoteException}

Step2: Create and compute client application to access remote object

import java.io.*;import java.rmi.*;

107

Page 108: internet prgramming-notes

public class Numberclient{ public static void main(String a[]) throws IOException { double x,y; try { String s1="numberserver"; Number e=(Number)Naming.lookup(s1); System.out.println("X power y computation"); System.out.println("Enter x : "); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); x=Double.parseDouble(br.readLine());

System.out.println("Enter y : "); y=Double.parseDouble(br.readLine()); double z1=e.power(x,y); System.out.println(x+" power "+y+ " = " + z1 );

}catch(Exception e) { System.out.println("Exception From Client"); } }

Step3: Create and compile server application to create remote objects

import java.rmi.*;import java.rmi.server.*;import java.io.*;public class Numberserver extends UnicastRemoteObject implements Number{ public Numberserver() throws RemoteException{} public double power(double x,double y) throws RemoteException {

double r=1.0;for(double l=1;l<=y;l++)

r=r*x; return r;

108

Page 109: internet prgramming-notes

} public static void main(String a[]) {

try {

Numberserver e=new Numberserver(); Naming.rebind("numberserver",e); System.out.println("System is ready");}catch (Exception e){ System.out.println("Error from the Server Side"+ e);}

}}

Step 4: Compile the interface, server and client programsC:\jdk1.3\bin>javac Number.javaC:\jdk1.3\bin>javac Numberserver.javaC:\jdk1.3\bin>javac Numberclient.java

Step 5: Create the stub and skeleton classes and register the server.C:\jdk1.3\bin>rmic NumberserverC:\jdk1.3\bin>rmiregistry

Step 6: Open a new command window1 and run the Server ProgramC:\jdk1.3\bin>java NumberserverSystem is ready

Step 7: Open a Command window2 new DOS Prompt, Run the ClientC:\jdk1.3\bin>java NumberclientEnter x :3Enter y :33.0 power 3.0 = 27.0

109

Page 110: internet prgramming-notes

RMI PROGRAM FOR ADDING TWO NUMBERS, PRINTING THE SUM

PROGRAM 1 – INTERFACE PROGRAM

import java.rmi.*;public interface AddServerIntf extends Remote{

double add(double d1,double d2) throws RemoteException;}

PROGRAM 2 – PROGRAM FOR IMPLEMENTING INTERFACE

import java.rmi.*;import java.rmi.server.*;public class AddServerImpl extends UnicastRemoteObject implements AddServerIntf{

public AddServerImpl()throws Exception{}public double add(double d1,double d2) throws RemoteException{

return d1+d2;}

}

PROGRAM 3 – SERVER PROGRAM

import java.net.*;import java.rmi.*;public class AddServer{

public static void main(String args[]){

try{

AddServerImpl addServerImpl=new AddServerImpl();Naming.rebind("AddServer",addServerImpl);

}

110

Page 111: internet prgramming-notes

catch(Exception e){

System.out.println("exception: " +e);}

}}

PROGRAM 4 – CLIENT PROGRAM

import java.rmi.*;public class AddClient{

public static void main(String args[]){try

{String addServerURL="rmi://"+args[0]+"/AddServer";

AddServerIntf addServerIntf=(AddServerIntf)Naming.lookup(addServerURL);

System.out.println("the first number is:" +args[1]);double d1=Double.valueOf(args[1]).doubleValue();System.out.println("the second number is:"+args[2]);double d2=Double.valueOf(args[2]).doubleValue();System.out.println("the sum is:" +addServerIntf.add(d1,d2));

}catch(Exception e){

System.out.println("expression:"+e);} } }

EXECUTION STEPS

1. javac AddServerIntf.java2. javac AddServerImpl.java3. javac AddServer.java4. javac AddClient.java

5. start rmiregistry6. rmic AddServerImpl

111

Page 112: internet prgramming-notes

7. java AddServer8. java AddClient ip-address input1 input2

END OF UNIT II

UNIT III – SCRIPTING LANGUAGES

3.1 HTML Introduction3.2 HTML forms 3.3 Frames 3.4 Tables 3.5 Web page design 3.6 Java Script Introduction 3.7 Control Structures 3.8 Functions 3.9 Arrays 3.10 Objects

112

Page 113: internet prgramming-notes

3.11 Simple Web Applications

3.1 HTML – INTRODUCTION - BASIC CONCEPTS3.1.1 INTRODUCTION

NETWORK – Network is interconnection of computers, used to share or exchange information from one system to another system.

INTERNET – Internet is a worldwide network of networks.

DOMAIN – Domain is a place where information is available or it specifies the range of value for each entity.

3.1.2 DOMAIN NAME EXTENSION

There are different domain names. Each domain represents a group. For example the following represents different domains and its uses.

Sl No

Domain Name

Description Example

1 .edu Servers that provide Educational services

Annauniv.edu

2 .gov Provides information about the government of a country

Senate.gov

3 .mil Servers that provide military information.

Army.mil

4 .org Provide information about the organizations in the world.

Microsoft.org.

5 .com Servers providing commercial services on the Internet.

Google.com

6 .web Web based company http://www.emailaddresses.com/email_web.htm7 .net ISP & Network related

CompaniesMicrosoft.net

8 .tv For Television Channel http://www.brendaborri.com/tv.html

Normally two letters are used to segregate between the countries. Fox example

SL NO Letters Example Country

1 .au yahoo.co.au Australia

113

Page 114: internet prgramming-notes

2 .us yahoo.co.us US3 .ca yahoo.co.ca Canada4 .in yahoo.co.in India5 .uk yahoo.co.uk United Kingdom

3.1.3 FORMAT OF HTML PROGRAM

<HTML> <HEAD>

<TITLE> This is the Title </TITLE></HEAD>

<BODY> …………..

HTML body program ……………. </BODY></HTML>

HTML tags in the document HeadTag Type Purpose

<BASE> Stand-alone Defines document baseline information<HEAD> Container Denotes the start of the document head<LINK> Stand-alone Establishes linking relationships with another documents

or programs<META> Stand-alone Supplies document meta-information<STYLE> Container Supplies style sheet information<TITLE> Container Gives the document a descriptive title<SCRIPT> Container Gives facility for JAVA SCRIPT or VBSCRIPT program

HTML tags in the document Body

114

Note: All the tags in HTML program is optional, however the file should be saved with .html extension.

Page 115: internet prgramming-notes

Tag Type Purpose

<A> Container Establishes an anchor or link<ADDRESS> Container Denotes an address tag<APPLET> Container Embeds a Java applet in a document<AREA> Stand-alone Defines clickable regions in a client-side image map<B> Container Produces boldface text<BIG> Container Produces text in a larger font size<BODY> Container Denotes the start of the document body<BR> Stand-alone Inserts a blank lineTag Type Purpose<CENTER> Container Centers contained items on the body<DD> Container Denotes a term definition<DT> Container Denotes a term to be defined

3.1.4 HTML MORE EXAMPLES

INTRODUCING TILES AND FOOTERS IN HTML PROGRAM

<HTML><HEAD>

<TITLE> This is the Title </TITLE></HEAD><BODY>

…. Type the body of the program here

<ADDRESS> This is Footer </ADDRESS></BODY></HTML>

EXAMPLE<html>

<head> <title> Example for Title and Footer</title> </head> <body> Welcome to HTML page <Address> This is the footer </Address> </body> </html>

115

Page 116: internet prgramming-notes

OUTPUT

3.1.5 TEXT FORMATTING TAGS

1. <p> </p> - is used for introducing various paragraphs.

2. <br> - Gives blank line.

3. HEADING TAGS - <h1> </h1> .. <h6> </h6> is used to introduce various headings. <h1> is the biggest and h6 is the smallest heading tag.

4. <HR> TAG – is used to draw horizontal line

EXAMPLE FOR TEXT FORMATTING TAGS

<html> <body> <CENTER> <H4> EXAMPLE FOR TEXT FORMATTING TAGS </H4> </CENTER> <CENTER> <B> Bold Format </B> <br> </CENTER> <CENTER> <I> Italic Format </I> <br> </CENTER> <CENTER> <U> Underline Format </U> </CENTER> </body> </html>

116

Page 117: internet prgramming-notes

OUTPUT

ATTRIBUTES OF HR TAG

1. ALIGN – Aligns the line on the browser. ALIGN = LEFT or ALIGN = RITHT or ALIGN = CENTER

2. SIZE – Changes the size of the rule

3. WIDTH – Sets the width of the rule.

ATTRIBUTES OF <HR> TAG.

<html> <body> Example for HR Tag <hr Align=left width=100 size=20> </body> </html>

OUTPUT

117

Page 118: internet prgramming-notes

FONT TAG

Font tag is used to set different fonts and colors to a text in the web page.

SYNTAX

<FONT face = “font name” SIZE = size in number COLOR = “color name” > ……………….. Type the text or content here……………….. </FONT>

EXAMPLE

<html> <body> <font face=”Comic Sans MS” Size=6 color=RED> Text is Displayed in Red Color <br> </font>

<font face=”Comic Sans MS” Size=6 color=blue> Text is Displayed in blue Color<br> </font>

<font face=”Modern” Size=6 color=green> Text is Displayed in Green Color <br> </font> </body> </html>

OUTPUT

118

Page 119: internet prgramming-notes

3.1.6 LISTS

TYPES OF LISTS

1. Unordered lists2. Ordered lists

UNORDERED LISTS

Unordered lists starts with <ul> and ends with </ul>

ATTRIBUTES OF UNORDERED LISTS

TYPE = DISC or TYPE = SQUARE

Here DISC provides a shaded circle format and SQUARE provides square shapes respectively.

SYNTAX

<UL TYPE = DISC> <LI> List Item </LI>

<LI> List Item </LI> <LI> List Item </LI></UL>

EXAMPLE

<html> <body>

119

Page 120: internet prgramming-notes

<b><br><br> <ul type = DISC> <li> RED <li> GREEN <li> BLUE <ul> </b> </body></html>

OUTPUT

EXAMPLE

<html> <body> <b><br><br> <ul type = SQUARE> <li> RED <li> GREEN <li> BLUE <ul> </b> </body></html>

OUTPUT

120

Page 121: internet prgramming-notes

ORDERED LISTS (NUMBERING)

TYPE: Controls the numbering scheme to be used. The following TYPE schemes can be used with respect to ordered lists.

TYPE = “1” generates numbers (1,2,…) “A” generates A, B, C.. “a” generates a, b, c “I” generates Capital roman letters I, II, II… “i” generates small case roman letters i, ii, iii …..

START: Alters the numbering sequence, can be set to any numeric value VALUE: Change the numbering sequence in the middle of an ordered list

EXAMPLE

<html> <body> <ol type= "1"> <li> Floppies <li> Hard Disks <li>Monitors </ul> </body> </html>

OUTPUT

121

Page 122: internet prgramming-notes

EXAMPLE

<html> <body> <ol type=”1” START=100> <li> Floppies <li> Hard Disks <li> Monitors </ol> </body> </html>

OUTPUT

EXAMPLE

<html> <body> <ol type= "A"> <li> Floppies <li> Hard Disks <li>Monitors </ul> </body> </html>

OUTPUT

122

Page 123: internet prgramming-notes

EXAMPLE

<html> <body> <ol type= "a"> <li> Floppies <li> Hard Disks <li>Monitors </ul> </body> </html>

OUTPUT

EXAMPLE

<html> <body> <ol type= "I"> <li> Floppies <li> Hard Disks <li>Monitors </ul> </body> </html>

OUTPUT

123

Page 124: internet prgramming-notes

EXAMPLE

<html> <body> <ol type= "i"> <li> Floppies <li> Hard Disks <li>Monitors </ul> </body> </html>

OUTPUT

USE OF DL, DT AND DD TAGS

<html> <body> <dl> <dt> Keyboard <dd>An input device <dd>It is very useful

<dd>Used to give Input Values

<dt> printer <dd> An output device <dd> Output can be produced using printer </dl> </body> </html>

124

Page 125: internet prgramming-notes

OUTPUT

Explanation:

1. Here, <dl> specifies definition list. The <dl> is used for creating main items and sub items as shown above.

2. <dt> specifies definition term. It is used to specify the main heading.

3. <dd> specifies definition description. It specifies sub heading or sub title.

4. <dt>, <dd> tags should be given within <dl> tags.

3.1.7ADDING GRAPHICS TO HTML PROGRAM

<img> tag is used to insert or call a picture inside the Web page:

SYNTAX

<IMG SRC = ”picture name” height = “size in number” width =” size in number” ALT “MESSAGE” > </IMG>

Where, SRC specifies path of the picture. Height and width specifies height, width of the picture during display.

The message given in alt attribute will be printed when the particular picture is not available.

EXAMPLE

125

Page 126: internet prgramming-notes

<html> <head> <title> Working with Images </title> </head> <body> <center> <h2> Controlling Image Border </h2> </center> <center> <i> Image WITHOUT a BORDER </i> <br><br> <img src="fly away.jpg" width = "100" height = "100"> <br><br> <i> Image With BORDER = 3 </I><br><br> <img border=10 src="fly away.jpg" width = "100" height = "100" ></img> </center> </body> </html>

OUTPUT

Note HTML accepts two picture format namely .gif and .jpg.

126

Page 127: internet prgramming-notes

Image can be called in web page using <IMG> tag.

ATTRIBUTES OF IMG TAG

1. ALIGN: ALIGN = TOP, MIDDLE,BOTTOM

2. BORDER: Specifies the size of the border to place around

the image.

3. WIDTH: Specifies the width of the image in pixels.

4. HEIGHT: Specifies the height of the image in pixels

5. HSPACE: Indicates the amount of space to the left and

right of the image

6. VSPACE: Indicates the amount of apace to the top and

bottom of the image.

7. ALT: Indicates the text to be displayed in case the browser

is unable to display the image specified in the SRC

attribute.

3.1.8 LINKING DOCUMENTS

LINKS

HTML allows linking to other HTML documents as well as images. There are 3 attributes that can be introduced in BODY tag.

1. LINK – Changes the default color of a Hyperlink to whatever color is specified with this tag.

2. ALINK – Changes the default color of a hyperlink that is activated to whatever color is specified with this tag.

3. VLINK – Changes the default color of a hyperlink that is already visited to whatever color is specified with this tag.

127

Page 128: internet prgramming-notes

NOTE: User can specify the color name of a hyperlink or an equivalent hexadecimal number.

EXAMPLE FOR VARIOUS LINKS

LINKS.HTML

<html><head><title> EXAMPLE FOR DIFFERENT LINKS </title></head> <body link = "red" alink = "green" vlink = "yellow"> <br> <br> <br> <a href = "link.html"> <li> EXAMPLE FOR LINK </a> <br> <br> <br> <a href = "alink.html"> <li> EXAMPLE FOR ALINK </a> <br> <br> <br> <a href = "vlink.html"> <li> EXAMPLE FOR VLINK </a> </body> </html>

LINK.HTML

<html><head><title> Example for LINK attribute </title></head><body> <h1> <center> Example for LINK attribute </center> </h1>

</body></html>

ALINK.HTML

<html><head><title> Example for ALINK attribute </title>

128

Page 129: internet prgramming-notes

</head><body> <h1> <center> Example for ALINK attribute </center> </h1>

</body></html>

VLINK.HTML

<html><head><title> Example for VLINK attribute </title></head><body> <h1> <center> Example for VLINK attribute </center> </h1>

</body></html>

EXTERNAL LINKS

SYNTAX

<A HREF = “File name to be linked”> Hyperlink Message </A>

EXAMPLE

<A HREF = “page1.html”> Click Here to Continue </A>

3.1.9 IMAGE MAPS

USING IMAGES AS HYPERLINKS

<A HREF = <IMG SRC = “photo.gif”> </A>

When a hyperlink is created on an image, clicking on any part of the image will lead to opening of the document specified in the <A HREF TAG>.

129

Page 130: internet prgramming-notes

Linked regions of an image map are called hot spots and each hot spot is associated with html html filename.

Syntax

<MAP NAME = “fish.jpg”>

<AREA SHAPE = “rect” COORDS = “52,65,122,89” HREF = “sct.html”> </MAP>

ATTRIBUTES OF IMAGE MAPS

1. COORDS: Each of the above shapes takes different coordinates as parameters.a. Rectangle – 4 coordinates (x1,y2,x3,y2)

2. POLYGON: 3 or more coordinates.

3. HREF – Takes the name of the .html file that s linked to the particular area on the image.

<MAP NAME = “fish.jpg”>

<AREA SHAPE = “rect” COORDS = “52,65,122,89” HREF = “sct.html”> </MAP>

3.2 HTML FORMS

HTML form provides several mechanisms to collect information from people viewing your site. The syntax of the form is

The METHOD attribute indicates the way the web server will organize and send you the form output.

Use METHOD = “post” in a form that causes changes to server data, for example when updating a database.

The ACTION attribute in the FORM tag is the path to the script; in this case, it is a common script which sends form data to destination address. Most Internet Service Providers will have a script like this on their site.

130

<FORM METHOD = “POST/GET” ACTION = “/cgi-bin/formail”>

Page 131: internet prgramming-notes

STRUCTURE OF FORM TAG IN HTML PROGRAM

<HTML>

<HEAD>

<TITLE>THIS IS MY TITLE </TITLE>

<BODY>

<FORM>

Create the necessary form elements (text box, radio, label etc.) </FORM> </BODY> </HEAD></HTML>

3.2.1 FORM ELEMENTS EXAMPLES

CREATION OF LABEL AND TEXT BOX

<html><head> <title> form1-example FORM1.HTML </title> </head> <body>

<form> <center> <h1> Student Details </h1> </center> Student Name: <input type = "text" name = "name1" value = ""> </form> </body> </html>

131

Page 132: internet prgramming-notes

INTRODUCING PASSWORD

<html><head> <title> form2-using password FORM2.HTML </title> </head> <body>

<form> <center> <h1> Student Details </h1> </center> <h1> Student Password: <input type = "password" name = "pass"> </h1> </form> </body> </html>

OUTPUT

132

Page 133: internet prgramming-notes

INTRODUCING CHECKBOX

<html><head> <title> form2-Creating Checkbox FORM3.HTML </title> </head> <body>

<form> <h1> Loan Status <input type = "checkbox" name = "loan"> </h1> </form> </body> </html>

CREATION OF RESET, SUBMIT, RADIO BUTTONS

<html><head> <title> form2-Creating Reset and Submit Buttons </title> </head> <body>

<form> <h1> Sex <input type = "radio" name = "sex1"> Male </h1> <h1> Sex <input type = "radio" name = "sex1"> Female </h1> <input type = "reset"> <input type = "Submit"> </form> </body> </html>

133

Page 134: internet prgramming-notes

CREATION OF LIST BOX

<html><head> <title> Using List box Object </title> </head> <body>

<form>

<select dept = "deptnames" size = 2>

<option selected> MECH <option> IT <option> CSE <option> MECH </select> </form> </body> </html>

OUTPUT

134

Page 135: internet prgramming-notes

3.3 FRAMES

Frames are used to call many html files at the same time. This can be done using <FRAMESET> </FRAMESET> tags.

3.3.1 ATTRIBUTES OF FRAMES

ROWS – This attribute is used to divide the screen into multiple rows. It can be set equal to a list of values. Depending on the required size of each row, the values can be

A number of pixels Expressed as a percentage of the screen resolution The symbol *, which indicates the remaining space.

COLS – This attribute is used to divide the screen into multiple columns.

SYNTAX

<FRAMESET ROWS = “30%, *”> => Divides the screen into 2 rows, * indicates the remaining space

<FRAMESET COLS = “50%, 50%”> => Divides the first row into 2 equal columns

<FRAME SRC = “file1.html”> <FRAME SRC = “file2.html”>

<FRAMESET COLS = “50%,50%”> => Divides the second row into 2 equal columns

<FRAME SRC = file3.html”> <FRAME SRC = file4.html”> </FRAMESET> </FRAMESET>

135

Page 136: internet prgramming-notes

EXAMPLE

FRAME.HTML

<html> <frameset rows="30%,30%"> <frameset cols="10%,10%"> <frame src="file1.html"> <frame src="file2.html"> </frameset>

<frameset cols="20%,20%"> <frame src="file3.html"> <frame src="file4.html"> </frameset> </frameset></html>

FILE1.HTML

html> <body> <h4> Output of File1</h4> </body></html>

FILE2.HTML

<html> <body>

<h4> Output of File2</h4> </body></html>FILE3.HTMLhtml> <body>

<h4> Output of File3</h4> </body></html>

136

Page 137: internet prgramming-notes

FILE4.HTML

<html> <body> <h4> Output of File4</h4> </body></html>

OUTPUT

3.4 TABLES

A table is a two dimensional matrix, consisting of rows and columns. All table related tags are included between <TABLE> </TABLE> tags.

SYNTAX

<TABLE><TR> Heading </TR>

<TH> Row elements </TH> <TD> Table data values </TD> </TABLE>

Output of File1Output of File2

Output of File3 Output of File4

137

Page 138: internet prgramming-notes

3.4.1 ATTRIBUTES OF TABLE TAG

ALIGN Horizontal alignment is controlled by the ALIGN attribute. It can be set to LEFT, CENTER, or RIGHT

VALIGN Controls the vertical alignment of cell contents. It accepts the values TOP, MIDDLE or BOTTOM

WIDTH Sets the WIDTH of a specific number of pixels or to a percentage of the available screen width.

BORDER Controls the border to be placed around the table.CELLPADING This attribute controls the distance between the data in a cell and the

boundaries of the cellCELLSPACING Controls the spacing between adjacent cellsCOLSPAN Used to merge two or more columnsROWSPAN Used to merge two or more rows.

EXAMPLE

<html> <head> <title> Table Attributes </title> </head> <body bgcolor=lightgrey> <center> <h3> Specifing the BORDER and WIDTH of the Table! </h3></center>

<br><br> <center> <table border=5width=50%> <caption align=bottom> </caption> <tr> <th> Name </th> <th> Branch </th> <th> Total Marks </th>

<th> Grade </th> </tr>

138

Page 139: internet prgramming-notes

<td>Shilpa </td> <td>CSE </td>

<td>950 </td> <td>Distinction </td> </tr>

<td>Beena </td> <td>IT </td>

<td>800 </td> <td>First Class </td> </tr>

<td>Hanifa </td> <td>ECE </td>

<td>645 </td> <td>Second Class </td> </tr> <td>Monisha </td> <td>EEE </td>

<td>245 </td> <td>Fail </td> </tr> </table> </center> <center> <h3> Personal Information </h3> </center> </body> </html>

139

Page 140: internet prgramming-notes

OUTPUT

3.4.2 SPECIFYING CELL SPACING AND CELL PADDING TABLE ATTRIBUTES

<html> <head> <title> Working with Table </title> </head> <body bgcolor=lightgrey> <b> Specifing CELL SPACING </b> <br> <HR> <center> <table border=5 width=25% ALIGN=center cell spacing = 25> <tr> <th> Name </th> <th> Age </th> </tr>

<tr align=center> <td>Shilpa </td>

140

Page 141: internet prgramming-notes

<td> 21 </td> </tr>

<tr align=center> <td>vaishali</td> <td> 22 </td> </tr> </table> </center>

<hr> <b><i> With Cellpadding of 10</i></b> <center> <table border=1 width=25% cellpadding=10 ALIGN=center> <tr> <th> Name </th> <th> Age </th> </tr>

<tr align=center> <td>Shilpa </td> <td> 21 </td> </tr>

<tr align=center> <td>vaishali</td> <td> 22 </td> </tr> </table> </center> </body> </html>

141

Page 142: internet prgramming-notes

OUTPUT

3.4.3 ROWSPAN AND COLSPAN ATTRIBUTES

<html> <head> <title> Working with Tables </title> </head> <body bgcolor=lightgrey> <center> <H3> Specifing ROWSPAN and COLSAPN Attributes! </H3> </center>

<br><br><br><br> <center> <table border=1 width=50% ALIGN=center> <tr> <th rowspan=2> NAME </th> <th colspan=3> MARKS</th> </tr>

<tr> <th>PowerBuilder <th>Visual Basic <th>Developer2000

142

Page 143: internet prgramming-notes

</tr>

<tr align=center> <td>Shilpa</td> <td> 21 </td> <td> 45 </td> <td> 30 </td> </tr>

<tr align=center> <td>vaishali</td> <td> 26 </td> <td> 30 </td> <td> 40 </td> </tr> <caption Align=bottom> <b> <br> Mark Sheet </b> </caption>

</table> </center> </body> </html>

OUTPUT

143

Page 144: internet prgramming-notes

3.4.4 SPECIFYING COLORS IN TABLE CELLS

<html> <head> <title> Working with Tables </title> </head> <body bgcolor= white> <h3> <center> Specifing Colour in Table Cells </center> </h3>

<br><br><br><br> <center> <table border=5 width=50% ALIGN=center> <tr> <th bgcolor= red> Name </th> <th bgcolor= red > Age </th> </tr>

<tr align=center> <td bgcolor=green>Shilpa </td> <td bgcolor= green> 21 </td> </tr>

<tr align=center> <td bgcolor= blue>vaishali</td> <td bgcolor= blue> 22 </td> </tr> </table> </center> </body> </html>

144

Page 145: internet prgramming-notes

OUTPUT

3.5 WEB PAGE DESIGN

Create a web page to do the following:

1. Set the background with grey color.2. Show different font with different sizes.3. Show the usage of text formatting tags.

Main.html<html><head><title> Web Page Design Example </title></head><body> <h2> <br> <a href ="grey.html"> 1.Set the Background With Grey Color </a> <br> <br> <a href ="diffont.html"> 2.Different Fonts With Different Sizes </a> <br> <br><a href ="format.html"> 3.Text Formatting Tags</a> <br> <h2> </body></head>

145

Page 146: internet prgramming-notes

yellow.html

<html><head><title> Displaying web page with Grey color </title></title></head>

<body bgcolor = "grey">

<p> <h2> This Web Page is Displayed in Yellow Color </h2> <br> <br> <h2> <a href = "main.html"> Back to Main Menu </a> </h2> </p></body></html>

DIFFERENT FONTS WITH COLORS

DIFFONT.HTML

<html><head><title>Create Web Page for using Different fonts with different sizes - EX No. 1></title></head>

<body>

<p> <font face = "arial" size = "6" color = "black"> Text is in Arial, size = 6, color = "black" </font>

<br><br>

<font face = "Times New Roman" size = "5" color = "black"> Text is in Times New Roman, size = 5, color = "black" </font>

146

Page 147: internet prgramming-notes

<br><br>

<font face = "Lucida Handwriting" size = "4" color = "black"> Text is in Lucida Handwriting, size =4, color = "black" </font><br><br>

<font face = "Century Gothic" size = "5" color = "black"> Text is in Century Gothic, size =5, color = "black" </font>

<br> <br>

<center> <h2> <a href = "main.html"> Back to Main Menu </a> </h2> </center> </p></body></html>

FORMAT.HTML

<html><head><title>Various text formatting tags <title></title></head>

<body>

<p> <br><br> <b> Example for Bold Format </b> <br><br><i> Example for Italic Format </i> <br><br><u> Example for Underline Format </u>

<br><br><center> Example for Bold Format </center> </body></html>

147

Page 148: internet prgramming-notes

OUTPUT

148

Page 149: internet prgramming-notes

3.6 JAVA SCRIPT INTRODUCTION

SCRIPTING LANGUAGES

JavaScript is a Scripting language (web site development environment) created by Netscape.

Hence JavaScript works best with the Netscape suite of Client and Server products.

JavaScript is the native scripting language of Netscape Navigator.

VBScript is the native Scripting language of HTML.

SERVER SIDE SCRIPTING

In Server side scripting the script program is executed at Server Side the required html program is sent to the client.

The job of the server is more in server side scripting

CLIENT SIDE SCRIPTING

Here the script program is processed and executed in the client side itself.

So that it reduces the burden of the server.

JAVA SCRIPT

1. JavaScript is an object-oriented language that allows creation of interactive Web pages

2. JavaScript allows user entries, which are loaded into an HTML form to be processed as required

3.6.1 JAVASCRIPT INTRODUCTION

Objectives 1. To be able to write simple java script programs

2. To be able to use input and output statements

149

Page 150: internet prgramming-notes

3. To understand basic memory concepts

4. To be able to use arithmetic operators

5. To understand the precedence of arithmetic operators

6. To be able to write decision making statements

7. To be able to use relational and equality operators

ADVANTAGES

1. It is an interpreted language, which requires no compilation steps.

2. Embedded within HTML.

3. Minimal Syntax – easy to learn

4. Quick Development

5. Designed for simple, small programs

6. High performance

7. Procedural Capabilities – support facilities such as condition checking, looping and branching.

8. Designed for programming user events – like VB Java Script is also based on Events.

9. Easy Debugging and Testing

10. Platform Independent/ Architecture Neutral

SYNTAX OF JAVASCRIPT PROGRAM<HTML> <HEAD> <SCRIPT language = “JavaScript”>

… body of the script program </SCRIPT></HEAD>

<BODY> <SCRIPT language = “JavaScript”> body of the program.

150

Page 151: internet prgramming-notes

</SCRIPT> </BODY></HTML>

EXAMPLE

<HTML> <HEAD> <SCRIPT language = “JavaScript”> var name = prompt(“Enter your name”,”name”); </SCRIPT></HEAD><BODY> <SCRIPT language = “JavaScript”> document.write(“<H2> Hai” + “</H2”); </SCRIPT> </BODY></HTML>

OUTPUTAssume the input is anbu then the output will be

Hai anbu

3.7 JAVA SCRIPT CONTROL STRUCTURES

SCRIPT PROGRAM USING FOR.. LOOP

SYNTAX

151

for(int i=initial-value;i<condition;i++){

body program}

Page 152: internet prgramming-notes

where i is the control variable and assign with the initial value. The body of the program is executed till the condition is true. For each iteration i value is incremented by 1.

EXAMPLE

Java script program for adding values from first number to second number using for loop.

<HTML><HEAD> <SCRIPT language = JavaScript> var tot1 = 0; var num1=0,num2=0;i=0; var num1 = prompt("Enter the First Number", "Number1"); var num2 = prompt("Enter the Second Number","number2"); num1 = parseInt(num1); num2 = parseInt(num2); for(i=num1;i<=num2;i++) { tot1 = tot1 + i; } </SCRIPT></HEAD>

<BODY> <h1> WELCOME TO JAVA SCRIPT PROGRAM </h1> <SCRIPT language = "JavaScript"> document. write ("<H2>" + "SUM FROM " + num1 +" to " + num2 + " = " + tot1);

</SCRIPT>

</BODY></HTML>

152

Page 153: internet prgramming-notes

OUTPUT

SCRIPT PROGRAM USING WHILE LOOP

SYNTAX

153

i = 0;while(condition){

body program}

Page 154: internet prgramming-notes

Where i is the initial value and assign with zero. The body program is executed till the condition remains true. If the condition is false then the loop is terminated. The body of program will get executed only when the condition is true.

EXAMPLE

Java script program for adding values from first number to second number using while loop.

<HTML><HEAD> <SCRIPT language = JavaScript> var tot1 = 0; var num1=0,num2=0;i=0; var num1 = prompt("Enter the First Number", "Number1"); var num2 = prompt("Enter the Second Number","number2"); num1 = parseInt(num1); num2 = parseInt(num2); i = num1; while(i<=num2) { tot1 = tot1 + i;

i++; } document.writeln("sum = " + tot1);

</SCRIPT></HEAD>

<BODY> <h1> WELCOME TO JAVA SCRIPT PROGRAM - WHILE LOOP </h1> <SCRIPT language = "JavaScript"> document.write("<H2>" + "SUM FROM " + num1 +" to " + num2 + " = " + tot1); </SCRIPT> </BODY></HTML>

154

Page 155: internet prgramming-notes

OUTPUT

3.8 JAVA SCRIPT FUNCTIONS

SCRIPT PROGRAM USING FUNCTION

SYNTAX

155

function function-name(input parameter1, …input parameter-n) {

body of the function program}

Page 156: internet prgramming-notes

SYNTAX FOR CALLING THE FUNCTION

EXAMPLE

Java script program for adding values from first number to second number using function loop.

<HTML><HEAD> <SCRIPT language = "JavaScript"> function sum1() { var tot1 = 0; var num1=0,num2=0;i=0; var num1 = prompt("Enter the First Number", "Number1");

var num2 = prompt("Enter the Second Number","number2"); num1 = parseInt(num1); num2 = parseInt(num2); i = num1; while(i<=num2) { tot1 = tot1 + i;

i++; } document.write("<H2>" + "SUM FROM " + num1 +" to " + num2 + " = " + tot1);

}

156

variable name = function-name(input parameter1, …input parameter-n)

Page 157: internet prgramming-notes

</SCRIPT></HEAD>

<BODY> <h3> JAVA SCRIPT USING FUNCTION </h3> <SCRIPT language = "JavaScript"> var sum2 = sum1();

</SCRIPT>

</BODY></HTML>

OUTPUT

157

Page 158: internet prgramming-notes

3.9 THE JAVASCRIPT ARRAYS

Arrays are JavaScript objects that are capable of storing a sequence of values. These values are stored in indexed locations within the array. The length of an array is the number of elements of an array accessed by using the name of the array followed by the index value of the array element enclosed in square brackets.

The length of an array starts from 0 to n-1.

The array can be created in the following methods

1. arrayName = new Array(Array length) => array size is explicitly specified, array size is predefined.

2. arrayName = new Array() =>The second example creates an array of the size 0.

DENSE ARRAYS

A dense array is an array that has been created with each of its elements being assigned a specific value.

Dense arrays are used exactly in the same manner as other arrays.

Dense arrays are declared and initialized at the same time.

158

Page 159: internet prgramming-notes

ARRAY METHODS

Join() – returns all elements of the array joined together as a single string.

Reverse() – reverses the order of the elements in the array.

EXAMPLE

3.9.1 JAVA SCRIPT PROGRAM FOR ARRAYS

<SCRIPT language = "JavaScript"> var sum,i; var n = prompt("Enter the no. elements in the array",""); var elements= new Array(n); for(i=0;i<n;i++) { elements[i]=prompt("Enter the array elements",""); elements[i]=parseInt(elements[i]); } sum=0; for(i=0;i<n;i++) { sum=sum+elements[i]; } document.write ("Sum of array elements is " +sum); </SCRIPT>

159

Page 160: internet prgramming-notes

160

Page 161: internet prgramming-notes

3.9.2 OPERATORS AND EXPRESSIONS IN JAVASCRIPT

+ - * /

% - Modulus – remainder

++ - Return the value then Increment

-- Return the value then Decrement

LOGICAL OPERATORS

&& - Logical and

|| - Logical or

! Logical not

COMPARISION OPERATORS

= = equal (perform type conversion before testing for equality.

= = = strictly equal (do not perform type conversion before testing for equality)

STRING OPERATORS

Currently Java Script supports only one string concatenation (+) operator.

EXAMPLE

“ab” + “cd” produces “abcd”

ASSIGNMENT OPERATORS

1. =2. += increments and assigns the value3. -=4. *=5. /=6. %= Takes the modulus of the variable on the left the %= operator using the value of

the expression on its right

161

Page 162: internet prgramming-notes

CONDITIONAL EXPRESSION - TERNARY OPERATOR & CONTROL STRUCTURES

SYNTAX

condition? value1:value2

If the condition is true, value1 is the result of the expression, Otherwise value2 is the result of the expression.

THE DELETE OPERATOR

delete marks[20] deletes the 21st element of an array.

3.9.3 CONDITIONAL CHECKING

If(condition){ java script code}

BUILT-IN FUNCTIONS IN JAVASCRIPT

1. eval() converts a string expression to a numeric value

USER DEFINED FUNCTIONS IN JAVASCRIPT

function function_name(parameter1,parameter2…){ block of java script }

162

Page 163: internet prgramming-notes

3.9.4 DIALOG BOXES

Dialog boxes are used to display small windows. This is also used to get input from user.

SYNTAX

alert(“message”);

alert(“Click here to continue”)

prompt(“Enter your name”, name)

1. alert is only used to display some information

2. prompt is used to display information along with some input value

3. Confirm dialog box, causes program execution to halt until user action takes place. The user action can be either OK or CANCEL.

OK – returns trueCANCEL – returns false.

Simple example

<HTML><HEAD>

<TITLE> This is a simple program </TITLE>

<SCRIPT LANGUAGE = “JavaScript”>

document.writeln(<“H1”> Welcome to Javascript programming “<H1>”);

</SCRIPT></HEAD> </BODY> /BODY></HTML>

ARITHMETIC OPERATORS

+ - * / % (modulus)

163

Page 164: internet prgramming-notes

3.9.5 JAVASCRIPT KEYWORDS

break case continue delete doelse false for function ifin new null return switchthis true typeof var voidwhile with

KEYWORDS THAT ARE RESERVED BUT NOT USED BY JAVASCRIPT

catch class const debugger defaultenum export extends finally importsuper try

3.9.6 INCREMENT AND DECREMENT OPERATORS

SL NO

Assignment operator

Initial variable value

Sample expression

Explanation Assigns

1 += c = 3 c + = 7 c = c + 7 10 to c2 -= d = 5 d- = 4 d = d – 4 1 to d3 *= e = 4 e * = 5 e = e * 5 20 to e4 /= f = 6 f /= = 3 f = f / 3 2 to f5 %= g = 12 g %= 9 g = g %9 3 to g6 ++ Pre increment ++a Increment a y 1, then use the

new value in the expression7 ++ Post increment a++ Use the current value of a in the

expression in which a resides, then increment a by 1

8 -- Pre decrement --b decrement a y 1, then use the new value in the expression

9 -- Post decrement b-- Use the current value of a in the expression in which a resides, then decrement a by 1

164

Page 165: internet prgramming-notes

3.9.7 MORE JAVA SCRIPT PROGRAMS

PROGRAM 1 – Java Script program to read and printing the Text

165

Page 166: internet prgramming-notes

JAVA SCRIPT PROGRAM FOR ADDING TWO NUMBERS

<HTML><HEAD> <SCRIPT language = JavaScript> var tot1 = 0; var num1=0,num2=0; var num1 = parseInt(prompt("Enter the First Number", "Number1"));

var num2 = parseInt(prompt("Enter the Second Number","number2")); document.write(num1); tot1 = num1 + num2; </SCRIPT></HEAD>

<BODY> <h1> WELCOME TO JAVA SCRIPT PROGRAM </h1> <SCRIPT language = "JavaScript"> document.write("<H2> SUM " + tot1 +"</H2>");

</SCRIPT>

</BODY></HTML>

166

Page 167: internet prgramming-notes

OUTPUT

JAVA SCRIPT PROGRAM USING FOR LOOP TO PRINT SUM FROM STARTING NUMBER TO ENDING NUMBER

<HTML><HEAD> <SCRIPT language = JavaScript>

167

Page 168: internet prgramming-notes

var tot1 = 0; var num1=0,num2=0;i=0; var num1 = prompt("Enter the First Number", "Number1");

var num2 = prompt("Enter the Second Number","number2"); num1 = parseInt(num1); num2 = parseInt(num2); for(i=num1;i<=num2;i++) { tot1 = tot1 + i; } </SCRIPT></HEAD>

<BODY> <h1> WELCOME TO JAVA SCRIPT PROGRAM </h1> <SCRIPT language = "JavaScript"> document.write("<H2>" + "SUM FROM " + num1 +" to " + num2 + " = " + tot1);

</SCRIPT>

</BODY></HTML>

168

Page 169: internet prgramming-notes

OUTPUT

JAVA SCRIPT PROGRAM USING WHILE FOR LOOP TO PRINT SUM FROM STARTING NUMBER TO ENDING NUMBER

169

Page 170: internet prgramming-notes

<HTML><HEAD> <SCRIPT language = JavaScript> var tot1 = 0; var num1=0,num2=0;i=0; var num1 = prompt("Enter the First Number", "Number1");

var num2 = prompt("Enter the Second Number","number2"); num1 = parseInt(num1); num2 = parseInt(num2); i = num1; while(i<=num2) { tot1 = tot1 + i;

i++; } document.writeln("sum = " + tot1);

</SCRIPT></HEAD>

<BODY> <h1> WELCOME TO JAVA SCRIPT PROGRAM </h1> <SCRIPT language = "JavaScript"> document.write("<H2>" + "SUM FROM " + num1 +" to " + num2 + " = " + tot1);

</SCRIPT>

</BODY></HTML>

OUTPUT

170

Page 171: internet prgramming-notes

JAVA SCRIPT PROGRAM USING ARRAY

<SCRIPT language = "JavaScript"> var sum,i; var n = prompt("Enter the no. elements in the array",""); var elements= new Array(n);

171

Page 172: internet prgramming-notes

for(i=0;i<n;i++) { elements[i]=prompt("Enter the array elements",""); elements[i]=parseInt(elements[i]); } sum=0; for(i=0;i<n;i++) { sum=sum+elements[i]; } document.write ("Sum of array elements is " +sum); </SCRIPT>

3.10 OBJECTS

Java script communicates with web browser using object model. There are many number of objects available in Java Script that can be used to control and interact with the web browser.

OBJECT HIERARCHY

Window Navigator

Document History Location

Anchor Link Images Form

Button Checkbox Radio Text Area Submit Hidden Text Password Reset Select

SCOPE

Scope or life refers to the range over which a variable, function or an object. A variable in java script will have value only with in the scope. It can not be referenced outside the function.

PROPERTIES OF WINDOW OBJECT

172

Page 173: internet prgramming-notes

Properties MeaningClosed Returns true if the window is closed else returns Boolean value false.Length Returns the number of frames in the current window Name Returns the name of a windowOpener Returns the name of the window from which it was created. The

return value is String.Parent Refers a window that contains a frameset

METHODS OF WINDOW OBJECT

Methods MeaningonBlur() Triggers when focus is removed from the windowonFocus() Triggers when focus is applied to the windowonError() Triggers when error occurs in the windowonLoad() Triggers when browser finishes loading a document into the windowonUnload() Triggers when user exists from the document within the window

PROPERTIES OF WINDOW OBJECT

The properties of window objects are

1. href 2. protocol 3. host 4. hostname5. port 6. path 7. hash 8. search.

METHODS OF HISTORY OBJECTMethods MeaningLength() Returns the number of entries in the history entityBack() Helps the web browser to load the previous entry in history object.Forward() Helps the web browser to load the next entry in history object.

PROPERTIES OF HISTORY OBJECTProperties MeaningCurrent Contains the URL of the current history entityLength Contains the number of entities in history listPrevious Contains the URL of the previous history stack entityNext Contains the URL of the next history stack entity

3.11 SIMPLE WEB APPLICATIONS

173

Page 174: internet prgramming-notes

SIMPLE WEB APPLICATION FOR STUDENT MARK LISTSIMPLE WEB APPLICATION FOR PAYSLIP GENERATION

Refer Class Note book and assignmet

END OF UNIT III

UNIT – IV: DYNAMIC HTML

174

Page 175: internet prgramming-notes

4.1 Dynamic HTML – Introduction 4.2 Cascading Style Sheets (CSS)4.3 Object Model and Collections 4.4 Event Model 4.5 Filters and Transition 4.6 Data Binding 4.7 Data Control 4.8 ActiveX Control 4.9 Handling of Multimedia Data

4.1 DHTML – DYNAMIC HYPER MARKUP LANGUAGE

DHTML is a new and emerging technology that has evolved to meet the increasing

demand for eye-catching and mind-catching web sites.

DHTML combines HTML with Cascading Style Sheets (CSS) and Scripting

Languages. HTML specifies a web page’s elements like table, frame, paragraph,

bulleted list, etc. CSS can be used to determine an element’s size, color, position and a

number of other features.

Scripting Languages (JavaScript and VBScript) can be used to manipulate the web

page’s elements so that styles assigned to them can change in response to a user’s input.

The combined technology of HTML and CSS becomes DHTML.

Similarly the comined technology of HTML and Scripting Languages also becomes

DHTML.

4.2 CASDING STYLE SHEETS (CSS)

CSS are powerful mechanism for adding styles (e.g. Fonts, Colors, and Spacing) to

web documents.

They enforce standards and uniformity throughout a web site and provide numerous

attributes to create dynamic effects.

175

Page 176: internet prgramming-notes

The advantage of a style sheet includes the ability to make global changes to all

documents from a single location. Style sheets are said to cascade when they combine

to specify the appearance of a page.

The style assignment process is accomplished with the <STYLE>…</STYLE> tags.

SYNTAX:

The attributes that can be specified to the <STYLE> tag are

1. Font Attributes

2. Color and Background attributes

3. Text Attributes

4. Border Attributes

5. Margin Attributes and

6. List Attributes.

HOW TO INTRODUCE STYLE IN HTML PROGRAM?

<HTML><HEAD><STYLE Type = “text/css”>

Predefined tag name {attribute name1:attribute value1; attribute name2:attribute value2; ……attribute name-n:attribute value-n}

<STYLE>

</HEAD>

<BODY>

write the body of program

</BODY>

</HTML>

176

Page 177: internet prgramming-notes

EXAMPLE

<HTML><HEAD><STYLE Type = “text/css”>

h1{text-align:center}

<STYLE>

</HEAD>

<BODY>

<b> <h1> Example for CSS program </h1> </b>

</BODY>

</HTML>

Here the text “Example for CSS program” will be printed in center with bold effect.

Note

1. Here the previous properties of <h1> will be over written, and it takes center effect.

2. Along with user defined tags the predefined tags can also be used.

ATTRIBUTES OF STYLE TAG

Style tag attributes are divided into 6 categories. They are

177

1. Font Attributes

2. Color and Background attributes

3. Text attributes

4. Border attributes

5. Margin attributes

6. List Attributes (Contains only one attribute)

Page 178: internet prgramming-notes

FONT ATTRIBUTES

Attribute

Name

Values

Font-family A comma-delimited sequence of font family names (Serif, sanserif, cursive)

Font-style Normal, italic or oblique.

Font-size A term that denotes absolute size (xx-small, x-small, small, medium, large,

x-large, xx-large), relative size (larger, smaller), a number (of pixels),

percentage (of the parent element’s size.

Font-weight Normal, bold, lighter, or one of the nine numerical values (100,200 to 900)

COLOR AND BACKGROUND ATTRIBUTES

Attributes Values

Color Sets an element’s text-color- a color name or a color code

Background-

color

Specifies the color in an element’s background. A color name or a color

code.

Background-

image

Sets the background image. A URL or none.

Background-

repeat

Within the background image specified, sets up how the image repeats

throughout the page. Repeat-x (repeats horizontally), repeat-y(repeats

vertically), repeat(both), no-repeat.

Text Attributes

Attributes Values

text-decoration Adds decoration to an element’s text- none, underline, overline, line-

through, blink

vertical-align Determines an element’s vertical position. Baseline, sub, super, top, text-

top, middle, bottom, text-bottom, also percentage of the element’s length.

178

Page 179: internet prgramming-notes

text-transform Applies a transformation to the text. Capitalize (puts the text into initial

caps), uppercase, lowercase or none.

text-align Aligns text with an element. Left, right, center, or justify can be given.

text-indent Indents the first line of text. A percentage of the element’s width or a

length.

BORDER ATTRIBUTES

Attributes Values

Border-style Solid, double, groove, ridge, inset, outset

Border-color A color name or color code

Border-width Thin, medium thick or length

Border-top-

width

Thin, medium thick or length

Border-bottom-

width

Thin, medium thick or length

Border-left-width Thin, medium thick or length

Border-right-

width

Thin, medium thick or length

Border-top Specifies width, color and style

Border-bottom Specifies width, color and style

Border-left Specifies width, color and style

Border-right Specifies width, color and style

Border Sets all the properties at once

179

Page 180: internet prgramming-notes

Margin Related Attributes

Attributes Values

Margin-top Percent, length or auto

Margin-bottom Percent, length or auto

Margin-left Percent, length or auto

Margin-right Percent, length or auto

Margin Percent, length or auto

List Attributes

Attributes Values

List-style-type Disc, circle, square, decimal, lower-case, upper-roman, lower-roman,

lower-alpha, upper-alpha, none

THE UNITS OF MEASUREMENTS

The attribute values related to number values can have the following measurements.

Unit name Abbreviation Explanation Relative

Em Em The height of a font Yes

Ex Ex Height letter x in a font Yes

Pica Pc 1 pica is 12 points No

Point Pt 1/72 of an inch No

Pixel Px One dot on a screen Yes

Millimeter Mm Printing unit No

Centimeter Cm Printing unit No

Inch In Printing unit No

180

Page 181: internet prgramming-notes

EXTERNAL STYLE SHEETS

External style sheets are composed of standard text, which consists of a series of

entries, each composed of a selector and a declaration.

The selector indicates the HTML element(s) affected by the properties in the

declaration.

These external styles are saved as a file with extension .css which can be linked, to

a web page via the <LINK> tag.

Syntax

<LINK REL = “style sheet HREF = “style sheet file name”>

NOTE: Like <STYLE> tag <LINK> also should be given with in <HEAD>… </HEAD>

tags.

INLINE STYLE SHEETS

1. Inline styles are created and should be used immediately before creating a new

STYLE; otherwise the style will not have any effect.

2. The style information can be added to individual HTML elements using the STYLE

attribute, which is available for several HTML elements. The STYLE attribute is

common to almost all tags.

3. Introduce STYLE attribute as given below,

<h1 STYLE =”font-family: arial; font-size: 16mm; color: green><center><h1>This is example for Inline Style Sheet </h1></center>

181

Page 182: internet prgramming-notes

EXAMPLE FOR STYLE SHEETS

MAIN PROGRAM

<! exmain4.html - exercise no 4 - main program -- >

<html><head><title>Create Web Page for Different Types of Style Sheets></title></head><body bgcolor = "magenda"><p> <font face = "arial" size = "5" color = "blue"> <br> <center> <h1> Main Menu </h1> </center> <hr> <br> <a href = "ex41.html"> 1. Embeded Style Sheet(Cascading)</a> <br> <br> <a href = "ex42.html"> 2. Linked Style Sheet </a> <br> <br> <a href = "ex43.html"> 3. Inline Style Sheet </a> <br> <br> <hr> </font></p></body></html>

<! ex41.html - exercise no 4 - Embedded Style sheet program -- >

<html><head><title>Embedded Style Sheet> </title> <style type = "text/css"> h1 {color:red; font-size:3em; font-family:Arial} h2 {color:blue; font-size:2em; font-family:Helvetica} h3 {font-style:Italic; font-weight:bold; color:green; font-size:2em}

182

Page 183: internet prgramming-notes

h4 {text-align:center} ul {list-style-type:disc; font-size:1em; color:brown; font-weight:bold} </style></head>

<body bgcolor = "pink"> <p> <h1> Panimalar Engineering College </h1> <h4> <h2> Nasarethpet, Poonamallee </h2> </h4> <h4> <h3> Chennai - 602 103 </h3> </h4> <hr> <h3> No. of Courses Offered </h3> <ul> <li> IT </li> <li> CSE </li> <li> ECE </li> </ul> <hr> <h4> <h3> <a href = "EXMAIN4.html" > Back to Main Menu </a> </h3> </h4> </p> </body> </html>

<! ex42.html - exercise no 4 - Linked Style sheet program -- >

style4.css

------------------Main program-----------------------------------------<html><head>

183

h1{color:red; font-size:3em; font-family:Arial} h2 {color:blue; font-size:2em; font-family:Helvetica} h3 {font-style:Italic; font-weight:bold; color:green; font-size:2em} h4 {text-align:center} ul {list-style-type:disc; font-size:1em; color:brown; font-weight:bold}

Page 184: internet prgramming-notes

<title>Linked Style Sheet></title><link rel = stylesheet href = "style42.css" type = "text/css"></head>

<body bgcolor = "cyan"> <p> <h4> <h5> Panimalar Engineering College </h5> </h4> <h4> <h2> Nasarethpet, Poonamallee </h2> </h4> <h4> <h3> Chennai - 602 103 </h3> </h4> <hr> <h3> No. of Courses Offered </h3>

<ul> <li> IT </li> <li> CSE </li> <li> ECE </li> </ul> <hr> <h4> <h3> <a href = "EXMAIN4.html" > Back to Main Menu </a> </h3> </h4> </p></body></html><! ex43.html - exercise no 4 - Inline Style sheet program -- ><html><head><title>Inline Style Sheet></title></head> <body bgcolor = "yellow" > <p> <h2 style = "color:red; font-size:3em; font-family:Arial"> <center> <h2> Panimalar Engineering College </h2> </center>

<h3 style = "color:blue; font-size:2em; font-family:Helvetica"> <center> <h3> Nasarethpet, Poonamallee </h3> </center>

<h4 style = "font-style:normal; font-weight:bold; color:brown; font-size:2em"> <center> <h4> Chennai - 602 103 </h4> </center> <hr> </p>

184

Page 185: internet prgramming-notes

<p> <font face = "arial" size = "5" color = "blue" > <h1> No. of courses offered <h1> <ul type = disc> <li> IT <li> CSE <li> ECE <li> EEE </ul> <center> <a href = "EXMAIN4.html" > Back to Main Menu </a> </center> </font> </p></body></html>

Note: In Inline style sheet STYLE should be used before creating a new style, otherwise style will not have any effect.

In any type of CSS program user can use predefined styles along with the user defined styles.

185

Page 186: internet prgramming-notes

OUTPUTMAIN PROGRAM

186

Page 187: internet prgramming-notes

EMBEDDED OR CASCADING STYLE SHEET

187

Page 188: internet prgramming-notes

EXTERNAL OR LINKED STYLE STHEET

188

Page 189: internet prgramming-notes

INLINE STYLE SHEET

4.3 OBJECT MODEL AND COLLECTIONS

The object model allows web authors to control the presentation of their pages and gives them access to all the elements on their web page.

The whole web page – elements, forms, frames, tables, etc – is represented in an object hierarchy.

Using scripting, an author is able to retrieve and modify any properties or attributes of the web page dynamically.

JAVA SCRIPT – OBJECTS

Java script uses objects to perform many tasks and therefore is referred to as an object based programming language.

There are different objects in Java script

189

Page 190: internet prgramming-notes

1. MATH OBJECT

Method Description ExampleAbs( x ) Absolute value of x abs ( 7.2 ) is 7.2, abs(-5.6) is 5.6Ceil( x ) Rounds x to the smallest integer not less

than xceil( 9.2 ) is 10.0

Cos( x ) Trigonometric cosine of x (x in radians) cos ( 0.0 ) is 1.0Exp( x ) Exponential method exp( 1.0 ) is 2.71828floor( x ) Rounds x to the largest integer not greater

than xfloor( 9.2 ) is 9.0

log (x) Natural logarithm of x (base e) log ( 2.7182 ) is 1.0max( x, y ) Largest value of x and y Max(10,40)Min( x, y ) Smaller value of x and y Min(10,40)Pow( x, y ) X raised to power y Pow(2,3)round ( x ) Rounds x to the closest integer Round(20.456)sin ( x ) Trigonometric sine of x (x in radians) Sin(2)Sqrt ( x ) Square root of x Sqrt(25)tan ( x) Trigonometric tangent of (x in radians) Tan(1)

2. STRING OBJECT

String can be assigned to a variable in a declaration. The declaration is

var color = “blue” or var name = “peter”

Method Description

charAt( index ) Returns a string containing the character at the specified indexcharCodeAt( index) Returns the Unicode value of the character at the specified index. If there is

no character at the index, returns NaN (Not a number)concat ( string ) Concatenates its argument to the end of the string that invokes the method.slice( start, end ) Returns a string containing the portion of the string from index start through

index end. If the end is not specified, the method returns a string from the end of the string.

split ( string ) Splits the source string into an array of strings or tokens.substr( start, end ) Returns a string containing the characters from index start up to but not

including index end in the source string.toLowerCase(), toUpperCase()

Converts uppercase into lowercaseConverts lowercase into uppercase.

Blink, strike, sub, sup Gives blinking, strike through, subscript and superscript respectivelytan ( x) Trigonometric tangent of (x in radians)

190

Page 191: internet prgramming-notes

3. DATE OBJECT

UTC – Coordinated Universal TimeGMT – Greenwich Mean Time

Method Description

getdate()getUTCDate()

Returns a number from 1 to 31 representing the day of the month in local time or UTC.

getDay() Returns a number from 0 (Sunday) to 6 (Saturday) representing the day of the week in local time or UTCgetUTCDay()

getFullYear() Returns the year as a four digit number in ocal time of UTC.getUTCFullYear()getHours()getUTCHours()

Returns a number from 0 to 23 representing hours since midnight in local time or UTC.

roUTCString() Returns a string representation of the date and time in the form 19 sep 2001valueOf() The time in number of milliseconds since midnight, January 1, 1970

BOOLEAN AND NUMBER OBJECTS

Method Description toString( radix ) Returns the string representation of the number. The

optional radix argument (a number from 2 to 36) specifies the number’s base. For example, radix 2 results in the binary representation of the number, 8 represents the octal representation.

valueof() Returns the numeric valuenumber.MAX_VALUE This property represents the largest value that can be

stored I a javascript program – approximately 1.79E+308number.MIN-VALUE This property represents the smallest value that can be

stored I a java script program – approximately 2.22E-308number.Nan This property represents not a number number.NEGATIVE_INFINITY This property represents a value less than –

Number.MAX_VALUEnumber.POSITIVE_INFINITY This property represents a value greater than –

Number.MAX_VALUE

191

Page 192: internet prgramming-notes

DOCUMENT OBJECT

Method Description

write( string ) Writes the string to the HTML document as XHTML codewriteln( string ) Writes the string to the HTML document to a new linedocument.cookie This property is a string containing the values of all the

cookies stored on the user’s computer for the current document.

Document.lastmodified This property is the date and time that this document was last modified.

WINDOW OBJECT

Method Description

open( url, name, options ) Creates a new window with the URL of the window set to url, the name set to name, and the visible features set by the string passed in as option.

prompt( prompt, default ) Displays dialog box.close() Closes the current window and deletes its object from

memoryBlur() This method takes focus away from the windowwindow.document This property contains the document object representing

the document currently inside the windowwindow.closed Set to true/false if window is closed or not respectivelywindow.opener Open the current window, if such a window exists.

COOKIES

Cookies provide web developers with a tool for personalizing web pages.

A cookie is a piece of data that is stored on the user’s computer to maintain information about the client during and between browser sessions.

192

Page 193: internet prgramming-notes

OBJECT REFERENCING

The simplest way to reference an element is by using the element’s id attribute.

The element is represented as an object, and its various XHTML attributes become properties that ca be manipulated by scripting.

EXAMPLE PROGRAM

<!-- SCRIPT PROGRAM - FOR OBJECT REFERENCING>

<html><head><title> Object reference program </title>

<Script Language = "JavaScript"> function start() { alert( pText.innerText ); pText.innerText = "Thanks for comming"; }

</script></head>

<body onload = "start()"> <p id = "pText"> Welcome to our web page</p> </body></html>

193

Page 194: internet prgramming-notes

OUTPUT

194

Thanks for coming

Page 195: internet prgramming-notes

COLLECTIONS ALL AND CHILDREN

Collections, which basically arrays of related objects on a page. There are several special collections in the object model.

DHTML OBJECT MODEL

Object or Collection

Description

Window Represents the browsers window and provides access to the documentDocument Provides access to DHTML Body history Keeps track of the sites visited by the browser user.Navigator Contains information about the web browser, such as the name of the

browser, the version etc.Location Contains the URL of the rendered document.Event Can be used in an event handler to obtain information about the event

195

Window

Screen

Frames

History

Navigator

Location

Document

Event

Document

Plugins

All

Anchors

Applets

Body

Embeds

Filters

Forms

Images

Page 196: internet prgramming-notes

that occurred.All Many objects have an all collection that provides access to every

element contained in the object. For example body element provides access to every element in the form.

Anchors Collection contains all the anchor element that have a name or id attribute

Frames Contains window objects that represent each frame in the browser window. Each frame is treated as its own sub window.

Scripts Contains all the script elements in the HTML windowStyleSheets Contains style sheet object that represent each style element in the

XHTML document and each style sheet included in the XHTML document via link.

<!-- COLLECTION ALL AND CHILDREN<!--------------------------------------------------->

<html><head><title> COLLECTIONS ALL AND CHILDREN </title>

<Script Language = "JavaScript"> var elements = ""; function start() { for (var i = 0; i < document.all.length; i++) elements += "<br />" + document.all[ i ] . tagName;

pText.innerHTML += elements; alert( elements ); }

</script></head>

<body onload = "start()"> <p id = "pText"> Elements on this web page: </p>

196

Page 197: internet prgramming-notes

</body></html>

OUTPUT

DYNAMIC HTML - OBJECT MODEL AND COLLECTIONS

1. The Dynamic HTML Object Model gives web authors great control over the presentation of their pages by giving them access to all the elements on their web page. The whole web page –elements, forms, frames, tables, etc – represented in an object hierarchy.

2. The simplest way to reference an element is by its id attributes. The element is represented as an object, and its various XHTML attributes become properties that can be manipulated by scripting.

3. The innerText property of the object refers to the text contained in the element.

4. Changing the text displayed on screen is a Dynamic HTML ability called dynamic content.

5. Every element has its own all collection consisting of all the elements contained in the element.

197

Page 198: internet prgramming-notes

4.4 DYNAMIC HTML – EVENT MODEL

Dynamic HTML with the event model exists so that scripts can respond to user interactions and change the page accordingly. This makes web applications more responsive and user friendly and can reduce server load.

MORE DHTML EVENTS

Event Description

onbeforecut Fires before a selection is cut to the clipboardonbeforecopy Fires before a selection is copy to the clipboardonbeforepaste Fires before a selection is paste to the clipboard

onbeforeupdate Fires before a data source is updatedonafterupdate Fires after a data source is updated

onrowenter,onrowexit,onrowsdelete,onrowsinserted

Related to rows.

onhelp, onkeydown, onkeyup

Fires help, keydown and keyup respectively

ondbclick, ondrag, ondroponchange Fires when a new change occurred

<!-- EVENT MODEL FOR ONCLICK EVENT – PROGRAM 1<!----------------------------------------------------->

<?xml version = "1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml">

<head>

<title> EVENT MODEL - ON CLICK EVENT </title>

198

Page 199: internet prgramming-notes

<script type = "text/javascript" for = "para" event = "onclick">

alert("Hai Clik performed");

</script></head>

<body><p id = "para"> Click on this button </p>

<input type = "button" value = "Click Here" onclick = "alert( 'Try agin' )" />

</body></html>

<!--------------------------------------------------------------------------------><! NOTE><! ------>

<! para represents p element>

<! Attribute id specifies a unique identifier foran XHTML element.>

<!--------------------------------------------------------------------------------->

OUTPUT

199

Page 200: internet prgramming-notes

EVENT BUBBLING

1. Event bubbling is the process whereby events fired in child elements "bubble” Up their parser elements.

2. When a child event is fired, the event is first delivered to the child’s event handler, then to the parent's event handler.

3. If you intend to handle an event in a child element, you might need to cancel the bubbling of the event in the child element's event-handling code by using the cacelBubble property of the event object.

EXAMPLE FOR EVENT BUBBLING

<?xml version = "1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml">

<head>

<title> EVENT BUBBLING </title>

<script type = "text/javascript">

function documentClick() { alert( "You clicked in the document" ); }

function paragraphClick( value ) { alert( "You clicked the text" );

if ( value ) event.cancelBubble = true;

200

Page 201: internet prgramming-notes

}

document.onclick = documentClick;

</script></head>

<body>

<p onclick = "paragraphClick( false )"> Click here </p> <p onclick = "paragraphClick( true )"> Click here too!</p>

</body></html>

OUTPUT

201

Page 202: internet prgramming-notes

DYNAMIC STYLES – EXAMPLE PROGRAM

Dynamic styles are used to change effect during run time.

<!-- DYNAMIC STYLES EXAMPLE PROGRAM - FOR CHANGING THE BACKGROUND COLOR ACCORDING TO THE GIVEN INPUT COLOR<!----------------------------------------------------------------------------------------->

<?xml version = "1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml">

<head>

<title> Object model - Dynamic styles </title>

<script type = "text/javascript">

function start() { var inputColor = prompt("Enter a color for the " + "background of this page", ""); document.body.style.backgroundColor = inputColor; } </script>

202

Page 203: internet prgramming-notes

</head><body onload = "start()"> <p> <h1> Welcome to our web site </h1> </p></body></html>

OUTPUT

Since the background color is given as white the output is displayed as follows:

DYNAMIC STYLES – EXAMPLE 2 – for printing text in Big or normal font size

<!-- DYNAMIC STYLES - USER DEFINED <!------------------------------------------>

<?xml version = "1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml"><head>

<title> Object model - Dynamic styles - using style tag </title>

<style type = "text/css"> .bigText { font-size: 3em; font-weight: bold }

203

Page 204: internet prgramming-notes

.mediumText { font-size: 1.5em; font-weight: bold }

.smallText { font-size: .75em } </style>

<script type = "text/javascript">function start(){ var inputClass = prompt( "Enter a className for the text " + "(bigText or smallText)", ""); pText.className = inputClass;}</script></head>

<body onload = "start()">

<p id = "pText"> Welcome to our web site </p></body></html>

OUTPUT

The input value can be either (bigText or smallText)

If the input value is bigText, then the output is

If the input value is smallText, then the output is

OUTPUT

204

Page 205: internet prgramming-notes

4.5 DYNAMIC HTML – FILTERS TRANSITIONS (Changeover, conversion, shift)

Filters and transitions are specified with the CSS filter property.

Applying filters to text and images causes changes that are persistent.

Transitions are temporary: applying a transition allows you to transfer from one page to another with a pleasant visual effect, such as a random dissolve.

Filters and transitions do not add content to your pages – rather, they present existing content in an engaging manner to capture the user’s attention.

Each of the visual effects achievable with filters and transitions if programmable, so these effects can be adjusted dynamically by programs that respond to user-initiated events, such as mouse clicks and keystrokes.

FLIP - FILTERS – FLIPv AND FLIPh

The flipv and fliph filters mirror text or images vertically and horizontally.

<!-- EVENT MODEL FOR ONCLICK - FILTERS1.HTML<!------------------------------------------>

<?xml version = "1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml">

<head>

<title> THE FLIP FILTER - FILTERS1.HTML </title>

<style type = "text/css">

body { background-color: cyan } table { font-size: 3em; font-family:arial,

205

Page 206: internet prgramming-notes

sans-serif; background-color:pink; border-style: ridge}

td { border-style: groove; padding: lex }

</style </head>

<body>

<table>

<tr>

<!-- Filters are applied in style declarations ----> <! ------------------------------------------------>

<td style = "filter: fliph"> Text </td> <td> Text </tr>

<!-- More than one filter can be applied at once----> <! ------------------------------------------------>

<tr>

<td style = "filter: flipv fliph"> Text </td> <td style = "filter: flipv"> Text </td> </tr>

</table> </body></html>

206

Page 207: internet prgramming-notes

OUTPUT

fliph filter applied

filpv filter applied

Both

4.6 DATA BINDING

With data binding, data need to longer reside exclusively on the server.

Data can be maintained on the client, in a manner that distinguishes it from the XHTML markup on the page.

Typically, data is sent to the client. All subsequent manipulations than take place on the data directly on the client, thus eliminating server activity and network delays.

Once it is available on the client, the data can be sorted and filtered in various ways.

In data binding technology, data made on the client do not propagate (spread, broadcast) back to the server.

Once it is available on the client, the data can be sorted and filtered in various ways.

To bind external data to XHTML elements, Internet Explorer employs software capable of connecting the browser to live data sources. These are known as Data Source Objects (DSOs).

207

Page 208: internet prgramming-notes

The most popular DSO is – the Tabular Data Control (TDC).

RECORDSETA recordset is simply a set of data or rows to be accessed by the program. It contains the following recordset object methods.

1. MoveNext – used to move the recordset to the next row.2. MovePrevious – used to move the recordset to the previous row.3. MoveFirst – used to move the recordset to the first record immediately.4. MoveLast – used to move the recordset to the last record immediately.

Note move previous and move next methods should be used before checking BOF(), EOF() methods respectively.

4.7DATA CONTROL4.8ACTIVX CONTROL

SAMPLE PROGRAM:

<html><head><object id="colors" classid = "CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"><param name="DataURL" value="color.txt"><param name="UseHeader" value="TRUE"><param name="TextQualifier" value="@"><param name="FieldDelim" value="|"></object><script>var rs=colors.recordset;

function display(){ recno.innerText="Record Number =" + rs.absolutePosition; test.style.color=rgbval.innerText;

}

208

Page 209: internet prgramming-notes

function forward(){rs.moveNext();if(rs.EOF) rs.moveFirst();display(); }</script>

</head><body onload="display()" onclick="forward()">Color Name :<span id="rgbtext" datasrc="#colors" datafld="colorName"></span> <br>Color Hex Value :<span id="rgbval" datasrc="#colors" datafld="ColorHexVal"></span><br>datafld="ColorHexVal"></span><br><span id="recno" ></span><br>

<h1 id ="test" style="color:blue"> testing </h1></body></html>

COLOR.TXT:

@colorName@|@ColorHexVal@@red@|@#FF0000@@green@|@#00FF00@@blue@|@#0000FF@@black@|@#000000@@white@|@#FFFFFF@

209

Page 210: internet prgramming-notes

OUTPUT WINDOW:

COLOR MOVING

SAMPLE PROGRAM:

<html><head><object id="colors" classid = "CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"><param name="DataURL" value="color.txt"><param name="UseHeader" value="TRUE"><param name="TextQualifier" value="@"><param name="FieldDelim" value="|"></object>

210

Page 211: internet prgramming-notes

<script>var rs=colors.recordset;

function display(){ recno.innerText="Record Number =" + rs.absolutePosition; test.style.color=rgbval.innerText; }

function move(loc){switch(loc){case "first":

rs.moveFirst();break;

case "last": rs.moveLast();break;

case "next": rs.moveNext();if(rs.EOF)

rs.moveFirst();break;

case "prev": rs.movePrevious();if(rs.BOF)

rs.moveLast();break;

}display();}</script>

</head><body onload="display()" >Color Name :<span id="rgbtext" datasrc="#colors" datafld="colorName"></span> <br>Color Hex Value :<span id="rgbval" datasrc="#colors" datafld="ColorHexVal"></span><br>

211

Page 212: internet prgramming-notes

<span id="recno" ></span><br> <br>

<input type="button" value="movefirst" onclick="move('first')"><input type="button" value="moveLast" onclick="move('last')"><input type="button" value="movenext" onclick="move('next')"><input type="button" value="moveprevious" onclick="move('prev')"><h1 id ="test" style="color:blue"> testing </h1></body></html>

OUTPUT WINDOW

212

Page 213: internet prgramming-notes

COLOR SORT

SAMPLE PROGRAM:

<html><head><object id="colors" classid = "CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"><param name="DataURL" value="color.txt"><param name="UseHeader" value="TRUE"><param name="TextQualifier" value="@"><param name="FieldDelim" value="|"></object>

</head><body ><h1> Binding to an Table </h1>

<Table datasrc="#colors" border=5>

<caption>Sort by :<select onchange="colors.Sort=this.value;colors.Reset();"><option value="colorName"> Color Name (Asce) </option><option value="-colorName"> Color Name (Desc) </option><option value="colorHexVal"> Color Hex (Asce) </option><option value="-colorHexVal"> Color Hex (Desc) </option></select>

</caption><thead><tr><th> Color Name </th><th> Color RGB </th></tr></thead>

<tbody><tr><td><span datafld="colorName"> </span> </td>

213

Page 214: internet prgramming-notes

<td><span datafld="ColorHexVal"> </span> </td></tr></tbody></table></body></html>

OUTPUT WINDOW:

BINDING TO AN TABLE EXAMPLE (USING COLOR.TXT FILE

SAMPLE PROGRAM:

<html><head><object id="colors" classid = "CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"><param name="DataURL" value="color.txt"><param name="UseHeader" value="TRUE"><param name="TextQualifier" value="@">

214

Page 215: internet prgramming-notes

<param name="FieldDelim" value="|"></object>

</head><body ><h1> Binding to an Table </h1>

<Table datasrc="#colors" border=5>

<thead><tr><th> Color Name </th><th> Color RGB </th></tr></thead>

<tbody><tr><td><span datafld="colorName"> </span> </td><td><span datafld="ColorHexVal"> </span> </td></tr></tbody>

</table></body></html>

215

Page 216: internet prgramming-notes

OUTPUT WINDOW:

4.9 HANDLING OF MULTIMEDIA DATA

216

Page 217: internet prgramming-notes

IMAGE MOVE - SAMPLE PROGRAM:

<html><head>

<object id="images" classid = "CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"><param name="DataURL" value="img.txt"><param name="UseHeader" value="TRUE"></object>

<script>var rs=images.recordset;

function display(){ recno.innerText="Record Number =" + rs.absolutePosition;

}

function move(loc){switch(loc){case "first":

rs.moveFirst();break;

case "last": rs.moveLast();break;

case "next": rs.moveNext();if(rs.EOF)

rs.moveFirst();break;

case "prev": rs.movePrevious();if(rs.BOF)

rs.moveLast();break;

217

Page 218: internet prgramming-notes

}display();}</script>

</head><body onload="display()" ><span id="recno" ></span><br> <br>

<img datasrc="#images" datafld="image" style="position:relative ;left:100; " width=300 height=300> <br>

<input type="button" value="movefirst" onclick="move('first')"><input type="button" value="moveLast" onclick="move('last')"><input type="button" value="movenext" onclick="move('next')"><input type="button" value="moveprevious" onclick="move('prev')">

</body></html>

IMG.TXT:

imageE:\images\image1.bmpE:\images\image2.bmpE:\images\image3.bmpE:\images\image4.bmpE:\images\image5.bmpE:\images\image6.bmpE:\images\image7.bmpE:\images\image8.bmpE:\images\image9.bmp

OUTPUT WINDOW:

218

Page 219: internet prgramming-notes

END OF UNIT - IV

219

Page 220: internet prgramming-notes

UNIT – V: SERVER SIDE PROGRAMMING

5.1 Servlets 5.2 Deployment of simple servlets 5.3 Web server (Java web server / Tomcat / Web logic) 5.4 HTTP GET and POST requests 5.5 Session tracking 5.6 Cookies 5.7 JDBC 5.8 Simple web applications 5.9 Multi-tier applications.

5.1 SERVLETS

Sun Microsystems, through the Java Community Process, is responsible for the development of the Servlet and JavaServer Pages specifications.

The reference implementation of both these standards is under development by the Apache Software Foundation (www.apache.org) as part of the Jakarta Project (jakarta.apache.org)

Study Lab exercise for Servlet example program

5.2 DEPLOYMENT OF SIMPLE SERVLETS (DEPLOYING A

SERVLET):

A web application has a well known directory structure which all the files that are part

of web application reside.

The web application directory structure contains a context root –the top level directory

for an entire application.

Context root This is the root directory for the web application.all the jsps,html

220

Page 221: internet prgramming-notes

documents ,servlets and supporting files such as images,and class files

reside in this directory or its subdirectories.

WEB-INF This directory contains the web application deployment descriptor

WEB-INF/

classes

This directory contains the servlets class files and other supporting class

used in the application.

WEB-INF/lib This directory contains java archive files .the jar files can contain

servlet class files and other supporting class files.

Configuring the context root for a web application in tomcat requires creating a sub

directory in the web apps directory.

After configuring the context root ,we must configure our web application to handle

requests.this configuration occurs in web.xml as follows:

<web-app>

<display-name>

internet world wide web and how to program

</display-name>

<description>

this is the web application in which we demonstrate our jsp and

servlet examples

</description>

<servlet>

<servletname> welcome1</servletname>

<description>a simple servlet that handles an http get

request</description>

<servlet-class>Welcomeservlet</servlet-class>

221

Page 222: internet prgramming-notes

<servlet>

<servlet-mapping>

<servletname>welcome1</servletname>

<url-pattern>/welcome1</url-pattern>

</servlet-mapping>

</web-app>

Element web-app defines the configuration of each servlet in the web

application and the servlet mapping for each servlet..

Element display-name specifies a name that can be displayed to the

administrator of the server.

Element servlet desribes a servlet.

Element servlet-name specifies the name of the servlet

Element description defines a description of the servlet.

Servlet-mapping element specifies the servlet name and its url name.

We can run our servlet by using the url:

http://localhost:8080/iw3htp3/welcome1

Finally we are ready to place our files into the appropriate directories .create a directory

structure as follows:

Iw3htp3

Servlets

Welcomeservlet.html

WEB-INF

Web.xml

222

Page 223: internet prgramming-notes

Classes

Welcomeservlet.class

After creating this structure we can run our application by opening a web browser and

type:

http://localhost:8080/iw3htp3/servlets/welcome.html

5.3 INTRODUCTION TO JAVA WEB SERVER

THE TERM WEB SERVER CAN MEAN ONE OF TWO THINGS:

1. A computer program that is responsible for accepting HTTP requests from clients, which are known as web browsers, and serving them HTTP responses along with optional data contents, which usually are web pages such as HTML documents and linked objects (images, etc.).

2. A computer that runs a computer program which provides the functionality described in the first sense of the term.

In other words, Web server is an application that responds to HTTP requests by returning ‘web’ resources (e.g., HTML files, images, applets,CGI output, …) over the Internet.

5.3.1 THE JAVA WEB SERVER For the developer that dabbles in Java programming, servlets can be used to turn the

Java Web Server into their own personal Web application server.

One of the slickest pieces of software to come from JavaSoft recently is the Java Web Server (formerly known as Jeeves).

While the Java Web Server can be used for serving up Web sites just like any other Web server (using SSL, CGI scripts, authentication and more), its ability to use Java servlets is what makes it stand out from other Web servers.

For the developer that dabbles in Java programming, servlets can be used to turn the Java Web Server into their own personal Web processor.

Servlets, (server-side applets), are very similar to applets in that they can both be included in Web pages and they both run on any Java-enabled platform-but servlets have no graphical front end. Servlets can be used to insert, sort and delete data from a database, create

223

Page 224: internet prgramming-notes

roaming Web agent servlets, interactive HTML editors…or perform just about any Web-related function.

Not only can you use servlets with the Java Web Server, but you can also use them with Netscape FastTrack and Enterprise servers, the JigSaw Web server, and the Acme Serve Web server. As the development and acceptance of Java continues to escalate, more and more Web servers will conform to the Java Server API.

To create servlets you'll need to download the Servlet Development Kit from the JavaSoft site and you'll also need to already have the Java Development Kit 1.1 installed.

You can also get the JDK 1.1. from JavaSoft's site, but keep in mind that applets produced with the JDK 1.1 are not yet supported by the release versions of Netscape Navigator or Microsoft Internet Explorer (they should be supported in the next release of both browsers).

The Java Web Server was created using the Java Server API. The Java Server API is a "cross-platform, extensible framework for the creation of network-centric server solutions."

The Java Web Server is one of the first applications that Sun developed using the Java Server API. It is administered (locally or remotely) through any Java-capable browser.

While the Java Web Server is already a very full-featured Web server, it ships with several Core servlets that further enhance its functionality.

THE CORE SERVLETS INCLUDE:

1. File Servlet - provides the standard document serving capabilities of the Java Server, including caching and parsing for SSIs.

2. Invoker Servlet - invokes other servlets which are explicitly requested by name

3. Server Side Include Servlet - any file with a .shtml extension is parsed and written out to the client, and the embedded servlet is loaded .

4. Admin Servlet - provides administration of the Java Web Server through a browser front end.

5. CGI Servlet - acts as a gateway for the CGI 1.1 interface; any standard CGI 1.1 program will run in this platform..

6. Imagemap Servlet - enables the use of standard NCSA server-side imagemaps

224

Page 225: internet prgramming-notes

AMONG THE SERVLETS THAT ARE INCLUDED, BUT NOT DOCUMENTED, ARE:

1. BBoardServlet - a bulletin board servlet

2. ChatServlet - a real time chat servlet

3. DBDataEncoder - encodes data into a database

4. MailServlet - take the input from a form and emails it

5. RedirectServlet - a servlet to redirect the client

6. SimpleFormServlet - a servlet that takes form input and redirects it into an HTML page

HOW JAVA WEB SERVERS WORK

A web server is also called a Hypertext Transfer Protocol (HTTP) server because it uses HTTP to communicate with its clients, which are usually web browsers. A Java-based web server uses two important classes, java.net.Socket and java.net.ServerSocket, and communicates through HTTP messages. Therefore, this article starts by discussing of HTTP and the two classes.

HTTP is the protocol that allows web servers and browsers to send and receive data over the Internet. It is a request and response protocol--the client makes a request and the server responds to the request. HTTP uses reliable TCP connections, by default on TCP port 80. The first version of HTTP was HTTP/0.9, which was then overridden by HTTP/1.0. The current version is HTTP/1.1

In HTTP, the client always initiates a transaction by establishing a connection and sending an HTTP request. The server is in no position to contact a client or to make a callback connection to the client. Either the client or the server can prematurely terminate a connection. For example, when using a web browser, you can click the Stop button on your browser to stop the download process of a file, effectively closing the HTTP connection with the web server.

225

Page 226: internet prgramming-notes

5.3.2 TOMCAT

TOPICS COVERED IN TOMCAT:

DEFINITIONS OF TOMCAT. JBOSS. JAKARTA. INSTALLING AND CONFIGURING TOMCAT. EMBEDDING TOMCAT INTO JAVA APPLICATIONS . CONFIGURING TOMCAT AND APACHE WITH JK 1.2 USING TOMCAT FOR SECURITY REALMS.

DEFINITION FOR TOMCAT:

The Tomcat server is a Java based Web Application container that was created to run Servlets and JavaServer Pages (JSP) in Web applications.

A popular Java servlet container from the Apache Jakarta project. Tomcat uses the Jasper converter to turn JSPs into servlets for execution. Tomcat is widely used with the JBoss application server.

JAKARTA:

A project of the Apache Software Foundation that manages numerous open source products for the Java platform. Examples are the Tomcat servlet container, Cactus test framework, Tapestry application framework and Ant compilation utility.

JBOSS:

A popular open source application server that supports Enterprise JavaBeans(EJBs). In order to run servlets and JSPs, a servlet container, such as Apache's Tomcat, is used in conjunction with JBoss

JAVASERVER PAGES: Tomcat is a free, open-source implementation of Java Servlet and JavaServer Pages

technologies developed under the Jakarta project at the Apache Software Foundation.

Tomcat is available for commercial use under the ASF license from the Apache web site in both binary and source versions.

226

Page 227: internet prgramming-notes

Sun adapts and integrates the Tomcat code base into the J2EE SDK and owns and evolves the JavaServer Pages and Java Servlets specifications under the Java Community Process.

PRODUCT FEATURES: Tomcat 3.x (inital release) Tomcat 4.x Tomcat 5.x Tomcat 6.x

INSTALLING AND CONFIGURING TOMCAT:

STEPS:

the requirements for installing and configuring Tomcat, the process of installing and configuring Tomcat, and deploying Tomcat web applications. Requirements for Installing and Configuring

TomcatBefore performing the tasks outlined by this article you will need to download the items listed in the Table 1.

Table 1. Requirements

Name Location

Tomcat 4.0 beta 1 http://jakarta.apache.org/

JDK 1.3 Standard Edition

INSTALLING TO WINDOWS NT/2000

The first thing you need to do is install the JDK, following its installation instructions.

For this article we are installing the JDK to drive D:, therefore my JAVA_HOME directory is D:\jdk1.3.

Now you need to extract the Tomcat server. Again, we are installing to drive D:, which will make my TOMCAT_HOME directory D:\jakarta-tomcat-4.0-b1.

After you have extracted Tomcat, the next step is putting your JDK into Tomcat's CLASSPATH and setting the TOMCAT_HOME environment variable.

227

Page 228: internet prgramming-notes

To do this under NT/2000, you must

1. Open the NT/2000 Control Panel. You should see an image similar to Figure 1.

2. Start the NT/2000 System Application and select the Advanced tab. You should see a screen similar to Figure 2.

228

Page 229: internet prgramming-notes

3. Select the Environment Variables button. You will see a screen similar toFigure3

4. Select the New button on the System Variables section of the Environment Variables dialog. Add a JAVA_HOME variable and set its value to the location of your JDK installation. Figure 4 shows the settings associated with my installation.

229

Page 230: internet prgramming-notes

1. Repeat Step 4 using TOMCAT_HOME for the variable name and the location of your Tomcat installation as the value. For my installation I am setting the value to D:\jakarta-tomcat-4.0-b1

EMBEDDING TOMCAT INTO JAVA APPLICATIONS

Java Web Applications :

This article is the first in a series of articles on Apache's Jakarta-Tomcat server.

The Tomcat server is a Java-based Web Application container that was created to run Servlet and JavaServer Page web applications. It has become the reference implementation for both the Servlet and JSP specifications.

The purpose of this first article is to give you a basic understanding of web applications.

STEPS:

The Definition of a Web Application, The Directory Structure of a Web Application, The Web Application Deployment Descriptor, and Packaging a Web Application

THE DEFINITION OF A WEB APPLICATION

A "Web Application is a collection of servlets, html pages, classes, and other resources that can be bundled and run on multiple containers from multiple vendors." To you and me, a web application is anything that resides in the web layer of an application.

One of the main characteristics of a web application is its relationship to the ServletContext. Each web application has one and only one ServletContext.

The following items can exist in a web application: Servlets

230

Page 231: internet prgramming-notes

JavaServer Pages

Utility Classes

Static Documents including, XHTML, images, etc.

Client side classes

Meta information that describes the web application

Note: For this series we will be using the proposed Servlet SDK 2.3.

THE DIRECTORY STRUCT OF A WEB APPLICATION:

The container that holds the components of a web application is the directory structure in which it exists.

The first step in creating a web application is creating this structure. The following table contains a sample web application, named onjava.

Each one of these directories should be created from the <SERVER_ROOT> of the servlet container.

An example of a <SERVER_ROOT> , using Tomcat, would be /jakarta-tomcat-4.0/webapps.

THE WEB APPLICATION DIRECTORY STRUCTURE

/onjavaThis is the root directory of the web application. All JSP and XHTML files are stored here.

/onjava/WEB-INFThis directory contains all resources related to the application that are not in the document root of the application.

/onjava/WEB-INF/classesThis directory is where servlet and utility classes are located.

/onjava/WEB-INF/libThis directory contains Java Archive files that the web application depends upon.

231

Page 232: internet prgramming-notes

THE WEB APPLICATION DEPLOYMENT DESCRIPTOR AND PACKAGING A WEB APPLICATION:

At the heart of all web applications is a deployment descriptor. The deployment descriptor is an XML file named web.xml located in the /<SERVER_ROOT>/applicationname/WEB-INF/ directory.

It describes configuration information for the entire web application. For our application the location of the web.xml file is in the /<SERVER_ROOT>/onjava /WEB-INF/ directory.

Deployment Descriptor Includes the Following Elements:

ServletContext Init Parameters

Localized Content

Session Configuration

Servlet / JSP Definitions

Servlet / JSP Mappings

Mime Type Mappings

Welcome File list

Error Pages

Security

232

Page 233: internet prgramming-notes

WEB.XML

<web-app> <display-name>The OnJava App</display-name> <session-timeout>30</session-

timeout> <servlet>

<servlet-name>TestServlet</servlet-name> <servlet-class>com.onjava.TestServlet</servlet-class> <load-on-startup> 1 </load-

on-startup> <init-param>

<param-name>name</param-name> <param-value>value</param-value>

</init-param> </servlet></web-app>

In this example we are setting three application level elements.

The first of the application level elements is the <display-name>. This element simply describes the name of the web application. It is functionally inoperative.

The second web application level element is the <session-timeout> element. This element controls the lifetime of the application's HttpSession object.

The <session-timeout> value that we have used above tells the JSP/Servlet container that the HttpSession object will become invalid after 30 minutes of inactivity.

The last application level element that we have defined is the <servlet> element. This element defines a servlet and its properties. We will further define the <servlet> elements when we discuss deploying Servlets and JSPs to Tomcat in a subsequent article.

CONFIGURING TOMCAT AND APACHE WITH JK 1.2:1. Configuring Tomcat and Apache using JK v1.2

2. Configuring Tomcat and IIS using JK v1.2

3. Configuring Tomcat and Apache using JK v2

4. Configuring Tomcat and IIS using JK v2

WHAT IS JK V1.2?

233

Page 234: internet prgramming-notes

In the simplest terms, the JK modules, or mod_jk, are conduits between a Web server and the Tomcat JSP/servlet container. They replace the previous Web server module, mod_jserv, which had many shortcomings.

The new JK modules include support for a wider variety of Web servers, better SSL support, support of the AJP13 protocol, and support for the entire Tomcat series from 3.2.x to 5.x.

COMPONENTS REQUIRED TO CNFIGURE TOMCAT AND APACHE:

1) Install Apache as described in its packaged documentation.

2) Test the Apache installation, by starting Apache and opening your browser to http://localhost. You should now see an image similar to Figure

1.

Figure 1 The Apache Installation Test Page

3) Install Tomcat as described by its documentation.

234

Page 235: internet prgramming-notes

4) Set the environment variable JAVA_HOME equal to the root directory of your JDK installation.

5) Set the environment variable CATALINA_HOME equal to the root directory of you Tomcat installation.

6) Test the Tomcat installation by starting Tomcat and opening your browser to http://localhost:8080. You should now see an image similar to Figure 2.

Figurev2. The Tomcat Default Homepage

7) Now shut down both Apache and Tomcat, before moving on to the next sections.Configuring Tomcat and Apache With the JK 1.2 Connector:

It is now time to begin the actual integration between Apache and Tomcat. This process can be broken down into two sections:

Configuring Tomcat and Configuring Apache.

235

Page 236: internet prgramming-notes

CONFIGURING TOMCAT:

To begin our Tomcat and Apache integration, we need to first tell Tomcat that it should start listening for AJP13 requests; both JK and JK2 use AJP13 to communicate with Tomcat.

To do this, we need to add an additional <Connector> element to Tomcat's server.xml file. Add the following entry to server.xml, making sure that it is inside of the <Service> element and immediately follows any previously-defined <Connector> elements.

<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"port="8009" minProcessors="5" maxProcessors="75"acceptCount="10" debug="0"/>

The only two attributes in this <Connector> worth noting are the port and className attributes.

The port attribute tells Tomcat that it needs to open a new Connector that listens to port 8009 for incoming requests.

The className attribute tells Tomcat that all of the requests coming in on this port should be serviced by the Tomcat Connector class org.apache.ajp.tomcat4.Ajp13Connector, which also uses the AJP 1.3 protocol.

CONFIGURING APACHE:

Now that Tomcat is configured to listen to port 8009 for incoming AJP13 request, let's tell Apache to actually talk to Tomcat using that port and protocol.

This part is complicated than Tomcat's equivalent configuration, so I have broken it down into several sections.

CREATE A TOMCAT WORKER

A Tomcat worker is a process that defines a communications link between Apache and a Tomcat container.

Tomcat Workers refers to the actual Jakarta documentation. The Tomcat worker file, in this example, should be named workers.properties and should be copied into the <CATALINA_HOME>/conf directory of the Tomcat instance that you will be integrating with Apache.

236

Page 237: internet prgramming-notes

EXAMPLE:

worker.list=testWorkerworker.testWorker.port=8009

worker.testWorker.host=localhostworker.testWorker.type=ajp13

We can then modify the attributes of that worker explicitly using the following syntax:

worker.testWorker + name of property being modified

PROPERTY:

<workername>.portThe port property defines the port number of this Tomcat worker. This value must match the port attribute of the previously defined Tomcat <Connector> element.

<workername>.hostThe host property defines the hostname of this Tomcat worker. Because we are configuring both Apache and Tomcat on the same host, this value is

currently set to localhost.<workername>.typeThe type property defines the protocol of this Tomcat worker, which

in our case is ajp13.

USING TOMCAT FOR SECURITY REALMS:

In this article, we will Define security realms Describe Memory Realms

Security Realms:

A security realm is a mechanism used for protecting Web application resource.

It gives you the ability to protect a resource with a defined security constraint and

then define the user roles that can access the protected resource.

Tomcat has this type of realm functionality built in.

The component that provides this functionality is the org.apache.catalina.Realm

interface.

237

Page 238: internet prgramming-notes

It provides a mechanism by which a collection of usernames, passwords, and their

associated roles can be integrated into Tomcat.

If you download the Tomcat source, you will find this interface in the following

location:

<tomcat_home>/src/catalina/src/share/org/apache/catalina/Realm.java

MEMORY REALMS:

The first Realm implementation provided with Tomcat is a memory realm.

The class that defines the memory realm is

org.apache.cataline.realm.MemoryRealm.

The MemoryRealm class uses a simple XML file as a container of users. The

following code snippet contains a sample memory realm XML file:

<tomcat-users><user name="tomcat" password="tomcat" roles="tomcat" /><user name="role1" password="tomcat" roles="role1" /><user name="both" password="tomcat" roles="tomcat,role1" /></tomcat-users>

Note: The default location of the MemoryRealms XML file is the <tomcat_home>/conf/tomcat-users.xml.

.Table 1 contains a description of each of the attributes required in the <user> sub-element.

Table 1. The Attributes of the <user> Sub-Element

Attribute Description

Name The name attribute contains a string representing the username that will be used in the login form.

password The password attribute contains a string representing the password that will be used in the login form.

238

Page 239: internet prgramming-notes

Roles The roles attribute contains the role or roles assigned to the named user. This is the value that must match the <role-name> sub-element of the security constraint defined in the web applications web.xml file. If more than one role is assigned to the user, then the value of the roles attribute must contain a comma-separated list of roles.

PROTECTING A RESOURCE WITH A MEMORYREALM:

To actually see how a MemoryRealm works, let's create a realm that protects a sample web application named /onjava. At this point, if you have not already done so, take a look at my previous OnJava article, Deploying Web Applications to Tomcat. We will be using the /onjava web application from it.

The steps involved in setting up a new MemoryRealm are described in the following list.

1) Open <tomcat_home>/conf/server.xml and uncomment the following line.<Realm className="org.apache.catalina.realm.MemoryRealm" />

2) By un-commenting this <realm> entry, you are making the MemoryRealm the default realm implementation for the entire default container. If you cannot find this entry, add it directly under the Engine sub-element.

3) Open <tomcat_home>/webapps/onjava/WEB-INF/web.xml and add the following security constraint:

<security-constraint>    <web-resource-collection>        <web-resource-name>OnJava Application</web-resource-name>        <url-pattern>/*</url-pattern>    </web-resource-collection>    <auth-constraint>        <role-name>onjavauser</role-name>    </auth-constraint></security-constraint>

There are only two sub-elements that you need to focus upon. The first is the <url-pattern> sub-element.

This sub-element defines the URL pattern that will be protected by the resource. The entry you included protects the entire /onjava Web application.

239

Page 240: internet prgramming-notes

The second sub-element, <role-name>, defines the user role that can access the resource protected by the previously defined <url-pattern>.

4) Add the following <login-config> sub-element directly following the <security-constraint>.

<login-config>    <auth-method>BASIC</auth-method>    <realm-name>OnJava Application</realm-name></login-config>

The <login-config> sub-element defines the authentication method for the defined realm. The possible values are BASIC, DIGEST, and FORM.

And the <realm-name> sub-element names the Web resource that this <login-config> maps to.

5) Open <tomcat_root>/conf/tomcat-users.xml and add the following <user> sub-element:<user name="bob" password="password" roles="onjavauser" />

The <user> sub-element you are adding will create a new user in the MemoryRealm database with a name of bob, a password of password, and a role of onjavauser.

You should notice that the value of the roles attribute matches the value of the <role-name> sub-element of the previously-defined <security-contstraint>.

6) To complete this configuration, stop and restart the Tomcat server. Now let's actually look at how your newly defined realm affects the /onjava web application. Point your browser at the following URL: http://localhost:8080/onjava/login.jsp

If everything went according to plan you should see a dialog box similar to the one in Figure 1.

Figure 1. The BASIC Authentication Dialog

240

Page 241: internet prgramming-notes

5.3.3 WebLogic

WebLogic server is based on Java 2 Platform, Enterprise Edition (J2EE), the standard platform used to create Java-based multi-tier enterprise applications. J2EE platform technologies were developed through the efforts of BEA Systems and other vendors in collaboration with the main developer, Sun Microsystems. Because J2EE applications are standardized modules, WebLogic can automate many system-level tasks that would otherwise have demanded programming time. he main features of WebLogic server include connectors that make it possible for any legacy application on any client to interoperate with server applications, Enterprise JavaBean (EJB) components, resource pooling, and connection sharing that make applications very scalable. An administration console with a user interface makes management tasks more efficient and features such as Secure Sockets Layer (SSL) support for the encryption of data transmissions, as well as authentication and authorization mechanisms, make applications and transactions secure.

THE WEBLOGIC SERVER SOLUTION

Today's business environment demands Web and e-commerce applications that accelerate your entry into new markets, help you find new ways to reach and retain customers, and allow you to introduce new products and services quickly. To build and deploy these new solutions, you need a proven, reliable e-commerce platform that can connect and empower all types of users while integrating your corporate data, mainframe applications, and other enterprise applications in a powerful, flexible, end-to-end e-commerce solution. Your solution must provide the performance, scalability, and high availability needed to handle your most critical enterprise-scale computing.

As the industry-leading e-commerce transaction platform, WebLogic Server allows you to quickly develop and deploy reliable, secure, scalable and manageable applications. It manages system-level details so you can concentrate on business logic and presentation.

J2EE PLATFORM

WebLogic Server contains Java 2 Platform, Enterprise Edition (J2EE) technologies. J2EE is the standard platform for developing multitier enterprise applications based on the Java programming language. The technologies that make up J2EE were developed collaboratively by Sun Microsystems and other software vendors, including BEA Systems.

J2EE applications are based on standardized, modular components. WebLogic Server provides a complete set of services for those components and handles many details of application behavior automatically, without requiring programming.

241

Page 242: internet prgramming-notes

WEBLOGIC SERVER 6.1 WITH J2EE 1.2 AND J2EE 1.3 FUNCTIONALITY

BEA WebLogic Server 6.1 is the first e-commerce transaction platform to implement advanced J2EE 1.3 features. To comply with the rules governing J2EE, BEA Systems provides two separate downloads: one with J2EE 1.3 features enabled, and one that is limited to J2EE 1.2 features only. Both downloads offer the same container and differ only in the APIs that are available.

WEBLOGIC SERVER 6.1 WITH J2EE 1.2 PLUS ADDITIONAL J2EE 1.3 FEATURES

With this download, WebLogic Server defaults to running with J2EE 1.3 features enabled. These features include EJB 2.0, JSP 1.2, Servlet 2.3, and J2EE Connector Architecture 1.0. When you run WebLogic Server 6.1 with J2EE 1.3 features enabled, J2EE 1.2 applications are still fully supported. The J2EE 1.3 feature implementations use non-final versions of the appropriate API specifications. Therefore, application code developed for BEA WebLogic Server 6.1 that uses the new features of J2EE 1.3 may be incompatible with the J2EE 1.3 platform supported in future releases of BEA WebLogic Server.

WEBLOGIC SERVER 6.1 WITH J2EE 1.2 CERTIFICATION

With this download, WebLogic Server defaults to running with J2EE 1.3 features disabled and is fully compliant with the J2EE 1.2 specification and regulations.

PRODUCT CD INSTALLERS FOR J2EE 1.2 AND 1.3

In addition to being available at http://commerce.bea.com/downloads/products.jsp, both distributions are provided on the WebLogic Server 6.1 product CD. (On Windows machines, the installer for WebLogic Server with J2EE 1.3 features enabled starts automatically when you insert the CD.)

XML IMPLEMENTATION

WebLogic Server consolidates Extensible Markup Language (XML) technologies applicable to WebLogic Server and XML applications based on WebLogic Server. A simplified version of the Standard Generalized Markup Language (SGML) markup language, XML describes the content and structure of data in a document and is an industry standard for delivering content on the Internet. Typically, XML is used as the data exchange format

242

Page 243: internet prgramming-notes

between J2EE applications and client applications, or between components of a J2EE application. The WebLogic Server XML subsystem supports the use of standard parsers, the WebLogic FastParser, XSLT transformers, and DTDs and XML schemas to process and convert XML files.

APPLICATION DEPLOYMENT ACROSS DISTRIBUTED, HETEROGENEOUS ENVIRONMENTS

WebLogic Server provides essential features for developing and deploying mission-critical e-commerce applications across distributed, heterogeneous computing environments. These features include the following:

Standards leadership—Comprehensive Enterprise Java support to ease implementation and deployment of application components. WebLogic Server is the first independently developed Java application server to achieve J2EE certification.

Rich client options—WebLogic Server supports Web browsers and other clients that use HTTP; Java clients that use RMI (Remote Method Invocation) or IIOP (Internet Inter-ORB Protocol); and mobile devices that use (WAP) Wireless Access Protocol. Connectors from BEA and other companies enable virtually any client or legacy application to work with a WebLogic Server application.

Flexible Web services—WebLogic Server provides a solid platform for deploying Web services as components of a heterogeneous distributed application. Web services use a cross-platform, cross-language data model (XML) to provide interoperability among application components on diverse hardware and software platforms.

WebLogic Server 6.1 uses Web Services Description Language (WSDL) 1.1, an XML-based specification, to describe Web services. WebLogic Web Services use Simple Object Access Protocol (SOAP) 1.1 as the message format and HTTP as a connection protocol.

Enterprise e-business scalability—Efficient use and high availability of critical resources are achieved through Enterprise JavaBean business components and mechanisms such as WebLogic Server clustering for dynamic Web pages, backend resource pooling, and connection sharing.

Robust administration—WebLogic Server offers a Web-based Administration Console for configuring and monitoring WebLogic Server services. A command-line interface for configuration makes it convenient to administer WebLogic Servers ith scripts.

243

Page 244: internet prgramming-notes

E-commerce-ready security—WebLogic Server provides Secure Sockets Layer (SSL) support for encrypting data transmitted across WebLogic Server, clients, and other servers. WebLogic security realms feature user authentication and authorization for all WebLogic Server services. External security stores, such as Lightweight Directory Access Protocol (LDAP) servers, can be adapted to WebLogic realms, enabling single sign-on for the enterprise. The Security Service Provider Interface makes it possible to extend WebLogic Security services and to implement ebLogic Security features in applications.

Maximum development and deployment flexibility—WebLogic Server provides tight integration with and support for leading databases, development tools, and other environments.

 WHAT IS WEBLOGIC EXPRESS?

BEA WebLogic ExpressTM is a scalable platform that serves dynamic content and data to Web and wireless applications. WebLogic Express incorporates the presentation and database access services from WebLogic Server, enabling developers to create interactive and transactional e-business applications quickly and to provide presentation services for existing applications.

WebLogic Express offers many services and APIs available with WebLogic Server, including WebLogic JDBC features, JavaServer Pages (JSP), servlets, Remote Method Invocation (RMI), and Web server functionality.

WebLogic Express differs from WebLogic Server in that WebLogic Express does not provide Enterprise JavaBeans (EJB), Java Message Services (JMS), or the two-phase commit protocol for transactions.

 WEBLOGIC SERVER APPLICATION ARCHITECTURE

WebLogic Server is an application server: a platform for developing and deploying multitier distributed enterprise applications. WebLogic Server centralizes application services such as Web server functionality, business components, and access to backend enterprise systems. It uses technologies such as caching and connection pooling to improve resource use and application performance. WebLogic Server also provides enterprise-level security and powerful administration facilities.

WebLogic Server operates in the middle tier of a multitier (or n-tier) architecture. A multitier architecture determines where the software components that make up a computing

244

Page 245: internet prgramming-notes

system are executed in relation to each other and to the hardware, network, and users. Choosing the best location for each software component lets you develop applications faster; eases deployment and administration; and provides greater control over performance, utilization, security, scalability, and reliability.

WebLogic Server implements J2EE, the Java Enterprise standard. Java is a network-savvy, object-oriented programming language, and J2EE includes component technologies for developing distributed objects. This functionality adds a second dimension to the WebLogic Server application architecture—a layering of application logic, with each layer selectively deployed among WebLogic Server J2EE technologies.

The next two sections describe these two views of WebLogic Server architecture: software tiers and application logic layers.

SOFTWARE COMPONENT TIERS

The software components of a multitier architecture consist of three tiers:

The client tier contains programs executed by users, including Web browsers and network-capable application programs. These programs can be written in virtually any programming language.

The middle tier contains WebLogic Server and other servers that are addressed directly by clients, such as existing Web servers or proxy servers.

The backend tier contains enterprise resources, such as database systems, mainframe and legacy applications, and packaged enterprise resource planning (ERP) applications.

Client applications access WebLogic Server directly, or through another Web server or proxy server. WebLogic Server generally connects with backend services on behalf of clients. However, clients may directly access backend services using a multitier JDBC driver.

THREE-TIER ARCHITECTURE

245

Page 246: internet prgramming-notes

CLIENT-TIER COMPONENTS

WebLogic Server clients use standard interfaces to access WebLogic Server services. WebLogic Server has complete Web server functionality, so a Web browser can request pages from WebLogic Server using the Web's standard HTTP protocol. WebLogic Server servlets and JavaServer Pages (JSPs) produce the dynamic, personalized Web pages required for advanced e-commerce Web applications.

Client programs written in Java may include highly interactive graphical user interfaces built with Java Swing classes. They can also access WebLogic Server services using standard J2EE APIs.

All these services are also available to Web browser clients by deploying servlets and JSP pages in WebLogic Server.

246

Page 247: internet prgramming-notes

CORBA-enabled client programs written in Visual Basic, C++, Java, and other programming languages can execute WebLogic Server Enterprise JavaBeans and RMI (Remote Method Invocation) classes using WebLogic RMI-IIOP. Client applications written in any language with support for the HTTP protocol can access any WebLogic Server service through a servlet.

MIDDLE-TIER COMPONENTS

The middle tier includes WebLogic Server and other Web servers, firewalls, and proxy servers that mediate traffic between clients and WebLogic Server. The Nokia WAP server, part of the BEA mobile commerce solution, is an example of another middle tier server that provides connectivity between wireless devices and WebLogic Server.

Applications based on a multitier architecture require reliability, scalability, and high performance in the middle tier. The application server you select for the middle tier is, therefore, critical to the success of your system.

The WebLogic Server cluster option allows you to distribute client requests and back-end services among multiple cooperating WebLogic Servers. Programs in the client tier access the cluster as if it were a single WebLogic Server. As the workload increases, you can add WebLogic Servers to the cluster to share the work. The cluster uses a selectable load-balancing algorithm to choose a WebLogic Server in the cluster that is capable of handling the request.

When a request fails, another WebLogic Server that provides the requested service can take over. Failover is transparent whenever possible, which minimizes the amount of code that must be written to recover from failures. For example, servlet session state can be replicated on a secondary WebLogic Server so that if the WebLogic Server that is handling a request fails, the client's session can resume uninterrupted on the secondary server. WebLogic EJB, JMS, JDBC, and RMI services are all implemented with clustering capabilities.

BACKEND-TIER COMPONENTS

The backend tier contains services that are accessible to clients only through WebLogic Server. Applications in the backend tier tend to be the most valuable and mission-critical enterprise resources. WebLogic Server protects them by restricting direct access by end users. With technologies such as connection pools and caching, WebLogic Server uses back-end resources efficiently and improves application response.

Backend services include databases, enterprise resource planning (ERP) systems, mainframe applications, legacy enterprise applications, and transaction monitors. Existing enterprise applications can be integrated into the backend tier using the Java Connector

247

Page 248: internet prgramming-notes

Architecture (JCA) specification from Sun Microsystems. WebLogic Server makes it easy to add a Web interface to an integrated backend application.

A database management system is the most common backend service, required by nearly all WebLogic Server applications. WebLogic EJB and WebLogic JMS typically store persistent data in a database in the backend tier.

A JDBC connection pool, defined in WebLogic Server, opens a predefined number of database connections. Once opened, database connections are shared by all WebLogic Server applications that need database access. The expensive overhead associated with establishing a connection is incurred only once for each connection in the pool, instead of once per client request. WebLogic Server monitors database connections, refreshing them as needed and ensuring reliable database services for applications.

WebLogic Enterprise Connectivity, which provides access to BEA WebLogic EnterpriseTM systems, and Jolt® for WebLogic Server, which provides access to BEA Tuxedo® systems, also use connection pools to enhance system performance.

 

APPLICATION LOGIC LAYERS

WebLogic Server implements J2EE component technologies and services. J2EE component technologies include servlets, JSP Pages, and Enterprise JavaBeans. J2EE services include access to standard network protocols, database systems, and messaging systems. To build a WebLogic Server application, you must create and assemble components, using the service APIs when necessary.

Components are executed in the WebLogic Server Web container or EJB container. Containers provide the life cycle support and services defined by the J2EE specifications so that the components you build do not have to handle underlying details.

Web components provide the presentation logic for browser-based J2EE applications. EJB components encapsulate business objects and processes. Web applications and EJBs are built on J2EE application services, such as JDBC, JMS (Java Messaging Service), and JTA (Java Transaction API).

Illustrates WebLogic Server component containers and application services.

Application Logic Layers

248

Page 249: internet prgramming-notes

The following sections discuss the presentation layer, business logic, and application services.

PRESENTATION LOGIC LAYER

The presentation layer includes an application's user interface and display logic. Most J2EE applications use a Web browser on the client machine because it is much easier than deploying client programs to every user's computer. In this case, the presentation logic is the WebLogic Server Web container. Client programs written in any programming language, however, must contain either logic to render HTML or their own presentation logic. A client that accesses a Web service must assemble a SOAP message that describes the Web service it wants to invoke, and include the necessary data in the body of the SOAP message.

WEB BROWSER CLIENTS

249

Page 250: internet prgramming-notes

Web-based applications built with standard Web technologies are easy to access, maintain, and port. Web browser clients are standard for e-commerce applications.

In Web-based applications, the user interface is represented by HTML documents, JavaServer Pages (JSP), and servlets. The Web browser contains the logic to render the Web page on the user's computer from the HTML description.

JavaServer Pages (JSP) and servlets are closely related. Both produce dynamic Web content by executing Java code on WebLogic Server each time they are invoked. The difference between them is that JSP is written with an extended version of HTML, and servlets are written with the Java programming language.

JSP is convenient for Web designers who know HTML and are accustomed to working with an HTML editor or designer. Servlets, written entirely in Java, are more suited to Java programmers than to Web designers. Writing a servlet requires some knowledge of the HTTP protocol and Java programming. A servlet receives the HTTP request in a request object and typically writes HTML or XML in its response object.

JSP pages are converted to servlets before they are executed on WebLogic Server, so ultimately JSP pages and servlets are different representations of the same thing. JSP pages are deployed on WebLogic Server the same way an HTML page is deployed.

The .jsp file is copied into a directory served by WebLogic Server. When a client requests a .jsp file, WebLogic Server checks whether the page has been compiled or has changed since it was last compiled. If needed, it calls the WebLogic JSP compiler, which generates Java servlet code from the .jsp file, and then it compiles the Java code to a Java class file.

NON-BROWSER CLIENTS

A client program that is not a Web browser must supply its own code for rendering the user interface. Non-browser clients usually contain their own presentation and rendering logic, depending on WebLogic Server only for business logic and access to back-end services. This makes them more difficult to develop and deploy and less suited for Internet-based e-commerce applications than browser-based clients.

Client programs written in Java can use any WebLogic Server service over Java RMI (Remote Method Invocation). RMI allows a client program to operate on a WebLogic Server object the same way it would operate on a local object in the client. Because RMI hides the details of making calls over a network, J2EE client code and server-side code are very similar.

250

Page 251: internet prgramming-notes

Java programs can use the Java Swing classes to create powerful and portable user interfaces. Although by using Java you can avoid portability issues, you cannot use WebLogic Server services over RMI unless the WebLogic Server classes are installed on the client. This means that Java RMI clients are not suited to e-commerce applications. They can be used effectively, however, in enterprise applications in which an internal network makes installation and maintenance viable. Client programs written in languages other than Java and Java client programs that do not use WebLogic Server objects over RMI can access WebLogic Server using HTTP or RMI-IIOP.

HTTP is the standard protocol for the Web. It allows a client to make different types of requests to a server and to pass parameters to the server. A servlet on WebLogic Server can examine client requests, retrieve parameters from the request, and prepare a response for the client, using any WebLogic Server service. For example, a servlet might respond to a client program with an XML business document. Thus an application can use servlets as gateways to other WebLogic Server services.

WebLogic RMI-IIOP allows CORBA-enabled programs to execute WebLogic Server enterprise beans and RMI classes as CORBA objects. The WebLogic Server RMI and EJB compilers can generate IDL (Interface Definition Language) for RMI classes and enterprise beans. IDL generated this way is compiled to create skeletons for an ORB (Object Request Broker) and stubs for the client program. WebLogic Server parses incoming IIOP requests and dispatches them to the RMI run-time system.

WEB SERVICE CLIENTS

Client applications that invoke WebLogic Web Services can be written using any technology: Java, Microsoft SOAP Toolkit, and so on. The client application assembles a SOAP message that describes the Web service it wants to invoke and includes all the necessary data in the body of the SOAP message. The client then sends the SOAP message over HTTP/HTTPS to WebLogic Server, which executes the Web service and sends a SOAP message back to the client over HTTP/HTTPS.

WebLogic Server provides a Web Services run-time component, which is a set of servlets and associated infrastructure needed to create a Web service. One element of the run-time is a set of servlets that handle SOAP requests from a client. You do not need to write these servlets; they are automatically included in the WebLogic Server distribution.

For Java-based Web Services clients, WebLogic Server also provides an optional Java client JAR file. The JAR file includes everything a client application needs to invoke a WebLogic Web Service, such as the WebLogic Web Services Client API and WebLogic FastParser. Unlike other Java WebLogic Server clients, you do not need to include the weblogic.jar file with Web Services clients, thus making for very thin client applications.

251

Page 252: internet prgramming-notes

BUSINESS LOGIC LAYER

Enterprise JavaBeans are the business logic components for J2EE applications. The WebLogic Server EJB container hosts enterprise beans, providing life cycle management and services such as caching, persistence, and transaction management.

There are three types of enterprise beans: entity beans, session beans, and message-driven beans. The following sections describe each type in detail.

ENTITY BEANS

An entity bean represents an object that contains data, such as a customer, an account, or an inventory item. Entity beans contain data values and methods that can be invoked on those values. The values are saved in a database (using JDBC) or some other data store. Entity beans can participate in transactions involving other enterprise beans and transactional services.

Entity beans are often mapped to objects in databases. An entity bean can represent a row in a table, a single column in a row, or an entire table or query result. Associated with each entity bean is a unique primary key used to find, retrieve, and save the bean.

An entity bean can employ one of the following:

Bean-managed persistence—the bean contains code to retrieve and save persistent values.

Container-managed persistence—the EJB container loads and saves values on behalf of the bean.

When container-managed persistence is used, the WebLogic EJB compiler can generate JDBC support classes to map an entity bean to a row in a database. Other container-managed persistence mechanisms are available. For example, TopLink for WebLogic Foundation Library, from WebGain, provides persistence for an object relational database.

Entity beans can be shared by many clients and applications. An instance of an entity bean can be created at the request of any client, but it does not disappear when that client disconnects. It continues to live as long as any client is actively using it. When the bean is no longer in use, the EJB container may passivate it: that is, it may remove the live instance from the server.

SESSION BEANS

A session bean is a transient EJB instance that serves a single client. Session beans tend to implement procedural logic; they embody actions more than data.

252

Page 253: internet prgramming-notes

The EJB container creates a session bean at a client's request. It then maintains the bean as long as the client maintains its connection to the bean. Sessions beans are not persistent, although they can save data to a persistent store if needed.

A session bean can be stateless or stateful. Stateless session beans maintain no client-specific state between calls and can be used by any client. They can be used to provide access to services that do not depend on the context of a session, such as sending a document to a printer or retrieving read-only data into an application.

A stateful session bean maintains state on behalf of a specific client. Stateful session beans can be used to manage a process, such as assembling an order or routing a document through a workflow process. Because they can accumulate and maintain state through multiple interactions with a client, session beans are often the controlling objects in an application. Because they are not persistent, session beans must complete their work in a single session and use JDBC, JMS, or entity beans to record the work permanently.

MESSAGE-DRIVEN BEANS

Message-driven beans, introduced in the EJB 2.0 specification, are enterprise beans that handle asynchronous messages received from JMS Message Queues. JMS routes messages to a message-driven bean, which selects an instance from a pool to process the message.

Message-driven beans are managed in the WebLogic Server EJB container. Because they are not called directly by user-driven applications, they cannot be accessed from an application using an EJB home. An user-driven application can, however, instantiate a message-driven bean indirectly by sending a message to the bean's JMS Queue.

APPLICATION SERVICES LAYER

WebLogic Server supplies the fundamental services that allow components to concentrate on business logic without concern for low-level implementation details. It handles networking, authentication, authorization, persistence, and remote object access for EJBs and servlets. Standard Java APIs provide portable access to other services that an application can use, such as database and messaging services.

NETWORK COMMUNICATIONS TECHNOLOGIES

Client applications connect with WebLogic Server using standard networking protocols over TCP/IP. WebLogic Server listens for connection requests at a network address that can be specified as part of a Uniform Resource Identifier (URI).

253

Page 254: internet prgramming-notes

A URI is a standardized string that specifies a resource on a network, including the Internet. It contains a protocol specifier called a scheme, the network address of the server, the name of the desired resource, and optional parameters. The URL you enter in a Web browser, for example, http://www.bea.com/index.html, is the most familiar URI format.

Web-based clients communicate with WebLogic Server using the HTTP protocol. Java clients connect using Java RMI (Remote Method Invocation), which allows a Java client to execute objects in WebLogic Server. CORBA-enabled clients access WebLogic Server RMI objects using RMI-IIOP, which allows them to execute WebLogic Server objects using standard CORBA protocols.

In the following table, the scheme in a URI determines the protocol for network exchanges between a client and WebLogic Server.

TABLE 1-1 NETWORK PROTOCOLS

Scheme Protocol

HTTP HyperText Transfer Protocol. Used by Web browsers and HTTP-capable programs.

HTTPS Hypertext Transfer Protocol over Secure Sockets Layer (SSL). Used by Web browsers and HTTPS-capable client programs.

T3 WebLogic T3 protocol for Java-to-Java connections, which multiplexes JNDI, RMI, EJB, JDBC, and other WebLogic services over a network connection.

T3S WebLogic T3 protocol over Secure Sockets Layer (SSL).

RMI Remote Method Invocation (RMI), the standard Java facility for distributed applications.

IIOP Internet Inter-ORB protocol, used by CORBA-enabled Java clients to execute WebLogic RMI objects over IIOP. Other CORBA clients connect to WebLogic Server with a CORBA naming context instead of a URI for WebLogic Server.

IIOPS Internet Inter-ORB protocol over Secure Sockets Layer (SSL).

SOAP WebLogic Web Services use Simple Object Access Protocol (SOAP) 1.1 as the message format and HTTP as a connection protocol.

The following sections provide more information about these protocols.

HTTP

HTTP, the standard protocol of the World Wide Web, is a request-response protocol. A client issues a request that includes a URI. The URI begins with http:// and the

254

Page 255: internet prgramming-notes

WebLogic Server address, and the name of a resource on WebLogic Server, such as an HTML page, servlet, or JSP page. If the resource name is omitted, WebLogic Server returns the default Web page, usually index.html. The header of an HTTP request includes a command, usually GET or POST. The request can include data parameters and message content.

WebLogic Server always responds to an HTTP request by executing a servlet, which returns results to the client. An HTTP servlet is a Java class that can access the contents of an HTTP request received over the network and return an HTTP-compliant result to the client.

WebLogic Server directs a request for an HTML page to the built-in File servlet. The File servlet looks for the HTML file in the document directory of the WebLogic Server file system. A request for a custom-coded servlet executes the corresponding Java class on WebLogic Server. A request for a JSP page causes WebLogic Server to compile the JSP page into a servlet, if it has not already been compiled, and then to execute the servlet, which returns results to the client.

T3

T3 is an optimized protocol used to transport data between WebLogic Server and other Java programs, including clients and other WebLogic Servers. WebLogic Server keeps track of every Java Virtual Machine (JVM) with which it connects, and creates a single T3 connection to carry all traffic for a JVM.

For example, if a Java client accesses an enterprise bean and a JDBC connection pool on WebLogic Server, a single network connection is established between the WebLogic Server JVM and the client JVM. The EJB and JDBC services can be written as if they had sole use of a dedicated network connection because the T3 protocol invisibly multiplexes packets on the single connection.

T3 is an efficient protocol for Java-to-Java applications because it avoids unnecessary network connection events and uses fewer OS resources. The protocol also has internal enhancements that minimize packet sizes

RMI

Remote Method Invocation (RMI) is the standard Java facility for distributed applications. RMI allows one Java program, called the server, to publish Java objects that another Java program, called a client, can execute. In most applications, WebLogic Server is

255

Page 256: internet prgramming-notes

the RMI server and a Java client application is the client. But the roles can be reversed; RMI allows any Java program to play the role of server.

RMI architecture is similar to the CORBA architecture. To create a remote object, a programmer writes an interface for a Java class that defines the methods that may be executed by a remote client. The WebLogic Server RMI compiler, rmic, processes the interface, producing RMI stub and skeleton classes. The remote class, stubs, and skeletons are installed in WebLogic Server.

A Java client looks up a remote object in WebLogic Server using the Java Naming and Directory Interface (JNDI), which is described later in this section. JNDI establishes a connection to WebLogic Server, looks up the remote class, and returns the stubs to the client.

The client executes a stub method as if it were executing the method directly on the remote class. The stub method prepares the call and transmits it over the network to the skeleton class in WebLogic Server.

On WebLogic Server, the skeleton class unpacks the request and executes the method on the server-side object. Then it packages the results and returns them to the stub on the client side.

WebLogic EJB and several other services available to Java clients are built on RMI. Most applications should use EJB instead of using RMI directly, because EJB provides a better abstraction for business objects. In addition, the WebLogic Server EJB container provides enhancements such as caching, persistence, and life cycle management that are not automatically available to remote classes.

RMI-IIOP

Remote Method Invocation over Internet Inter-ORB Protocol (RMI-IIOP) is a protocol that allows CORBA client programs to execute WebLogic RMI objects, including enterprise beans. RMI-IIOP is based on two specifications from the Object Management Group (http://www.omg.com):

Java-to-IDL mapping Objects-by-value

256

Page 257: internet prgramming-notes

The Java-to-IDL specification defines how an Interface Definition Language (IDL) is derived from a Java interface. The WebLogic Server compilers for RMI and EJB give you the option of producing IDL when compiling RMI and EJB objects. This IDL can be compiled with an IDL APIs compiler to produce the stubs required by a CORBA client.

The objects-by-value specification defines how complex data types are mapped between Java and CORBA. To use objects-by-value, a CORBA client must use an Object Request Broker (ORB) with CORBA 2.3 support. Without a CORBA 2.3 ORB, CORBA clients can use only Java primitive data types.

SSL

Data exchanged with the HTTP and T3 protocols can be encrypted with the Secure Sockets Layer (SSL) protocol. Using SSL assures the client that it has connected with an authenticated server and that data transmitted over the network is private.

SSL uses public key encryption. Public key encryption requires you to purchase a Server ID, which is a certificate for your WebLogic Server from a Certificate Authority such as VeriSign. When a client connects to the WebLogic Server SSL port, the server and client execute a protocol that includes authenticating the server's Server ID and negotiating encryption algorithms and parameters for the session. WebLogic Server can also be configured to require the client to present a certificate, an arrangement that is called mutual authentication.

SOAP

SOAP (Simple Object Access Protocol) is a lightweight, XML-based protocol used to exchange information in a decentralized, distributed environment. The protocol consists of an envelop that describes the SOAP message, encoding rules, and conventions for representing remote procedure calls and responses.

All information is embedded in a Multipurpose Internet Mail Extensions (MIME)-encoded package that can be transmitted over HTTP or other Web protocols. MIME is a specification for formatting non-ASCII messages so that they can be sent over the Internet.

DATA AND ACCESS SERVICES

WebLogic Server implements standard J2EE technologies to provide data and access services to applications and components. These services include the following APIs:

Java Naming and Directory Interface (JNDI)

Java Database Connectivity (JDBC)

257

Page 258: internet prgramming-notes

Java Transaction API (JTA)

J2EE Connector Architecture

The following sections discuss these services in detail.

JNDI

The Java Naming and Directory Interface (JNDI) is a standard Java API that enables applications to look up an object by name. WebLogic Server or a user application binds the Java objects it serves to a name in a naming tree. An application can look up objects, such as RMI objects, Enterprise JavaBeans, JMS Queues and Topics, and JDBC DataSources, by getting a JNDI context from WebLogic Server and then calling the JNDI lookup method with the name of the object. The lookup returns a reference to the WebLogic Server object.

WebLogic JNDI supports WebLogic Server cluster load balancing and failover. Each WebLogic Server in a cluster publishes the objects it serves in a replicated cluster-wide naming tree. An application can get an initial JNDI context from any WebLogic Server in the cluster, perform a lookup, and receive an object reference from any WebLogic Server in the cluster that serves the object. A configurable load-balancing algorithm is used to spread the workload among the servers in the cluster.

JDBC

Java Database Connectivity (JDBC) provides access to backend database resources. Java applications access JDBC using a JDBC driver, which is a database vendor-specific interface for a database server. Although any Java application can load a vendor's JDBC driver, connect to the database, and perform database operations, WebLogic Server provides a significant performance advantage by offering JDBC connection pools.

A JDBC connection pool is a named group of JDBC connections managed through WebLogic Server. At startup time WebLogic Server opens JDBC connections and adds them to the pool. When an application requires a JDBC connection, it gets a connection from the pool, uses it, and then returns it to the pool for use by for other applications. Establishing a database connection is often a time-consuming, resource-intensive operation, so a connection pool, which limits the number of connection operations, improves performance.

WebLogic Server also provides JDBC multipools for achieving load balancing or high availability capabilities with database connections in single-server configurations. Multipools are a "pool of pools" that provide a configurable algorithm for choosing which pool to provide a connection for a given request. Currently, WebLogic Server provides algorithms to support either high availability or load balancing behavior for database connections.

258

Page 259: internet prgramming-notes

To register a connection pool in the JNDI naming tree, define a DataSource object for it. Java client applications can then get a connection from the pool by performing a JNDI lookup on the DataSource name.

Server-side Java classes use the WebLogic JDBC pool driver, which is a generic JDBC driver that calls through to the vendor-specific JDBC driver. This mechanism makes application code more portable, even if you change the brand of database used in the backend tier.

The client-side JDBC driver is the WebLogic JDBC/RMI driver, which is an RMI interface to the pool driver. Use this driver the same way you use any standard JDBC driver. When the JDBC/RMI driver is used, Java programs can access JDBC in a manner consistent with other WebLogic Server distributed objects, and they can keep database data structures in the middle tier.

WebLogic EJB and WebLogic JMS rely on connections from a JDBC connection pool to load and save persistent objects. By using EJB and JMS, you can often get a more useful abstraction than you can get by using JDBC directly in an application. For example, using an enterprise bean to represent a dataful object allows you to change the underlying store later without modifying JDBC code. If you use persistent JMS messages instead of coding database operations with JDBC, it will be easier to adapt your application to a third-party messaging system later.

JTA

The Java Transaction API (JTA) is the standard interface for managing transactions in Java applications. By using transactions, you can protect the integrity of the data in your databases and manage access to that data by concurrent applications or application instances. Once a transaction begins, all transactional operations must commit successfully or all of them must be rolled back.

WebLogic Server supports transactions that include EJB, JMS, JCA, and JDBC operations. Distributed transactions, coordinated with two-phase commit, can span multiple databases that are accessed with XA-compliant JDBC drivers, such as BEA WebLogic jDriver for Oracle/XA.

The EJB specification defines bean-managed and container-managed transactions.When an enterprise bean is deployed with container-managed transactions, WebLogic Server coordinates the transaction automatically. If an enterprise bean is deployed with bean-managed transactions, the EJB programmer must provide transaction code.

Application code based on the JMS or JDBC API can initiate a transaction, or participate in a transaction started earlier. A single transaction context is associated with the

259

Page 260: internet prgramming-notes

WebLogic Server thread executing an application; all transactional operations performed on the thread participate in the current transaction.

J2EE CONNECTOR ARCHITECTURE

The J2EE Connector Architecture adds simplified Enterprise Information System (EIS) integration to the J2EE platform. It provides a Java solution to the problem of connectivity between the multitude of application servers and EISes. By using the Connector Architecture, it is no longer necessary for EIS vendors to customize their product for each application server. By conforming to the J2EE Connector Architecture, BEA WebLogic Server does not require added custom code in order to extend its support connectivity to a new EIS.

The J2EE Connector Architecture is implemented both in WebLogic Server and in an EIS-specific resource adapter. A resource adapter is a system library specific to an EIS and provides connectivity to the EIS. A resource adapter is analogous to a JDBC driver. The interface between a resource adapter and the EIS is specific to the underlying EIS, and can be a native interface.

The J2EE Connector Architecture comprises the system-level contracts between WebLogic Server and a given resource adaptor, a common interface for clients to access the adaptor, and interfaces for packaging and deploying resource adaptors to J2EE applications. See Programming the J2EE Connector Architecture for more information.

MESSAGING TECHNOLOGIES

The J2EE messaging technologies provide standard APIs that WebLogic Server applications can use to communicate with one another as well as with non-WebLogic Server applications. The messaging services include the following APIs:

Java Message Service (JMS) JavaMail

The following sections describe these APIs in detail.

JMS

260

Page 261: internet prgramming-notes

Java Messaging Service (JMS) enables applications to communicate with one another by exchanging messages. A message is a request, report, and/or event that contains the information needed to coordinate communication between different applications. A message provides a level of abstraction, allowing you to separate details about the destination system from the application code.

WebLogic JMS implements two messaging models: point-to-point (PTP) and publish/subscribe (pub/sub). The PTP model allows any number of senders to send messages to a Queue. Each message in the Queue is delivered to a single reader. The pub/sub model allows any number of senders to send messages to a Topic. Each message on the Topic is sent to every reader with a subscription to the Topic. Messages can be delivered to readers synchronously or asynchronously; the particular messaging mode can be controlled either using the Administration Console or via the method used to send messages in the JMS application.

JMS messages can be persistent or non-persistent. Persistent messages are stored in a database and are not lost if WebLogic Server restarts. Non-persistent messages are lost if WebLogic Server is restarted. Persistent messages sent to a Topic can be retained until all interested subscribers have received them.

JMS supports several message types that are useful for different types of applications. The message body can contain arbitrary text, byte streams, Java primitive data types, name/value pairs, serializable Java objects, or XML content.

JAVA MAIL

WebLogic Server includes the Sun JavaMail reference implementation. JavaMail allows an application to create e-mail messages and send them through an SMTP server on the network.

5.4 HTTP REQUESTS

An HTTP request consists of three components:

Method-URI-Protocol/Version

Request headers

Entity body

AN EXAMPLE HTTP REQUEST IS:

261

Page 262: internet prgramming-notes

POST /servlet/default.jsp HTTP/1.1Accept: text/plain; text/html Accept-Language: en-gb Connection: Keep-Alive Host: localhost Referer: http://localhost/ch8/SendDetails.htm User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98) Content-Length: 33 Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate

LastName=Franks&FirstName=Michael

HTTP RESPONSES

Similar to requests, an HTTP response also consists of three parts: Protocol-Status code-Description Response headers Entity body

THE SOCKET CLASS

A socket is an endpoint of a network connection. A socket enables an application to read from and write to the network. Two software applications residing on two different computers can communicate with each other by sending and receiving byte streams over a connection. To send a message to another application, you need to know its IP address, as well as the port number of its socket. In Java, a socket is represented by the java.net.Socket class.

To create a socket, you can use one of the many constructors of the Socket class. One of these constructors accepts the host name and the port number:

public Socket(String host, int port) where host is the remote machine name or IP address, and port is the port number of the remote application. For example, to connect to yahoo.com at port 80, you would construct the following socket:new Socket("yahoo.com", 80);

Once you create an instance of the Socket class successfully, you can use it to send and receive streams of bytes. To send byte streams, you must first call the Socket class' getOutputStream method to obtain a java.io.OutputStream object.

262

Page 263: internet prgramming-notes

To send text to a remote application, you often want to construct a java.io.PrintWriter object from the OutputStream object returned. To receive byte streams from the other end of the connection, you call the Socket class' getInputStream method, which returns a java.io.InputStream.

THE SERVERSOCKET CLASS

The Socket class represents a "client" socket; a socket that you construct whenever you want to connect to a remote server application. If you want to implement a server application, such as an HTTP server or an FTP server, you need a different approach. This is because your server must stand by all the time, as it does not know when a client application will try to connect to it.

For this purpose, you need to use the java.net.ServerSocket class. This is an implementation of a server socket. A server socket waits for a connection request from a client. Once it receives a connection request, it creates a Socket instance to handle the communication with the client.

To create a server socket, you need to use one of the four constructors the ServerSocket class provides. You need to specify the IP address and port number on which the server socket will listen.

Typically, the IP address will be 127.0.0.1, meaning that the server socket will be listening on the local machine. The IP address the server socket is listening on is referred to as the binding address. Another important property of a server socket is its backlog, which is the maximum queue length for incoming connection requests before the server socket starts to refuse incoming requests.

One of the constructors of the ServerSocket class has the following signature:

PUBLIC SERVERSOCKET(INT PORT, INT BACKLOG, INETADDRESS BINDINGADDRESS);

For this constructor, the binding address must be an instance of java.net.InetAddress. An easy way to construct an InetAddress object is by calling its static method getByName, passing a String containing the host name: InetAddress.getByName("127.0.0.1");

The following line of code constructs a ServerSocket that listens on port 8080 of the local machine with a backlog of 1.

new ServerSocket(8080, 1, InetAddress.getByName("127.0.0.1"));

263

Page 264: internet prgramming-notes

JAVA SERVLET

The Java Servlet API allows a software developer to add dynamic content to a Web server using the Java platform. The generated content is commonly HTML, but may be other data such as XML. Servlets are the Java counterpart to non-Java dynamic Web content technologies such as PHP, CGI and ASP.NET. Servlets can maintain state across many server transactions by using HTTP cookies, session variables or URL rewriting.

The Servlet API, contained in the Java package hierarchy javax.servlet, defines the expected interactions of a Web container and a servlet. A Web container is essentially the component of a Web server that interacts with the servlets. The Web container is responsible for managing the lifecycle of servlets, mapping a URL to a particular servlet and ensuring that the URL requester has the correct access rights.

A Servlet is an object that receives a request and generates a response based on that request. The basic servlet package defines Java objects to represent servlet requests and responses, as well as objects to reflect the servlet's configuration parameters and execution environment.

The package javax.servlet.http defines HTTP-specific subclasses of the generic servlet elements, including session management objects that track multiple requests and responses between the Web server and a client. Servlets may be packaged in a WAR file as a Web application.

Servlets can be generated automatically by JavaServer Pages (JSP), or alternately by template engines such as WebMacro. Often servlets are used in conjunction with JSPs in a pattern called "Model 2", which is a flavor of the model-view-controller pattern.

LIFE CYCLE OF A SERVLET

The Servlet life cycle consists of the following steps:

2. The Servlet class is loaded by the container during start-up.

3. The container calls the init() method. This method initializes the servlet and must be called before the servlet can service any requests. In the entire life of a servlet, the init() method is called only once.

264

Page 265: internet prgramming-notes

4. After initialization, the servlet can service client-requests. Each request is serviced in its own separate thread. The container calls the service() method of the servlet for every request. The service() method determines the kind of request being made and dispatches it to an appropriate method to handle the request.

5. The developer of the servlet must provide an implementation for these methods. If a request for a method that is not implemented by the servlet is made, the method of the parent class is called, typically resulting in an error being returned to the requester.

6. Finally, the container calls the destroy() method which takes the servlet out of service. The destroy() method like init() is called only once in the life-cycle of a Servlet.

THE SERVICE METHOD

Each time the server receives a request for a servlet, the server spawns a new thread and calls service. The service method checks the HTTP request type (GET, POST, PUT, DELETE, etc.) and calls doGet, doPost, doPut, doDelete, etc., as appropriate.

A GET request results from a normal request for a URL or from an HTML form that has no METHOD specified. A POST request results from an HTML form that specifically lists POST as the METHOD. Other HTTP requests are generated only by custom clients.

public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {// Servlet code}public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}

THE INIT METHOD

Most of the time, your servlets deal only with per-request data, and doGet or doPost are the only life-cycle methods you need. Occasionally, however, you want to perform complex setup tasks when the servlet is first loaded, but not repeat those tasks for each request. The init method is designed for this case; it is called when the servlet is first created,

265

Page 266: internet prgramming-notes

and not called again for each user request. So, it is used for one-time initializations, just as with the init method of applets. The init method definition looks like this:

public void init() throws ServletException {// Initialization code...}The init method performs two varieties of initializations: general initializationsand initializations controlled by initialization parameters

THE DESTROY METHOD

The server may decide to remove a previously loaded servlet instance, perhaps it is explicitly asked to do so by the server administrator or perhaps because the servlet is idle for a long time. Before it does, however, it calls the servlet’s destroy() method.

This method gives your servlet a chance to close database connections, halt background threads, write cookie lists or hit counts to disk, and perform other such cleanup activities.

Be aware, however, that it is possible for the Web server to crash So, don’t count on destroy as the only mechanism for saving state to disk. If your servlet performs activities like counting hits or accumulating lists of cookie values that indicate special access, you should also proactively write the data to disk periodically.

HYPERTEXT TRANSFER PROTOCOL

Hypertext Transfer Protocol (HTTP) is a communications protocol used to transfer or convey information on the World Wide Web. Its original purpose was to provide a way to publish and retrieve HTML hypertext pages. Development of HTTP was coordinated by the W3C (World Wide Web Consortium) and the IETF (Internet Engineering Task Force), culminating in the publication of a series of RFCs, most notably RFC 2616 (1999), which defines HTTP/1.1, the version of HTTP in common use today.

HTTP is a request/response protocol between clients and servers. The client making an HTTP request - such as a web browser, spider, or other end-user tool - is referred to as the user agent. The responding server - which stores or creates resources such as HTML files and images - is called the origin server. In between the user agent and origin server may be several intermediaries, such as proxies, gateways, and tunnels. It is useful to remember that HTTP does not need to use TCP/IP or its supporting layers. Indeed HTTP can be "implemented on top of any other protocol on the Internet, or on other networks. HTTP only presumes a reliable transport; any protocol that provides such guarantees can be used."

266

Page 267: internet prgramming-notes

An HTTP client initiates a request by establishing a Transmission Control Protocol (TCP) connection to a particular port on a host (port 80 by default; see List of TCP and UDP port numbers). An HTTP server listening on that port waits for the client to send a request message.

An HTTP client initiates a request by establishing a Transmission Control Protocol (TCP) connection to a particular port on a host (port 80 by default; see List of TCP and UDP port numbers). An HTTP server listening on that port waits for the client to send a request message.

Upon receiving the request, the server sends back a status line, such as "HTTP/1.1 200 OK", and a message of its own, the body of which is perhaps the requested file, an error message, or some other information.

Resources to be accessed by HTTP are identified using Uniform Resource Identifiers (URIs).

REQUEST METHODS

HTTP defines eight methods (sometimes referred to as "verbs") indicating the desired action to be performed on the identified resource.

HEADAsks for the response identical to the one that would correspond to a GET request, but without the response body. This is useful for retrieving meta-information written in response headers, without having to transport the entire content.

GETRequests a representation of the specified resource. By far the most common method used on the Web today. Should not be used for operations that cause side-effects (using it for actions in web applications is a common misuse). See 'safe methods' below.

POSTSubmits data to be processed (e.g. from an HTML form) to the identified resource. The data is included in the body of the request. This may result in the creation of a new resource or the updates of existing resources or both.

PUTUploads a representation of the specified resource.

DELETE

Deletes the specified resource

267

Page 268: internet prgramming-notes

TRACEEchoes back the received request, so that a client can see what intermediate servers are adding or changing in the request.

OPTIONSReturns the HTTP methods that the server supports. This can be used to check the functionality of a web server.

CONNECT

Converts the request connection to a transparent TCP/IP tunnel, usually to facilitate SSL-encrypted communication (HTTPS) through an unencrypted HTTP proxy.[1]

HTTP servers are supposed to implement at least the GET and HEAD methods and, whenever possible, also the OPTIONS method.

SAFE METHODS

Some methods (e.g. HEAD or GET) are defined as safe, which means they are intended only for information retrieval and should not change the state of the server (in other words, they should not have side effects). Unsafe methods (such as POST, PUT and DELETE) should be displayed to the user in a special way, typically as buttons rather than links.

Despite the required safety of GET requests, in practice they can cause changes on the server. For example, a Web server may use the retrieval through a simple hyperlink to initiate deletion of a domain database record, thus causing a change of the server's state as a side-effect of a GET request. This is discouraged, because it can cause problems for Web caching, search engines and other automated agents, which can make unintended changes on the server. Another case is that a GET request may cause the server to create a cache space.

The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI. If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the entity in the response and not the source text of the process, unless that text happens to be the output of the process.

The semantics of the GET method change to a "conditional GET" if the request message includes an If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, or If-Range header field. A conditional GET method requests that the entity be transferred only under the circumstances described by the conditional header field(s). The conditional GET method is intended to reduce unnecessary network usage by allowing cached entities to be refreshed without requiring multiple requests or transferring data already held by the client.

268

Page 269: internet prgramming-notes

The semantics of the GET method change to a "partial GET" if the request message includes a Range header field. A partial GET requests that only part of the entity be transferred.

The partial GET method is intended to reduce unnecessary network usage by allowing partially-retrieved entities to be completed without transferring data already held by the client.

The response to a GET request is cacheable if and only if it meets the requirements for HTTP caching.

The POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line.

POST is designed to allow a uniform method to cover the following functions:

- Annotation of existing resources; - Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles; - Providing a block of data, such as the result of submitting a form, to a data-handling process; - Extending a database through an append operation.

The actual function performed by the POST method is determined by the server and is usually dependent on the Request-URI. The posted entity is subordinate to that URI in the same way that a file is subordinate to a directory containing it, a news article is subordinate to a newsgroup to which it is posted, or a record is subordinate to a database.

The action performed by the POST method might not result in a resource that can be identified by a URI. In this case, either 200 (OK) or 204 (No Content) is the appropriate response status, depending on whether or not the response includes an entity that describes the result..

If a resource has been created on the origin server, the response SHOULD be 201 (Created) and contain an entity which describes the status of the request and refers to the new resource, and a Location header.

269

Page 270: internet prgramming-notes

Responses to this method are not cacheable, unless the response includes appropriate Cache-Control or Expires header fields. However, the 303 (See Other) response can be used to direct the user agent to retrieve a cacheable resource.

POST requests MUST obey the message transmission requirements…….

Using HTTP GET

An HTTP GET request is most commonly used to request the contents of a URL or web address.  The GET request is typically limited to ~2k in size, plenty large to request data from a URL. In it's basic form, a typical HTTP GET Request will look something like:

GET http://www.caslsoft.com

SendData function in a little more detail.  This function handles allot of work for you, including parsing the URL, determining the host to connect to, formatting the GET or POST Request, sending the request, checking for timeouts and returning the response.

CONSIDER THE FOLLOWING DEFINITION FOR THE SENDDATA FUNCTION:

SendData(String URL, Numeric asPost, String inMsg) as string

Parameter Description

URL

A string which contains the URL you want to receive (GET) or send (POST) to.  This will commonly be a request such as "http://www.yourwebsite.com".  The function will handle parsing the URL for you.

asPost

true/false value that indicates if the request should be sent as an HTTP GET (false) or POST (true).

inMsg This value contains the message you want to send for the HTTP POST Request.  This may be a formatted XML message or any other type of data the server is setup to handle.  When performing an

270

Page 271: internet prgramming-notes

HTTP GET Request, this parameter is ignored.

USING HTTP POST

In the previous section we sent an HTTP GET request to receive (or get) data from an existing webpage, but what if you want to send data instead? 

To send data to a remote web server, you'll want to perform an HTTP POST Request.  The data you send to the remote server will make use of the last two parameters of the SendData function.  The asPost (2nd parameter) should be set for true to indicate the request should be sent as a POST. 

The last parameter, inMsg is the message you want to POST (or send) to the remote server.  What appears within the inMsg string really depends upon the receiving system. 

In some cases, it may be a formatted XML Message or a simple string of characters.  You will want to determine how the inMsg request should be formatted before using it. 

It can easily be used to send an HTTP POST request to a Weblogic Java Server Page (.jsp) or most any other web server..

THE FUNDAMENTAL DIFFERENCES BETWEEN "GET" AND "POST"

The HTML specifications technically define the difference between "GET" and "POST" so that former means that form data is to be encoded (by a browser) into a URL while the latter means that the form data is to appear within a message body.

But the specifications also give the usage recommendation that the "GET" method should be used when the form processing is "idempotent", and in those cases only. As a simplification, we might say that "GET" is basically for just getting (retrieving) data whereas "POST" may involve anything, like storing or updating data, or ordering a product, or sending E-mail.

If the processing of a form is idempotent (i.e. it has no lasting observable effect on the state of the world), then the form method should be GET. Many database searches have no visible side-effects and make ideal applications of query forms.

271

Page 272: internet prgramming-notes

If the service associated with the processing of a form has side effects (for example, modification of a database or subscription to a service), the method should be POST.

In particular, the convention has been established that the GET and HEAD methods SHOULD NOT have the significance of taking an action other than retrieval. These methods ought to be considered "safe". This allows user agents to represent other methods, such as POST, PUT and DELETE, in a special way, so that the user is made aware of the fact that a possibly unsafe action is being requested.

Naturally, it is not possible to ensure that the server does not generate side-effects as a result of performing a GET request; in fact, some dynamic resources consider that a feature. The important distinction here is that the user did not request the side-effects, so therefore cannot be held accountable for them.

When users revisit a page that resulted from a form submission, they might be presented with the page from their history stack (which they had probably intended), or they might be told that the page has now expired. Typical user response to the latter is to hit Reload.

This is harmless if the request is idempotent, which the form author signals to the browser by specifying the GET method.

Browsers typically will (indeed "should") caution their users if they are about to resubmit a POST request, in the belief that this is going to cause a further "permanent change in the state of the universe", e.g. ordering another Mercedes-Benz against their credit card or whatever. If users get so accustomed to this happening when they try to reload a harmless idempotent request, then sooner or later it's going to bite them when they casually [OK] the request and do, indeed, order a second pizza, or invalidate their previous competition entry by apparently trying to enter twice, or whatever.

Thus, some browsers can act more cleverly if the author uses "GET" or "POST" consistently, i.e. using "GET" for pure queries and "POST" for other form submissions. It needs to be noted, though, that using "GET" gives no protection against causing changes. A script which processes a form submission sent with the "GET" could cause a pizza ordering. It's just that authors are expected to take care that such things don't happen.

Moreover, the use of "POST" cannot guarantee that the user does not inadvertantly submit the same form data twice; the browser might not give a warning, or the user might fail to understand the warning. Users are known to become impatient when it seems that "nothing happens" when they click on a button, so they might click on it again and again.

272

Page 273: internet prgramming-notes

A "GET" request is often cacheable, whereas a "POST" request can hardly be. For query systems this may have a considerable efficiency impact, especially if the query strings are simple, since caches might serve the most frequent queries.

DIFFERENCES IN FORM SUBMISSION

For both METHOD="GET" and METHOD="POST", the processing of a user's submit request (such as clicking on a submit button) in a browser begins with a construction of the form data set, which is then encoded in a manner which depends on the ENCTYPE attribute . That attribute has two possible values mentioned in the specifications, but multipart/form-data is for "POST" submissions only, whereas application/x-www-form-urlencoded (the default) can be used both for "POST" and for "GET".

If the method is "get" - -, the user agent takes the value of action, appends a ? to it, then appends the form data set, encoded using the application/x-www-form-urlencoded content type. The user agent then traverses the link to this URI. In this scenario, form data are restricted to ASCII codes.

If the method is "post" --, the user agent conducts an HTTP post transaction using the value of the action attribute and a message created according to the content type specified by the enctype attribute.

Thus, for METHOD="GET" the form data is encoded into a URL (or, speaking more generally, into a URI). This means that an equivalent to a form submission can be achieved by following a normal link referring to a suitable URL.

DIFFERENCES IN SERVER-SIDE PROCESSING

In principle, processing of a submitted form data depends on whether it is sent with METHOD="GET" or METHOD="POST". Since the data is encoded in different ways, different decoding mechanisms are needed. Thus, generally speaking, changing the METHOD may necessitate a change in the script which processes the submission. For example, when using the CGI interface, the script receives the data in an environment variable when METHOD="GET" is used but in the standard input stream (stdin) when METHOD="POST" is used.

It is, however, possible to construct libraries of subroutines (e.g. Perl functions) which allow one to write scripts in a manner which works both for METHOD="GET" and METHOD="POST". This would be based on distinguishing between the cases within the subroutine code and returning the data to the caller in a uniform manner.

5.5 SESSION TRACKING

273

Page 274: internet prgramming-notes

Session tracking is a mechanism that servlets use to maintain state about a series of requests from the same user (that is, requests originating from the same browser) across some period of time.

SESSION-TRACKING BASICS

• Every user of a site is associated with a javax.servlet.http.HttpSession object that servlets can use to store or retrieve information about that user

• Basic session tracking functionalities,

• Obtain a session (an HttpSession object) for a user.  

• Store or get data from the HttpSession object.  

• Invalidate the session (optional).  

GET SESSION

• A servlet uses its request object's getSession() method to retrieve the current HttpSession object:

• public HttpSession HttpServletRequest.getSession(boolean create)

• This method returns the current session associated with the user making the request.

• If the user has no current valid session, this method creates one if create is true or returns null if create is false.

• To ensure the session is properly maintained, this method must be called at least once before any output is written to the response.

PUT VALUE

• You can add data to an HttpSession object with the putValue() method:

• public void HttpSession.putValue(String name, Object value)

• This method binds the specified object value under the specified name. Any existing

binding with the same name is replaced

274

Page 275: internet prgramming-notes

GET VALUE

• To retrieve an object from a session, use getValue():

• public Object HttpSession.getValue(String name)

• This methods returns the object bound under the specified name or null if there is no

binding.

• You can also get the names of all of the objects bound to a session with

getValueNames():

• public String[] HttpSession.getValueNames()

• This method returns an array that contains the names of all objects bound to this

session or an empty (zero length) array if there are no bindings

REMOVE VALUE

• Finally, you can remove an object from a session with removeValue():

• public void HttpSession.removeValue(String name)

• This method removes the object bound to the specified name or does nothing if there

is no binding

• Each of these methods can throw a java.lang.IllegalStateException if the session

being accessed is invalid

THE SESSION LIFE CYCLE

• Sessions do not last forever.

• A session either expires automatically, after a set time of inactivity (for the Java Web

Server the default is 30 minutes), or manually, when it is explicitly invalidated by a

servlet.

• When a session expires (or is invalidated), the HttpSession object and the data values

it contains are removed from the system.

• Beware that any information saved in a user's session object is lost when the session

is invalidated.

275

Page 276: internet prgramming-notes

• If you need to retain information beyond that time, you should keep it in an external

location (such as a database) and store a handle to the external data in the session

object (or your own persistant cookie)

METHODS INVOLVED IN MANAGING THE SESSION LIFE CYCLE:

• public boolean HttpSession.isNew() This method returns whether the session is

new or not.

• public void HttpSession.invalidate()

• This method causes the session to be immediately invalidated. All objects stored in

the session are unbound.

• public long HttpSession.getCreationTime()

• This method returns the time at which the session was created

• public long HttpSession.getLastAccessedTime()

• This method returns the time at which the client last sent a request associated with

this session

5.6 COOKIES

In Javascript, cookies are a mechanism for storing persistent data on the client in a file called cookies.txt. Because Hypertext Transport Protocol (HTTP) is a stateless protocol, cookies provide a way to maintain information between client requests.

Each cookie is a small item of information with an optional expiration date and is added to the cookie file in the following format:

Here,

name is the name of the datum being stored, and value is its value.

expDate is the expiration date, in GMT date format: Wdy, DD-Mon-YY HH:MM:SS GMT

276

name=value;expires=expDate;

Page 277: internet prgramming-notes

Below is a simple function named setCookie() to create a cookie called myname. It also uses a function getCookie() to get the value of a cookie, if cookie name exist and is given as an argument.

We end the discussion of javascript by providing you with the organizational chart which features you the hierarchy of objects of HTML 4.0 that can be easily accessed using the javascript.

OBJECTS HIERARCHY OF HTML 4.0

window

document history location

Anchor Applet Area Form Image Link

277

Page 278: internet prgramming-notes

Button FileUpload Password Reset Submit TextArea

Checkbox Hidden Radio Select Text

The Web Concept such as Server push and Client pull can be described as:

With server push, the Web page server maintains a connection between the client (the browser) and server. Server push restricts the number of simultaneous connections the Web page server can maintain a popular page using server push will frequently reward potential visits with a “sorry, not now, try later” message.

Client pull, on the other hand, involves the client frequently reestablishing its connection to the server, artificially adding to the traffic at the server. We can use Javascript to create dynamic documents that would have required either server push or client pull in CGI, but that involve no additional traffic or long, drawn-out connections between the client and the server.

COOKIES IN PERL:

In Perl, Cookies can be set by using the “Set-Cookie” method as described below: The cookie can be later referred again from the Perl Script by using the”Environmental Variable” as:

In this case, the value of the cookie is extracted to the variable var.

Database connectivity in PERL:

Any web programming language does not have its honor without providing the necessary interaction commands for database connectivity. PERL has its own interactive statements to connect to a database and display the details of the database.

$var=$ENV{‘HTTP_COOKIE’};

278

Print “Set-Cookie:name=siva”;

Page 279: internet prgramming-notes

The WIN32:: ODBC module is an extension to Perl which permits connectivity to database using ODBC drivers. To add ODBC connectivity, the following step is to be added to the source code:

The possible object methods for Database connectivity and straightaway run to a sample coding:

i. The new method:

This method creates a new ODBC object for the given DSN

ii. The Connection Method: This method will return the object’s ODBC Connection number on success. Each of the connections is assigned a unique number for identification purposes.

iii. The Sql Method: Syntax :

This method executes a sql command and returns undef on success. Else, an error code is returned.

The FetchRow method:

This method fetches the next row of the data from the specified SQL method source. Returns True if there exist next row. If the record pointer is already at the last row or if there is no record in the sql statement, false is returned. iv. The Data method:

This method retrieves data from a FetchRow method for a list of field names. If no field names are given, all fields are returned in an unspecified order. In a scalar context,

279

Use Win32:: ODBC;

Syntax : new Win32:: ODBC(DSN);

Sql( sql statement)

Page 280: internet prgramming-notes

the Data method returns all of the specified fields concatenated together. In an array context, it returns the array values, in the specified order.

v. The DataHash Method:

This method retrieves data from a FetchRow method just like the Data method.

vi. The Close Method:

This method closes the ODBC connection for the object and returns an undef.

The listing given below just attempts to connect to an Access database using DSN connection and prints the data present in the database.

The entire code listing is given below:

280

To run this coding properly, we have to create a DSN named bibilo. If we know the process, keep creating the DSN, else follow the steps given below:

i. Go to Start Menu -> Settings -> Control panel -> Administrative Tools -> Data Sources (ODBC) -> System DSN -> Add.

ii. In the newly appeared dialog box, select the “Driver do Microsoft Access(*.mdb) and press Finish

iii. In the new dialog box, type the DataSourceName as “bibilo” and select the “bibilo.mdb” by pressing the Select button. Finally press the OK button.

# ! /usr/bin/perl

# This program illustrates DB connectivity concepts

print “Content-type: text/html\n\n”;print “<html><head></head><body>”;

use Win32: :ODBC;print “<table border=1 cellpadding=1 cellspacing=1><tr bgcolor=gray> <td>”;print “<b> Aythor id </b> </td> <td> <b> Author Name </b></td></tr>”; if(($db=new Win32: :ODBC(“dsn=bibilo;”))){

$no=$db->Connection;

print “Connection identification number is: $no”;print “<p align=center> <font color=red> DATA IS </font> </p>”;$db ->Sql (“SELECT * FROM authors”);while($db->FetchRow()){undef %Data;%Data=$$db->DataHash();print “<tr> <td>$Data{ ‘Au_ID’ } </td><td> $Data{ ‘Author’ }</td></tr>”;}print “</table>”;

}print “</body></html>”;

Page 281: internet prgramming-notes

5.7 JDBC

INTRODUCTION

It is actually inherited inside our coding using “use command. Then, new method creates a new ODBC object for the given DSN named ‘bibilo’. The ODBC object’s name is db. Then the connection method is used to return the ODBC connection identification number, which is printed on the screen. The Sql method executes the Select statement and the FetchRow() method fetches the next row of data from the Sql statement. The FetchRow() method is placed inside a while loop and the method returns false and terminates the loop if the end of the record is reached. Inside the loop, the DataHash() method retrieves data for the fields “Au_ID” and “Author”. The values are got in an associative array in our case, and printed on the screen using the print method.

A database is a collection of interrelated data is contiguous in some organized fashion and DBMS is a software that provides a mechanism to retrive, modify and add data to the database.

281

Page 282: internet prgramming-notes

A table is a unit of storage which holds data in the form of rows and columns.Thus, a collection of all tables with their interrelationship could be termed as database.

The DBMS whose design is based on the Relational theory is called RDBMS.

There are many DBMS/RDBMS product are available,

For eg: Oracle, Sybase, Informix, MS-SQL Server, MS-Access stores data in .MDB file format.

JDBC(Java Database Connectivity)is defined,as a set of java classes and methods to interface with database. It also provides uniform access to a wide range of relational databases.The java 2 software bundle includes JDBC-ODBC bridge.

Introduction to SQL:

The SQL(Structured Query Language) is used to retrive, store and change the data.

Commands which are used to create a table in SQL * plus in oracle.

Create:This command is used to create a table

Syntax:

CREATE TABLE tabname(colname1 datatype(size),colname2 datatype(size),….., colnameN datatype(size));

Eg: Create a student table

Colname Data type Size

Regno Number 5

Name Varchar2 20

Class Varchar2 20

282

Page 283: internet prgramming-notes

Mark Number 3

SQL>CREATE TABLE student(regno number(5),name varchar2(20),class varchar2(20),mark number(3));

INSERT:

It is used to add one or more rows in a table.

SYNTAX: INSERT INTO tablename VALUES(a list of values);

Eg: Insert a record in the student table regno 1001 name xxxx class ICSE mark 97

INSERT INTO student VALUES(1001,’xxxx’,’ICSE’,97);

SELECT:

It is used to retrive the information in the table.

SYNTAX: SELECT colname1,…….colnameN from table name;

Eg1: Select the student names in student table.

SELECT name FROM student;

Eg2: Select all the records in the student table

SELECT * FROM student;

UPDATE:

It is used to change the column values in a table.

SYNTAX: UPDATE tablename SET column name=value WHERE condition.

Eg: Update table student set mark=100 where regno=1001

UPDATE student SET mark=100 WHERE regno=1001;

DELETE:

283

Page 284: internet prgramming-notes

It is used to delete the rows in a table.

SYNTAX: DELETE FROM tablename WHERE CONDITION;

Eg1: Delete the stud where regno=1001

DELETE FROM student WHERE regno=1001;

Eg2: Delete all records from student table.

DELETE FROM student;

DATA BASE CONNECTIVITY:

For any application to communicate with the database,it needs to have the following information:

1.The RDBMS/DBMS product is used to which the database is created.2.where database reside(location)3.The name of the database.

So, we use JDBC calls to retrive and update information from a database using JDBC. This involves the following functions:

1.Opening and establish a database connection.2.send SQL statements.3.Process the returned result set.4.Close the database connection.

ODBC API: Microsoft ODBC(Open Data Base Connectivity) Application programming interface

is mostly used programming interface for accessing RDBMS.

JDBC and ODBC are based on the X/Open SQL command level interface.

This is an interface to perform SQL calls to database.

Application

ODBC

OracleDriver

SQLDriver

OracleData Base

SQLData Base

284

Page 285: internet prgramming-notes

JDBC API

The JDBC API is available in the java.sql and javax.sql packages. Following are important JDBC classes, interfaces and exceptions in the java.sql package:

DriverManager - Loads JDBC drivers in memory. Can also be used to open connections to a data source.

Connection - Represents a connection with a data source. Is also used for creating Statement, PreparedStatement and CallableStatement objects.

Statement - Represents a static SQL statement. Can be used to retrieve ResultSet object/s.

PreparedStatement - Higher performance alternative to Statement object, represents a precompiled SQL statement.

CallableStatement - Represents a stored procedure. Can be used to execute stored procedures in a RDBMS which supports them.

ResultSet - Represents a database result set generated by using a SELECT SQL statement.

SQLException - An exception class which encapsulates database base access errors.

javax.sql is part of J2SE 1.4 and J2EE 1.3. It adds following features to JDBC in addition to the ones provided by java.sql package:

DataSource - Abstracts a data source. This object can be used in place of DriverManager to efficiently obtain data source connections (possibly using hidden connection pooling).

Provides built-in connection pooling. XADataSource, XAConnection - Allows/supports distributed transactions. RowSet - It extends ResultSet interface to add support for disconnected result sets. Java Database connectivity provides a database programming API for java programs.

Java programs cannot directly communicate with the ODBC driver.

Sun Microsystem provides a JDBC-ODBC bidge that translate JDBC to ODBC.

There are several types of JDBC drivers available.They are:

JDBC-ODBC bridge+ODBC driver Native API partly java driver.

285

Page 286: internet prgramming-notes

JDBC-Net pure java driver. Native protocol pure java driver.

JDBC-ODBC bridge + ODBC driver (Type 1 Drivers)

This drivers are the bridge drivers such as the JDBC-ODBC bridge.

These drivers rely on an intermediary such as ODBC to transfer the SQL Calls to database.

Bridgedrivers often rely on native code, although the JDBC-ODBC library native code is part of the java 2 virtual machine.

Application

JDBC-DriverManagerODBC DriverManagerODBC libraries

NATIVE API PARTLY JAVA DRIVER (TYPE 2 DRIVERS)

A native API is partly a java driver uses native C language library calls to translate JDBC to native client library.

These drivers are available for oracle,Sybase. DB2 and other client library based RDBMS.

Type 2 drivers are faster than Type 1 driver. Type 2 drivers use native code and require additional permissions to work in an

applet. A Type 2 driver might need client-side database code to connect over the network.

Application

JDBC

ODBC Database

286

Page 287: internet prgramming-notes

DBMS Vendor Client Side Libraries based On C Language

JDBC-NET PURE JAVA DRIVER (TYPE 3 DRIVERS)

JDBC- Net pure java Driver consist of JDBC and DBMS independent protocol driver. Here the calls are translate and sent to middle tier server through the socket. The

middle tier contact the databases.

Type 3 Drivers call the database API on the server. JDBC requests from the client are first proxied to the JDBC Driver on the server to run.

Type 3 and 4 drivers can be used by thin(java based) clients as they need no native code.

NATIVE PROTOCOL PURE JAVA DRIVER (TYPE 4 DRIVERS)

A native protocol java driver contain JDBC calls that are converted directly to the network protocol used by the DBMS server.

Type 4 drivers can also be used on this clients as they also have no native code.

The network protocol is defined by the vendor and is typically proprietary, the driver usually comes only from the database vendor.

5.8 SIMPLE APPLICATIONS

• An N-tier application is anything that is divided into discrete logical parts.

DBMS Server

Application

JDBC

Java based Socket driver

DBMSserver

287

Socketconnection

Socket connection(DBMSspecific protocol

Page 288: internet prgramming-notes

• The most common choice is a three-part breakdown—presentation, business logic, and data.

• N-tier applications first emerged as a way of solving some of the problems associated with traditional client/server applications, but with the arrival of the Web, this architecture has come to dominate new development.

• The Microsoft .NET Framework also provides a solid platform for building N-tier applications.

5.9 MULTI TIER APPLICATIONS

INTRODUCTION

The 3-tier architecture overcomes the weaknesses of the 2-tier and client/server architectures.

It contains a client workstation, a component server, and a database server. The user interface is on the client side while business logic and data

management are in dedicated tiers.

The 3-Tier architecture has the following 3-tiers: Presentation Tier Application Tier /Logic Tier/Business Logic Tier Data Tier

288

Page 289: internet prgramming-notes

• Multitier applications divide functionality into separate tiers.

• Although tiers can be located on the same computer, the tiers of Web-based applications reside on separate computers.

289

Page 290: internet prgramming-notes

INFORMATION TIER

• The information tier also called the data tier or the bottom tier.• It maintains data pertaining to the application. • This tier typically stores data in a relational database management system (RDBMS).

MIDDLE TIER

• The middle tier implements business logic, controller logic and presentation logic to control interactions between the application's clients and the application's data.

• It acts as an intermediary between data in the information tier and the application's clients.

• The middle-tier controller logic processes client requests and retrieves data from the database.

CLIENT TIER

• The client tier, or top tier, is the application's user interface, which gathers input and displays output.

• Users interact directly with the application through the user interface, which is typically a Web browser, keyboard and mouse. In response to user actions the client

290

Page 291: internet prgramming-notes

tier interacts with the middle tier to make requests and to retrieve data from the information tier.

• The client tier then displays the data retrieved from the middle tier to the user. The client tier never directly interacts with the information tier.

TIER-TO-TIER COMMUNICATION

Communication between the user interface and business tiers can be achieved by• HTTP • RMI • CORBA • DCOM

Communication between the business and persistence tier can be achieved by• JDBC

END OF UNIT V

QUESTION BANK

UNIT I – BASIC NETWORK AND WEB CONCEPTS

1. Why networking in Java is essential ?

291

Page 292: internet prgramming-notes

Java is the first programming language designed from the ground up with networking in mind.

As the global internet continues to grow, java is uniquely suited to build the next generation of network applications.

Java is platform independence, security, and international character sets being the most important – that are crucial to internet applications.

It makes network programs easy. It is easy for java applications to send and receive data across the internet.

It is also possible for applets to communicate across the internet, though they are limited by security restrictions.

2. What can a network program do?

Networking adds a lot of power to simple programs. With networks, a single program can retrieve information stored in millions of computers located anywhere in the world.

A single program can communicate with tens of millions of people. A single program can harness (tie together) the power of many computers to work on one problem.Network applications generally take one of several forms. The distinction is clients and servers.

In the simplest case, clients retrieve data from a server and display it. More complex clients filter and reorganize data, repeatedly retrieve changing data, send data to other people and computers, and interact with peers in real time for chat, multiplayer

games, or collaboration.

3. Mention the advantages of java/java script

Use sending data continuously File storage Massively parallel computing Smart forms – includes various controls like text box, radio button, text area control

etc. Peer-to-Peer Interaction – used in various client/server model. Games – Combine the ability to easily include networking in your programs with

java’s powerful graphics and you have the recipe for truly awesome multiplayer games.

Chat – Used in various chat applications. Whiteboards – Java programs are not limited to sending ext and data across the

network. A number of programmers have developed whiteboard software that allows users in diverse locations to draw on their computers.

292

Page 293: internet prgramming-notes

4. Define Internet.

Network is an interconnection of systems to share data and information.

Internet is network of network or collection of heterogeneous networks.

5. What can a network program do? Or uses or advantages of Networking concept.

Repeatedly Retrieve Data Use sending data continuously.

File storage

Massively parallel computing

Smart forms – includes various controls like text box, radio button, text area control

etc.

Peer-to-Peer Interaction – used in various client/server model.

Games – Combine the ability to easily include networking in your programs with

java’s powerful graphics and you have the recipe for truly awesome multiplayer

games.

Chat – Used in various chat applications.

Whiteboards – Java programs are not limited to sending ext and data across the

network. A number of programmers have developed whiteboard software that allows

users in diverse locations to draw on their computers.

Servers Java applications can listen for network connections and respond to them.

This makes it possible to implement servers in Java. Both Sun and W3C have written

web servers in Java designed to be as fully functional and fast as servers written in C.

Various protocols are available in Server for communication like HTTP, FTP, TCP

etc.

ELECTRONIC COMMERCE

3. Shopping sites have proven to be one of the few real ways to make money from

consumers on the web.

293

Page 294: internet prgramming-notes

4. Although many sites accept credit cards through HTML forms, the mechanism is

clunky (clubbing).

5. Shopping carts (pages that keep track of where users have been seen and what they

have chosen) are at the outer limits of what’s possible with HTML and forms.

6. MENTION THE LAYERS OF A NETWORK

Logical path

The Host to HostLayer

7.

INTERNET PROTOCOL (IP) CONTAINS ONLY 4 LAYERS, NAMELY

6.1 Application layer6.2 Transport Layer(TCP, UDP)6.3 Internet Layer (IP)6.4 Host to Host Layer

7. WHAT IS THE USE OF IP ADDRESSES AND PORTS?

4. It is very difficult to remember the IP address of each and every node.5. It order to avoid this problem domain names are used.6. Example googl.com, rediff.com etc.

PORTS

4. Ports are used in receiving and sending data to another server or client.5. Example for port numbers

Protocol Port Protocol Purpose

Echo 7 TCP/UDP Echo is a test protocol used to verify that 2 machines are able to connect by having one echo back the other’s input.

Discard 9 TCP/UDP Discard is a less useful test protocol in which all data received by the server is ignored.

FTP 21

Application Layer

Transport Layer (TCP, UDP)

Internet layer (IP)Physical path(Ethernet, FDDI etc

Application Layer

Transport Layer (TCP, UDP)

Internet layer (IP)Physical path

294

Page 295: internet prgramming-notes

SMTP 25HTTP 80POP3 110NTP 119 Usenet news transfer is more formally known as the

Network News Transfer ProtocolRMI Registry

1099 This is the registry service for Java Remote Objects.

8. MENTION THE DIFFERENT INTERNET ADDRESS CLASS AND IT’S RANGE.

8. Internet addresses are assigned to different organizations by the Internet Assigned Numbers Authority (IANA).

9. ISP – Internet Service Providers gives a block addresses.10. Class C address block specifies the first 3 bytes of address, for example

199.1.32. This allows room for 254 individual addresses from 199.1.32.1 to 199.1.32.254

11. Class B address specified only the first 2 bytes of the addresses .12. There are also Class D and E addresses are used for IP multicast group.

9. DEFINE FIREWALL.

The hardware and software that sits between the Internet and the local network, checking all the data that comes and goes out is called “firewalls”. The security is provided using SSL(Secure Socket Layer) in internet.

10. DEFINE PROXY SERVERS

Proxy servers are related to firewalls prevents hosts on a network from making direct connections to the outside world, a proxy server can act as a go-between.

Thus a machine that is prevented from connecting to the external network by a firewall would make a request for a web page from the local proxy server instead of requesting the web page directly from the remote web server.

11. Mention the various levels of W3C RECOMMENDATIONS (WWW 3 Consortium)

W3C Levels

4. Recommendation - is the highest level of W3C standard. However, the W3C is very careful not to actually call this a “standard” for fear of running afoul (afraid) of antivirus statutes.

295

Page 296: internet prgramming-notes

5. Proposed Recommendation - A proposed recommendation is mostly complete and unlikely to undergo more than minor changes.

The main purpose of a Proposed recommendation is to work out bugs in the specification document rather that in the in the underlying technology documented.

6. Candidate Recommendation

A candidate Recommendation indicates that the working group has reached consensus on all major issues and is ready for third-party comment and implementations.

12. WHAT IS THE USE OF HTTP PROTOCOL?

HTTP is a standard protocol that defines how a web client talks to a server and how data is transferred from the server back to the client.

HTTP relies heavily on two other standards.2. MIME (Multi purpose Internet Mail Extensions3. HTML

13. WHAT IS THE USE OF MIME?(Multipurpose Internet Mail Extension)

7. MIME is a way to encode different kinds of data, such as sound and text, to be transmitted over a 7-bit ASCII connection.

8. It also lets the recipient know what kind of data has been sent, so that it can be displayed properly.

9. MIME was originally designed to facilitate multimedia email and to provide an encoding that could get binary data past the most train –damaged mail transfer programs.

14. DEFINE URL & URN.

URL

Uniform Recourse Locator is a way to unambiguously identify the location of a resource on the Interned.

URI Uniform Resource Identifier is a string of characters in a particular syntax that identifies a resource.

296

Page 297: internet prgramming-notes

The resource identified may be a file on a server, but it may also be an email address, a news message, b book, a person’s name, an Internet host.

Syntax

Scheme:scheme-specific-part

Scheme types

1. data – base 64 encoded data included directly in a link2. fil e – A file on a local disk

4. FTP – An FTP server5. gopher – a Gopher server6. mailto – an email address7. news – A Usenet newsgroup8. Telnet – A connection to a Telnet based service (only used in Remote Login System)9. urn – Uniform Resource Name

15. EXPLAIN ABOUT URN

There are 2 types of URLs.

3. URL – Unform Resource Locaters (is a pointer to a particular resource on the Internet at a particular location.)

4. URNs – Uniform Resource Name (is a name for a particular resource but without reference to a particular location)

SYNTAX OF URN

urn:namespace:resource-name

1. namespace - is the name of a collection of certain kinds of resources maintained by some authority.

2. resource-name – is the name of a resource within that collection.

16. WHAT IS MEANT BY RELATIVE URL?

URLs that are not complete but inherit pieces from their parent are called relative URL.

In contrast, a completely specified URL is called an absolute URL.

17. EXPLAIN ABOT SGML – STANDARD GENERALIZED MARKUP LANGUAGE

297

Page 298: internet prgramming-notes

HTML is an instance of SGML. SGML was invented beginning in the mid-1970s by Charles Goldfarb at IBM SGML is now an International Standards Organization (ISO) standard, specifically

ISO 8879:1986. SGML allows the user to create various user defined tags easily without any rules.

EXAMPLE 1 – FOR PRODUCT DETAILS

<PRODUCT MANUFACTURER=”ABC COMPANY”> -Assumed as record name <NAME> KEY BOARD </NAME> <TYPE> KEY BOARD </TYPE> <PRICE> 1500 </PRICE></PRODUCT

18. EXPLAIN ABOUT XML – EXTENSIBLE MARKUP LANGUAGE

Similar to SGML Allows the user to create any number of user defined tags. The value of an attribute may be enclosed in double of single quotes like this: <H1 ALIGN=CENTER> THIS IS CENTERED H1 HEADING </H1> STYLES can be introduced for XML program like CSS using XLS file(XML Style

Sheet program) Here XML styles are saved with an extension of .xls (XML style sheet) Using .xls files various styles can be given to the data which is inside the XML

program.

19. LIST THE STEPS FUNCTIONS OF HTTP PROTOCOL.

1. Standard protocol for communication between web browsers and web servers.2. HTTP specifies how a client and server establish a connection, how the client

requests data from the server, how the server responds to that request, and

finally how the connection is closed.

3.HTTP 1.0 is the currently accepted version of the protocol. It uses MIME to encode data. The basic protocol defines a sequence of 4 steps for each request from a client to the server.

3. Making the connection4. Making a request5. Receiving the response

298

Page 299: internet prgramming-notes

6. Closing the connection20. MIME

1. MIME is an open standard for sending multipart, multimedia data through Internet email.

2. MIME was originally intended for email, it has become a widely used technique to describe a file’s contents so that client software can tell the difference between different kinds of data.

Type Subtype Description

Text Calendar

Css

directory

Calendar control

A CSS used for HTML and XML

Address book information such as name, phone, email address.

21. EXPLAIN ABOUT CGI – COMMON GATEWAY INTERFACE

CGI is used to generate web pages dynamically. It is not a programming language. It is an environment which provides facility for executing programs and

Simple program

<HTML><HEAD><TITLE> CGI EXAMPLE </TITLE></HEAD>

<BODY> <FORM METHOD = GET ACTION = “/cgi/register.pl”>

Enter your Name <input type = “text” name = nname size = 25> Enter your Mail address <input type = “text” name = nmail size = 10> </FORM> <input type = “submit” name = “nsubmit”>

299

Page 300: internet prgramming-notes

<input type = “reset” name = “nreset”></FORM> </BODY> </HTML>

NOTE: CGI files are stored in .pl extension.

22. WHAT DO YOU MEAN BY APPLETS AND SECURITY?

Applets are just more files that are transferred like any other.

Applets are small windows in which the data can be given and data can be displayed also.

WHERE DO APPLETS AND CLASSES COME FROM?

When a browser sees an applet tag and decides to download and play the applet, it starts a long chain of events.

Let’s say your browser sees the following applet tag:

<applet codebase = http://javafaq/classes code = “Animation.class” width = 200 height = 300>

1. The web browser sets aside a rectangular area on the page 200 pixels wide and 300 pixels height.

2. The browser opens a connection to the server specified in the codebase parameter, using port 80.

3. The browser requests the .class file from the web server as it requests any other file. If a code base is present, it is prefixed to the requested filename. Otherwise, the document base (the directory that contains the HTML page) is used.

4. The server responds by sending a MIME header followed by a blank line (\r\n) followed by the binary data in the .class file.

5. The web browser receives the data and stores it in a byte array.

6. The byte code verifier goes over the byte codes that have been received to make sure they don’t do anything forbidden, such as converting an integer in to pointer.

SECURITY: WHO CAN AN APPLET TALK TO AND WHAT CAN IT SAY?

There is much FUD (fear, uncertainty, and doubt) in the press about what Java applets can and cannot do.

300

Page 301: internet prgramming-notes

6. Applets cannot access arbitrary addresses in memory. Unlike the other restrictions I the list, which are enforced by the browser’s SecurityManager instance, this restriction is a property of the Java language itself and the byte code verifier.

7. Applets cannot access the local file system in any way. They cannot read from or write to the local file system nor can they find out any information about files.

8. Applets cannot launch other programs on the client. In other words, they can not call Sysem.exec() or Runtime.exec().

9. Applets cannot load native libraries or define native method calls.10. Applets may not define any system properties.

Finally, most important of applets are

4. An applet can only open network connections to the host from which the applet itself was downloaded.

5. An applet cannot listen on ports below 1024 (IE 5.0 does not allow applets to listen on any ports)

6. Even if an applet can listen on a port, it can accept incoming connections only from the host from which the applet itself was downloaded.

END OF UNIT I

UNIT II - I/O STREAMING

23. LIST THE VARIOUS TYPES OF STREAM CLASSES IN JAVA

8. I/O in java is built on streams.

9. Input streams read data/Output streams write data

10. Different fundamental stream classes such as java.io.FileInputStream and sun.net.TelnetOutputStream read and write particular sources of data.

11. Filter streams can be chained to wither an input stream or an output stream.

301

Page 302: internet prgramming-notes

12. Filters can modify the data as it’s read or written – for instance, by encrypting or compressing it.

13. java.io.DataOutpurStream class provides a method that converts an integer to four bytes and writes those bytes onto its underlying output stream.

14. Finally, readers and writers can be chained to input and output streams to allow programs to read and write text (that is characters) rather than bytes.

24. DEFINE STREAM AND MENTION ITS TWO MAJOR CLASSIFICATION

STREAM is a path of communication between two clients or client to server or server to client or server to server. There are two types of streams. They are

1. Byte Stream -> Read/Write operation is performed byte by byte at a time.

2. Character Stream -> Read/Write operation is performed character by character at a time.

25. LIST THE CLASS PROVIDES THE FUNDAMENTAL METHODS NEEDED TO WRITE DATA.

public abstract void write(int b) throws IOExceptionpublic void write(byte[] data) throws IOExceptionpublic void write(byte[] data, int offset, int length ) throws IOExceptionpublic void flush() throws IOExceptionpublic void close() throws IOException

26. WHAT IS THE MEANING OF FLUSH (WASH OUT) METHOD ?

Flush method rescues you from deadlock by forcing the buffered stream to send its data even if the buffer is not yet full.

26. LIST THE CLASS PROVIDES THE FUNDAMENTAL METHODS NEEDED TO READ DATA.

public abstract int read() throws IOException

302

Page 303: internet prgramming-notes

public int read(byte[] input) throws IOException

public int read(byte[] input, int offset, int length ) throws IOException

public long skip(long ) throws IOException

public int available() throws IOException

public void close() throws IOException

27. MARKING AND RESETTING

The InputStream class also has three less commonly used methods that allow programs to back up and reread data they’ve already read. These are:

1. public void mark(int readAheadLimit)2. public void reset() throws IOException3. public Boolean markSupported()

Marking7. Mark the current position in the stream with the mark() method.8. At a later point, you can reset the stream back to the marked position using the reset()

method.9. Subsequent reads then return data starting from the marked position.

10. The number of bytes you can read from the mark and still reset is determined by the readAheadLimit argument to mark.

11. If you try to reset back too far, and IOException will be thrown.12. There can be only one mark in a stream at any given time. Marking a second location

erases the first mark.

13. Marking and resetting are usually implemented by storing every byte read from the marked position in an internal buffer.

28. WHAT IS THE USE OF FILTER STREAMS?

3. Input/Output stream are fairly raw classed. They allow you to read and write bytes, either singly or in groups, but deciding what those bytes mean – whether they are integers or IEEE 754 floating numbers or Unicode text is completely up to the programmer and the code.

303

Page 304: internet prgramming-notes

4. Many files transferred by ftp are stored in the zip format. Java provides a number of filter classes you can attach to raw streams to translate the raw bytes to and from these and other formats.

29. WHAT IS THE USE OF BUFFERED STREAMS?

1. The BufferedOutputStream class stores written data in a buffer until the buffer is full or the stream is flushed.

2. Then it writes the data onto the underlying output stream all at once.

3. BufferedInputStream class works Similar to BufferedOutputStream class for read operation.

30. LIST THE CONSTRUCTORS USED IN BUFFERED IN/OUT STREAM CLASSES

public BufferedInputStream(InputStream in)public BufferedInputStream(InputStream in, int bufferSize)public BufferedInputStream(InputStream out)public BufferedInputStream(InputStream out, int bufferSize)

31. THE PRINTSTREAM

The printStream class is the first filter output stream most programmers encounter’ because System.out is a PrintStream. However, other output streams can also be chained to print streams, using these two constructors:

public printStream(OutputStream out)public printStream(OutputStream out, Boolean autoflush)

32. LIST THE METHODS OF PRINTSTREAM CLASS

PRINTSTREAM – has 9 overloaded print() methods and 10 overloaded println() methods.

1. public void print(boolean b)2. public void print(char b)3. public void print(int b)4. public void print(long b)5. public void print(float b)6. public void print(double b)

304

Page 305: internet prgramming-notes

7. public void print(char[] text)8. public void print(String s)9. public void print(Object o)

1. public void println(boolean b)2. public void println(char b)3. public void println(int b)4. public void println(long b)5. public void println(float b)6. public void println(double b)7. public void println(char[] text)8. public void println(String s)9. public void println(Object o)10. println()

33. LIST VARIOUS COMPRESSING STREAMS

Java .util.zip package contsins filter streams that compress and decompress streams in zip, gzip, and deflate(shrink or reduce) formats.

There are 6 stream classes that perform compression and decompression.

1. public class DeflaterOutputStream extends FilterOutputStream2. public class DeflaterInputStream extends FilterInputStream3. public class QDeflaterOutputStream extends FilterOutputStream4. public class DeflaterOutputStream extends FilterOutputStream5. public class DeflaterOutputStream extends FilterOutputStream6. public class DeflaterOutputStream extends FilterOutputStream and so on.

34. WHAT IS THE USE OF DIGEST (assimilate, absorb, grasp, observe)STREAMS

The java.util.security package contains two filter streams that can calculate a message digest for a stream.

They are DigestInputStream and Digest-OutputStream.

A message digest, represented in Java by the java.util.security.MessageDigest class, is a strong hash code for the stream; that is, it is a large integer (typically 20 bytes long in binary format) that can easily be calculated from a stream of any length in such a fashion that no information about the stream is available from the message digest.

305

Page 306: internet prgramming-notes

A messageDigest object that uses a particular algorithm, such as the Secure Hash Algorithm (SHA).

35. WHAT IS THE USE OF ENCRYPTING STREAMS?

1. CipherInputStream and CipherOutputStream are part of a standard extension to java called the Java Cryptography Extension.

2. public CipherInputStream(InputStream in, Cipher c)

3. public CipherOutStream(InputStream in, Cipher c) – used for encryption and decryption respectively.

36. READERS AND WRITERS

1. Java’s native character set is the 2-byte Unicode character set. Consequently, Java provides an almost complete mirror of the input and output stream class hierarchy that’s designed for working with characters instead of bytes.

2. Two abstract super classes define the basic API for reading and writing characters.

3. The java.io.Reader class specifies the API by which characters are read.

4. The java.io.Writer class specifies the API by which characters are written.

5. Wherever input and output streams use bytes, readers and writers use Unicode Characters.

6. The most important sub classes are InputStreamReader and the OutputStreamWriter classes.

FileReaderFileWriterStringReaderStringWriterChararrayReaderCharArrayWriter

WRITERS

The Writer class mirrors the java.io.OutputStream.class. It’s abstract and has two protected constructors. Write OutputStream, the Writer class is never used directly, but one of its subclasses.

306

Page 307: internet prgramming-notes

1. protected Writer()2. protected Writer(Object lock)3. public abstract void write(char[] text, int offset, int length) throws

IOException

4. public void write(int c) throws IOException5. public void write(char[] text) throws IOException6. public void write(String s, int offset, int length) throws IOException7. public abstract void flush() throws IOException8. public abstract void close() throws IOException

READERS

The Reader class mirrors the java.io.InputStream class. All the classes of writers is applicable for readers also, change read instead of

write

LineNumberReader

The LineNumberReader class replaces the deprecated LineNumberInputStream class from Java 1.0. It’s a subclass of BufferedReader that keeps track of the current line number being read.

Line number can be retrieved at any time with the getLineNumber() method.public LineNumberReader(Reader in)

public LineNumberReader(Reader in, int bufferSize)

Similarly we have

3. PushbackReader4. PrintWriter classes.

37. DEFINE THREAD.

A thread with a little t is a separate independent path of execution in the virtual machine.

A Thread with a capital T is an instance of the java.lang.Thread class.

There is a one-to one relationship between threads executing in the virtual machine and Thread objects also constructed by the virtual machine.

307

Page 308: internet prgramming-notes

Most of the time it’s obvious from the context which is meant if the difference is really important.

To start a new thread running in the virtual machine, construct an instance of Thread class and invoke its start() method as follows:

NOTE By default a java program has one thread.

38. DEFINE RACE CONDITION ALGORITHM. POLLING AND CALLBACKS

Java Virtual Machine uses different algorithms to allot time to different threads. This is called a race condition.

POLLING

The solution mostly adopt is to have the getter method return a flag value (or perhaps throw an exception) until the result field is set. Then the main thread periodically polls the getter method to see whether it’s returning something other than the flag value.

CALLBACKs

There are more efficient way to handle the problem. The infinite loop that repeatedly polls each ReturnDigest object to see whether it is finished can be eliminated.39. SYNCHRONIZATION (organization)

308

3. For creating a Thread

Thread t = new Thread();t.start()

4. To run a ThreadPublic void run()

Page 309: internet prgramming-notes

Synchronization is the process of organizing threads in a proper way. That is if one thread is activated another thread will be put into sleep mode. In the next cycle the thread which is in sleep mode is activated now and the other thread is put in to sleep mode.

Synchronization process is very much essential for handling Threads properly.

CYNCHRONIZED BLOCKS

Synchronization must be considered any time multiple threads share resources. These threads may be instances of the same Thread subclass or use the same Runnable class, or they may be instances of completely different classes.

40. LIST THE VARIOUS ALTERNATICES TO SYNCHRONIZATION

1. Synchronization is not always the best possible solution to the problem of inconsistent behavior as a result of thread scheduling.

2. There are a number of techniques you can use to avoid the need for synchronization.

Method 1

1.5 Use local variables instead of fields wherever possible. Local variables do not have synchronization problems.

1.6 String arguments are safe because they are immutable, that is, once a string object has been created, it cannot be changed by any thread.

1.7 An immutable object never changes state.

1.8 A third technique is to use a thread unsafe class but only as a private field of a class that is thread-safe. As long as the containing class accesses the unsafe class only in a thread –safe fashion, and as long as it never lets a reference to the private field leak out into another object, the class is safe.

1.9 Each separate thread its own separate log so that no resources were shared between the individual threads.

41. DEADLOCK, THREAD SCHEDULING

Deadlock occurs when two threads each need exclusive access to the same set of resources, but each thread possesses a different subset of those resources.

309

Page 310: internet prgramming-notes

THREAD SCHEDULING

1. The order in which the threads are executed is called thread scheduling.2. It is used to schedule the thread one by one without overlapping.3. If the scheduling is not proper it may lead to errors.

42. EXPLAIN ABOUT THREAD PRIORITIES

3. Each thread has a priority that’s specified as an integer from 1 to 10. When multiple threads are able to run, generally the VM will run only the highest-priority thread, though that’s not a hard-and-fast rule.

4. public static final int MIN_PRIORITY = 1; public static final int MIN_PRIORITY = 5; public static final int MIN_PRIORITY = 10;

The priority which has 10, 5, 1 will get executed in the order.

Thread PRIORITY is divided into

43. DEFINE BLOCKING, YIELDING AND SLEEPING

Blocking occurs any time a thread has to stop and wait for a resource it doesn’t have.

The most common way a thread in a network program will voluntarily give up control of the CPU is by blocking on I/O.

Threads can also block when they enter a synchronized method or block.

YIELDING The second way for a thread to give up control is to explicitly yield.

A thread does this by invoking the static Thread.yield() method public static void yield()

310

Preemptive -> Possible to alter the sequence

NonPreemptive -> Not possible to alter the sequence.

Page 311: internet prgramming-notes

SLEEPING Sleeping is more powerful form of yielding. Whereas yielding indicates only that a

thread is willing to pause and let other equal-priority threads have a turn, a thread that goes to sleep will pause whether any other thread is ready to run or not.

Sometimes sleeping is useful even if you don’t need to yield to other threads. Putting a thread to sleep for a specified period of time lets you write code that executes one every second, every minute, every ten minutes, and so forth.

Thread.sleep() – used to put the thread in sleep mode.

44. WHAT IS MEANT BY JOINING THREADS ?

It is used to join two threads. After joining threads it can be sequenced one by one

Public final void join(long milliseseconds) throws InterrupteExceptionPublic final void join(long milliseseconds, int nanoseconds) throws InterrupteException

45. WHAT IS THE USE OF THREAD POOLS?

3. Adding multiple threads to a program dynamically improves performance, especially for I/O – bound programs such as most network programs.

Even if the threads finish quickly, this can overload the garbage collector or other parts of the VM, and hurt performance

45.1 LIST THE JOBS WHICH ARE INVOLVED IN THREADS.

It can block on I/O It can block on a synchronized object It can yield It can go to sleep It can join with an another thread It can wait on an object It can finish It can be preempted y a higher-priority thread It can be suspended It can stop

311

Page 312: internet prgramming-notes

46. WHAT IS THE USE OF DNS, IP ADDRESSES?

7. Devices connected to the Internet are called nodes.

8. Nodes that are computers are called hosts.

9. Each node or host is identified by at least one unique 32-bit number called an Internet address.

10. An IP address is normally written as four bytes of memory, each ranging from 0 to 255.

11. For example 152.255.6.9 is called the dotted quad format.

12. To avoid the complexity of IP address problem, the designers of the Internet invented the domain Name System (DNS).

47. WHAT IPv6 AND 128-bit Addresses

The current IP address standard uses 32 bits, which is enough to address more than four billion computers, almost one for every person on earth.

A new standard called IPv6 will begin using 16-byte, 128-bit addresses. This expands the available address space to 2128 or 1.6043703E32 different

addresses.

IPv6 AND 128-bit Addresses

The current IP address standard uses 32 bits, which is enough to address more than four billion computers, almost one for every person on earth.

A new standard called IPv6 will begin using 16-byte, 128-bit addresses.

This expands the available address space to 2128 or 1.6043703E32 different addresses.

The InetAddress Class

The java.net.InetAddress class is Java’s encapsulation of an IP address.

312

Page 313: internet prgramming-notes

It is used by most of the other networking classes, including Socket, ServerSocket, URL, DatagramSocket, DatagramPacket, and more.

Creating New InetAddress Objects

4. public static InetAddress InetAddress.getByname(String hostname) throws UnknownHostException

5. public static InetAddress[] InetAddress.getAllByname(String hostname) throws UnknownHostException

6. public static InetAddress InetAddress.getLocalHost() throws UnknownHostException

48. GIVE THE SYNTAX FOR CREATING A NEW URL

The simplest URL constructor just takes an absolute URL in string form as its single argument:

Public URL(String url) throws MalformedURLException

Try { URL u = new URL(http://www.macfaq.com/personal.html); }

49. LIST THE 5 METHODS OF URL

Read-only access to these parts of a URL is provided by five public methods. They are as follows:

7. getFile()8. getHost()9. getPort()10. getProtocol()11. getRef() and getAuthority()

8. getProtocol() – method returns a String containing the scheme of the URL. For example http,https or file.

313

Page 314: internet prgramming-notes

9. getHost() – method returns a String containing the hostname of the URL.

10. getPort() – method returns the port number specified in the URL as an int. If no port was specified in the URL, then getport() returns -1 to signify that the URL does not specify the port explicitly, and will use the default port for the protocol.

11. getFile() – method returns a String that contains the path and file portion of a URL; remember that java does not break a URL into separate path and file parts.

12. getRef() – method returns the named anchor part of the URL. If the URL does not have a named anchor, the method returns null.

13. getQuery() – method returns the query of the URL,

14. getAuthority() – Between the scheme and the path of a URL, you will find the authority. The term authority is taken from the URI specification (RFC 2396), where this part of the URI indicates the authority that’s resolving the resource.

50. DATAGRAM PACKET & DATAGRAM SOCKET *****

Data is transmitted across the Internet in packets of finite size called datagrams. Data gram is a container for holding the data. Each datagram contains a header and payload.

Data gram socket is a mechanism or method for sending or receiving datagram packets.

51. LIST THE SOCKET BASIC STEPS

A socket is a connection between two hosts. It can perform 7 basic operations:

8. Connect to a remote machine9. Send data10. Receive data11. Close a connection12. Bind a port13. Listen for incoming data14. Accept connections from remote machine on the bound port

52. WHAT IS A PORT?

314

Page 315: internet prgramming-notes

Each and every socket is bind with a port only. Port is a communication device between 2 different sockets. Data is always transmitted via ports only. Ports are always specified as integer values from 0 to 65,535.

53. LIST THE VARIOUS CONSTRUCTERS USED FOR CREATING SOCKETS

5. public Socket(String host, int port) throws UnknownHostException, IOException

Creates a TCP socket to the specified port on the specified host and attempts to connect to the remote host.

6. public Socket(InetAddress host, int port) throws IOException

This constructor creates a TCP socket to the specified port on the specified host and tries to connect. It differs by using an InetAddress object.

7. public Socket(String host, int port, InetAddress interface, int localPort) throws IOException

This constructor creates a socket to the specified port on the specified host and tries to connect. It connects to the host and port specified in the first two arguments.

8. public Socket(InetAddress host, int port, InetAddress interface, int localPort) throws IOException

54. WHAT IS FINGER?

Finger is a straightforward protocol described in RFC 1288.

The client makes a TCP connection to the server on port 79 and sends a one line query.

The server responds to the query and closes the connection.

The format of the query precisely, defied, the format of the response somewhat less so.

The data transferred is pure printable and ASCII text.

55. WHAT IS WHOIS?

315

Page 316: internet prgramming-notes

Whois is a simple directory service protocol defined in RFC 954.

It was originally designed to keep track of administrators responsible for Internet hosts and domains.

A whois client connects to one of several central servers and requests directory information for a person or persons; it can usually give you a phone number, and email address, and a U.S. mail address (not necessarily current ones though).

THE STRUCTURE OF SHOIS PROTOCOL

The client opens a TCP socket to port 43 on the server whois.internic.net.

When you are using whois, you almost always connect to this server; there are a few other servers, but these are relatively rare.

But there is a separate whois server for the U.S. department of Defencse.

4. The client sends a search string terminated by a carriage return/linefeed pair (/r/n). You can also search for domain names, like oreilly.com or netscape.com, which give you information about a network.

5. The server sends an unspecified amount of human-readable information in response to the command and closes the connection.

6. The client displays this information to the user.

56. WHAT YOU MEAN BY FULL-FLEDGED HTTP SERVERS?

5. HTTP is a large protocol.

6. A full featured HTTP server must respond to requests for files, convert URLs into file-names on the local system.

7. It also respond to POST and GET requests, handle requests for files that don’t exist, interpret MIME types, launch CGI programs.

8. Our investigation of HTTP servers begins with a server that always sends out the same file, no matter who or what the request.

A FULL-FLEDGED HTTP SERVER

316

Page 317: internet prgramming-notes

3. HTTP server can serve an entire document tree, including images, applets, HTML files, and more.

4. This server is called full fledged server.

57. WHAT IS THE USE OF SECURE SOCKET LAYER (SSL)?

4. Confidential communication through an open channel such as the public Internet that nonetheless resists eavesdropping absolutely requires that the data be encrypted.

5. In traditional secret key (or symmetric) encryption, the same key is used both to encrypt and decrypt the data.

6. In public key (or asymmetric) encryption, different keys are used to encrypt and decrypt the data. One key, called the public key, is used to encrypt the data. This key can be given to anyone.

58. WHAT IS THE USE OF SESSION MANAGEMENT?

SSL is most commonly used on web servers. Web connections tend to be transitory(fleeting or temporary) Using JSSE, you don’t need to do anything extra to take advantage of sessions. Using session, various information can be retrieved.

7. public byte[] getId()8. public SSLSessionContext getSessionContext()9. public long getCreateation()10. public long getLastAccessdTime()11. public void invalidate()12. public void removeValue(String name)

59. WHAT IS THE USE OF UDP PROTOCOL?

UDP – User Datagram protocol is an alternative protocol for sending data over IP that is very quick, but not reliable.

That is, when you send UDP data, you have no way of knowing whether it arrived, much less whether different pieces of data arrived in the order in which you sent them.

It is connectionless type of protocol.

317

Page 318: internet prgramming-notes

60. DIFFERENCIATE CONNECTION-ORIENTED AND CONNECTION LESS PROTOCOL.

Connection oriented protocol Connection less protocolClient has to establish a connection to another client or server

Establishing connection is not needed

Once the connection is established, then data transfer takes place.

Data transfer takes place regardless of connection.

At the end of data transfer client should disconnect the connection.

Not applicable.

61. WHAT DO YOU MEAN BY UNICAST SOCKETS?

Unicast socket provides point-to-point communication.

Unicast sockets create a connection with two well-defined endpoints.

There is one sender and one receiver, and although they may switch roles, at any given time it is easy to tell which is which.

62. WHAT IS THE USE OF MULTICAST SOCKETS?

Multicasting sends data from one host to many different hosts, but not to everyone.

The data goes only to clients that have expressed an interest in the data by joining a particular multicast group.

Protocols require broadcasts only when there is no alternative, and routers limit broadcast to the local network or subnet, preventing broadcasts from reaching the Internet at large.

Multicast is useful during Real Audio, Video broadcasting.

63. WHAT IS DOINPUT & DOOUTPUT?

Most URLConnection objects provide input to a client program.

318

Page 319: internet prgramming-notes

Fox example, a connection to a web server with the GET method would produce input for the client, but a connection to a web server with the POST method might not.

DOOUTPUT

Programs can use a URLConnection to send output back to the server. For example, a program that needs to send data to the server using the POST method could do so by getting an output stream from URLConnection.

useCaches - The useCaches variable determines whether a cache will be used if it is available. The default value is true, meaning that the cache will be used; false means the cache won’t be used.

64. DEFINE CONTENT, PROTOCOL HANDLERS

The URLConnection class is intimately tied to Java’s protocol and content handler mechanism.

The protocol handler is responsible for making connections, exchanging headers, requesting particular documents, and so fourth.

Protocol handler is used to identify what type of protocol is used in network.

Content handler is used to identify what type of content is to be received i.e. picture/text/ASCII type.

Based on the type of the content type responsible protocol is allocated by the protocol handler.

65. DEFINE RMI (important)

RMI – Remote Method of Invocation is the method of creating an object in one machine and accessing it in some other machine. RMI allows the user to call an object remotely.Since Java is platform independent language RMI can be implemented in Java very well.

66. CONTENT HANDLER FACTORY

The URLConnection class contains a static Hashtable of ContentHandler objects. Whenever the getContent() method of URLConnection is invoked, java looks in this Hashtable to find the right content handler for the current URL, as indicated by the URL’s content type. This is referred as Content Factory.

319

Page 320: internet prgramming-notes

END OF UNIT II

UNIT III – SCRIPTING LANGUAGES

66. WHAT IS DOMAIN & MENTION DIFFERENT TYPES OF DOMAINS

Domain is a place where information is available. DOMAIN NAME EXTENSION

.edu – Servers that provide Educational services

.gov – About the government of a country.

.mil – Servers that provide military information.

.org – Provide information about the organizations in the world.

320

Page 321: internet prgramming-notes

.com – Servers providing commercial services on the Internet.

67. WRITE THE FORMAT OF HTML PROGRAM

<HTML><HEAD>

<TITLE> This is the Title </TITLE></HEAD>

<BODY>

…. Type the body of the program

</BODY></HTML>

Note: All the tags in HTML program are optional, however the file should be saved in .html extension.

68. MENTION SOME TEXT FORMATTING TAGS

1. <p> </p> - is used for introducing various paragraphs.5. <br> - this tag is used for giving an empty blank line.6. HEADING TAGS - <h1> </h1> .. <h6> </h6> is used to introduce various headings.

<h1> is the biggest and h6 is the smallest heading tag.7. <HR> TAG – is used to draw lines and horizontal rules.8. <B>,<I>,<U> for bold, italic and underline respectively.

69. EXPLAIN ABOUT LIST TAG.

TYPES OF LISTS

1. Unordered lists2. Ordered lists

UNORDERED LISTS

It starts with <ul> and ends with </ul>

Attributes of Unordered lists

321

Page 322: internet prgramming-notes

TYPE:

TYPE = FILLROUND or TYPE = SQUARE

EXAMPLE

<UL TYPE = FILLGROUND> <LI> CSE </LI>

<LI> IT </LI></UL>ORDERED LISTS (NUMBERING>

TYPE: Controls the numbering scheme to be used

TYPE = “1” will give counting numbers (1,2,…> “A” will give A,B,C.. “a” will give a,b,c “I” starts with Capital roman letters I,II,II… “I” starts with small case roman letters

START: Alters the numbering sequence, can be set to any numeric value VALUE: Change the numbering sequence in the middle of an ordered list

EXAMPLE<OL TYPE = “1” START = 5> <LI> CSE </LI> <LI> IT </LI> </OL>OUTPUT

5 CSE6 IT

70. EXPLAIN THE ATTRIBUTES OF TABLE TAG WITH AN EXAMPLE

A table is a two dimensional matrix, consisting of rows and columns. All table related tags are included between <TABLE> </TABLE> tags.

<TABLE><TH> Heading </TH>

322

Page 323: internet prgramming-notes

<TR> Row elements </TR> <TD> Table data values </TD> </TABLE>ATTRIBUTES OF TABLE TAG

ALIGN Horizontal alignment is controlled by the ALIGN attribute. It can be set to LEFT, CENTER, or RIGHT

VALIGN Controls the vertical alignment of cell contents. It accepts the values TOP, MIDDLE or BOTTOM

WIDTH Sets the WIDTH of a specific number of pixels or to a percentage of the available screen width.

BORDER Controls the border to be placed around the table.CELLPADING This attribute controls the distance between the data in a cell and the

boundaries of the cellCELLSPACING Controls the spacing between adjacent cellsCOLSPAN Used to spilt the single cell to one or more columnsROWSPAN Used to spilt the single cell to one or more rows.

EXAMPLE<TABLE BORDER = 3 WIDTH = 100 HEIGHT = 200>

<TR> <TH> Roll Number </TH> <TH> Age </TH> <TR> <TR> <TD> 1 </TD> <TD 35 </TD> </TR> </TABLE>

8. ALIGN: ALIGN = TOP, MIDDLE,BOTTOM

9. BORDER: Specifies the size of the border to place around

the image.

10. WIDTH: Specifies the width of the image in pixels.

11. HEIGHT: Specifies the height of the image in pixels

12. HSPACE: Indicates the amount of space to the left and

right of the image

13. VSPACE: Indicates the amount of apace to the top and

bottom of the image.

71. WHAT DO YOU MEAN BY COLUMN SPANNING AND ROW SPANNING?

Row spanning is used to merge (combine) two or more rows.

323

Page 324: internet prgramming-notes

Column spanning is used to merge (combine) two or more columns.

72. MENTION THE DIFFERENT TYPES OF LINKS

HTML allows linking to other HTML documents as well as images. There are 3 attributes that can be introduced in BODY tag.

4. LINK – Changes the default color of a Hyperlink to whatever color is specified with this tag.

5. ALINK – Changes the default color of a hyperlink that is activated to whatever color is specified with this tag.

6. VLINK – Changes the default color of a hyperlink that is already visited to whatever color is specified with this tag.

NOTE: User can specify the color name of a hyperlink or an equivalent hexadecimal number.

EXTERNAL LINKS

SYNTAX

<A HREF = “location name”> Hyper Text Message </A>

73. EXPLAIN IMAGE MAPS WITH ITS SYNTAX

When a hyperlink is created on an image, clicking on any part of the image will lead to opening of the document specified in the <A HREF TAG>.

Linked regions of an image map are called hot regions and each hot region is associated with a filename.html.

Syntax

<MAP NAME = “map name”>

ATTRIBUTES OF IMAGE MAPS

4. COORDS: Each of the above shapes takes different coordinates as parameters.a. Rectangle – 4 coordinates (x1,y2,x3,y2)

5. POLYGON: 3 or more coordinates.

324

Page 325: internet prgramming-notes

6. HREF – Takes the name of the .html file that s linked to the particular area on the image.

<MAP NAME = “fish.jpg”> <AREA SHAPE = “rect” COORDS = “52,65,122,89” HREF = “sct.html”>

</MAP>

75. EXPLAIN ABOUT HTML FORM TAG WITH ITS ATTRIBUTES.

HTML form provides several mechanisms to collect information from people viewing your site. The syntax of the form is

<FORM METHOD = “POST” ACTION = “/cgi-bin/formail”>

The METHOD attribute indicates the way the web server will organize and send you the form output.

Use METHOD = “post” in a form that causes changes to server data, for example when updating a database.

The ACTION attribute in the FORM tag is the path to this script; in this case, it is a common script which emails form data to an address. Most Internet Service Providers will have a script like this on their site.

76.MENTION THE VARIOUS FORM ELEMENTS.

Various elements or controls can be created in FORM using <INPUT> tag. They are

1. Label 2. Text box 3. Text Area 4. Radio button

5. Check box 6. List box 7. Command button 8. Scroll bars

77. WHAT IS THE USE OF FRAMES IN HTML GIVE THE SYNTAX OF FRAMES

Frames are used to call many html files at the same time. This can be done using <FRAMESET> </FRAMESET> tags.

ATTRIBUTES OF FRAMES

ROWS – This attribute is used to divide the screen into multiple rows. It can be set equal to a list of values. Depending on the required size of each row. The values can

325

Page 326: internet prgramming-notes

A number of pixels Expressed as a percentage of the screen resolution The symbol *, which indicates the remaining space.

COLS – This attribute is used to divide the screen into multiple columns.

EXAMPLE

<FRAMESET ROWS = “30%,*”> => Divides the screen into 2 rows, * occupying the remaining space

<FRAMESET COLS = “50%,50%”> => Divides the first row into 2 equal columns

<FRAME SRC = “file1.html”> <FRAME SRC = “file2.html”>

<FRAMESET COLS = “50%,50%”> => Divides the second row into 2 equal columns

<FRAME SRC = file3.html”> <FRAME SRC = file4.html”> </FRAMESET> </FRAMESET>

78. MENTION THE TYPES OF SCRIPTING LANGUAGES

JavaScript is a Scripting language (web site development environment) created by Netscape.

Hence JavaScript works best with the Netscape suite of Client and Server products.

JavaScript is the native scripting language of Netscape Navigator.

VBScript is the native Scripting language of HTML.

SERVER SIDE SCRIPTING

In Server side scripting the script program is executed at Server Side the required html program is sent to the client.

The job of the server is more in server side scripting

326

Page 327: internet prgramming-notes

CLIENT SIDE SCRIPTING Here the script program is processed and executed in the client side itself.

So that it reduces the burden of the server.

79. LIST THE ADVANTAGES OF JAVA SCRIPT

3. JavaScript is an object-oriented language that allows creation of interactive Web pages

4. JavaScript allows user entries, which are loaded into an HTML form to be processed as required

ADVANTAGES

11. It is an interpreted language, which requires no compilation steps.12. Embedded within HTML.13. Minimal Syntax – easy to learn14. Quick Development15. Designed for simple, small programs16. High performance17. Procedural Capabilities – support facilities such as condition checking, looping and

branching.18. Designed for programming user events – like VB Java Script is also based on Events.19. Easy Debugging and Testing20. Platform Independence/ Architecture Neutral

SYNTAX OF JAVASCRIPT PROGRAM

<HTML> <HEAD> <SCRIPT language = “JavaScript”>

… body of the script program </SCRIPT></HEAD>

<BODY> <SCRIPT language = “JavaScript”> body of the program.

327

Page 328: internet prgramming-notes

</SCRIPT> </BODY></HTML>

80. WHAT IS DENSE ARRAYS?

A dense array is an array that has been created with each of its elements being assigned a specific value.

Dense arrays are used exactly in the same manner as other arrays.

Dense arrays are declared and initialized at the same time.

Array Methods

Join() – returns all elements of the array joined together as a single string.

Reverse() – reverses the order of the elements in the array.

81. LIST COMPARISION OPERATORS & STRING OPERATORS IN JAVA

= = equal (perform type conversion before testing for equality.

= = = strictly equal (do not perform type conversion before testing for equality

STRING OPERATIRS

Currently Java Script supports only one string concatenation (+) operator.

EXAMPLE “ab” + “cd” produces “abcd”

82. LIST THE VARIOUS DIALOG BOXES IN JAVA SCRIPTDialog boxes are used to display small windows. This is also used to get input from user.

SYNTAXalert(“message”);alert(“Click here to continue”)prompt(“Enter your name”, name)

328

Page 329: internet prgramming-notes

4. Alert is only used to display some information5. Prompt is used to display information along with some input value6. Confirm dialog box, causes program execution to halt until user action takes place.

The user action can be either OK or CANCEL.OK – returns trueCANCEL – returns false

83. MENTION THE VARIOUS JAVA SCRIPT OBJECT MODELS. Math Object String Object Date Object Boolean and Number Object Document Object Window Object

84. HOW SCRIPTING LANGUAGE IS DIFFERS FROM HTML.

HTML is used for simple web page design HTML with FORM is used for both form design and Reading input values

from user. Scripting Language is used for Validating the given input values weather it is

correct or not, if the input value is incorrect, the user can pass an error message to the user.

Using form concept various controls like Text box, Radio Button, Command Button, Text Area control and List box can be created.

85. DEFINE FUNCTION IN JAVA SCRIPT.

Function is a part of a program or in other words function is a module in java program which can be called or invoked any number of times from the main program.

Function can be called any number of times but it can accept any input values or parameters, however it can return only one output at a time.

END OF UNIT III

329

Page 330: internet prgramming-notes

UNIT – IV & V: DYNAMIC HTML, SERVLETS

86. DEFINE CSS – CASCADING STYLE SHEET

DHTML is a new and emerging technology that has evolved to meet the increasing

demand for eye-catching and mind-catching web sites.

DHTML combines HTML with Cascading Style Sheets (CSS) and Scripting

Languages. HTML specifies a web page’s elements like table, frame, paragraph,

bulleted list, etc. CSS can be used to determine an element’s size, color, position and a

number of other features.

Scripting Languages (JavaScript and VBScript) can be used to manipulate the web

page’s elements so that styles assigned to them can change in response to a user’s input.

87. DEFINE CASDING STYLE SHEETS (CSS )

330

Page 331: internet prgramming-notes

CSS are powerful mechanism for adding styles (e.g. Fonts, Colors, Spacing) to web

documents.

They enforce standards and uniformity throughout a web site and provide numerous

attributes to create dynamic effects.

The advantage of a style sheet includes the ability to make global changes to all

documents from a single location. Style sheets are said to cascade when they combine

to specify the appearance of a page.

The style assignment process is accomplished with the <STYLE>…</STYLE> tags.

87. MENTION THE TYPES OF STYLE SHEETS

87.1 Embedded or Internal Style sheet87.2 External or Linked Style sheet87.3 Inline style sheet

88. LIST THE DIFFERENCE BETWEEN STYLE SHEETS

Slno ‘Embedded Linked Inline Style Sheet

1 Style program is embedded with in the HTML program itself.

Style program alone is stored in a separate file with an extension of .css file.

Different from Embedded and Linked CSS

2 Explicit LINK statement is not needed.

Explicit LINK REL statement is needed to connect with .CSS file

Not required

3 Styles can be used within the program only, it can not be called some other files.

Styles used in .CSS file can be used in any HTML program

Styles created should be used immediately before creating another new style.

89. LIST THE PROPERTIES OF STYLE TAG

<STYLE> tag properties are divided in to 6 categories. They are

1. Font Attributes

2. Color and Background attributes

3. Text Attributes

331

Page 332: internet prgramming-notes

4. Border Attributes

5. Margin Attributes and

6. List Attributes.

90. HOW TO INTRODUCE STYLE IN HTML PROGRAM?

<HTML><HEAD><STYLE Type = “text/css”>

predefined tag name {attribute name1:attribute value1; attribute name2:attribute value2; ……attribute name-n:attribute value-n}

<STYLE>

</HEAD>

<BODY>

write the body of program

</BODY> </HTML>

91. WHAT DO YOU MEANT BY OBJECT MODEL AND COLLECTION?

The object model allows web authors to control the presentation of their pages and gives them access to all the elements on their web page.

The whole web page – elements, forms, frames, tables, etc – is represented in an object hierarchy.

Using scripting, an author is able to retrieve and modify any properties or attributes of the web page dynamically.

92 . LIST THE TWO DATE OBJECTS

UTC – Coordinated Universal TimeGMT – Greenwich Mean Time

93. WHAT ARE COOKIES ?

Cookies provide web developers with a tool for personalizing web pages.

332

Page 333: internet prgramming-notes

A cookie is a piece of data that is stored on the user’s computer to maintain information about the client during and between browser sessions.

94. WHAT DO YOU MEAN BY OBJECT REFERENCING?

The simplest way to reference an element is by using the element’s id attribute.

The element is represented as an object, and its various XHTML attributes become properties that ca be manipulated by scripting.

95. DEFINE Data Binding.

With data binding, data need to longer reside exclusively on the server.

Data can be maintained on the client, in a manner that distinguishes it from the XHTML markup on the page.

Typically, data is sent to the client. All subsequent manipulations than take place on the data directly on the client, thus eliminating server activity and network delays.

Once it is available on the client, the data can be sorted and filtered in various ways.

In data binding technology, data made on the client do not propagate(spread, broadcast) back to the server.

Once it is available on the client, the data can be sorted and filtered in various ways.

To bind external data to XHTML elements, Internet Explorer employs software capable of connecting the browser to live data sources. These are known as Data Source Objects (DSOs).

The most popular DSO is – the Tabular Data Control (TDC).

96. WHAT DO YOU MEAN BY RECORDSET?A recordset is simply a set of data or rows to be accessed by the program. It contains the following recordset object methods.

5. MoveNext – used to move the recordset to the next row.6. MovePrevious – used to move the recordset to the previous row.7. MoveFirst – used to move the recordset to the first record immediately.8. MoveLast – used to move the recordset to the last record immediately.

Note move previous and move next methods should be used before checking BOF(), EOF() methods respectively.

333

Page 334: internet prgramming-notes

97. WHAT IS EVENT MODEL LIST SOME DHTML EVENTS. When the program is executed based on a particular event occurrence, it is referred as Event modeling. The DHTML events are described below:Event Description

Onbeforecut Fires before a selection is cut to the clipboardOnbeforecopy Fires before a selection is copy to the clipboardOnbeforepaste Fires before a selection is paste to the clipboard

Onbeforeupdate Fires before a data source is updatedOnafterupdate Fires after a data source is updated

onrowenter,onrowexit,onrowsdelete,onrowsinserted

Related to rows, executed when you enter into row, exit, delete and insert respectively.

onhelp, onkeydown, onkeyup

Fires help, keydown and keyup respectively

ondbclick, ondrag, ondrop Fires when double click, drag or drop event is occurred.Onchange Fires when a new change occured

98. WHAT DO YOU MEAN BY FILTERS AND TRANSITIONS (Changeover, conversion, shift) IN DHTML?

Filters and transitions are specified with the CSS filter property.

Applying filters to text and images causes changes that are persistent .

Transitions are temporary: applying a transition allows you to transfer from one page to another with a pleasant visual effect, such as a random dissolve.

Filters and transitions do not add content to your pages – rather, they present existing content in an engaging manner to capture the user’s attention.

Each of the visual effects achievable with filters and transitions if programmable, so these effects can be adjusted dynamically by programs that respond to user-initiated events, such as mouse clicks and keystrokes.

99. EXPLAIN ABOUT FLIP FILTERS – (FLIPv AND FLIPh ) PROPERTIES.

The flipv and fliph filters mirror text or images vertically and horizontally .

334

Page 335: internet prgramming-notes

<!-- EVENT MODEL FOR ONCLICK - FILTERS1.HTML<!------------------------------------------><?xml version = "1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml"><head> <title> THE FLIP FILTER - FILTERS1.HTML </title> <style type = "text/css"> body { background-color: cyan } table { font-size: 3em; font-family:arial, sans-serif; background-color:pink; border-style: ridge} td { border-style: groove; padding: lex } </style </head> <body> <table> <tr>

<!-- Filters are applied in style declarations ----> <! ------------------------------------------------> <td style = "filter: fliph"> Text </td> <td> Text </tr>

<!-- More than one filter can be applied at once----> <! ------------------------------------------------> <tr> <td style = "filter: flipv fliph"> Text </td> <td style = "filter: flipv"> Text </td> </tr>

</table> </body></html>

335

Page 336: internet prgramming-notes

OUTPUT

fliph filter applied

filpv filter applied

Both

100. WHAT IS THE USE OF XML?

Extensible Markup Language, derived from SGML (Standard Generalized Markup Language.

XML is widely supported open technology (i.e. non-proprietary) for electronic data exchange and storage.

XML is actually a language used to create other markup languages to describe data in a structured manner.

XML documents contain only data, not formatting instructions, so applications that process XML documents must decide how to manipulate or display the document’s data.

101. WHAT DO YOU MEAN BY DTD IN XML?

DTD means Document Type Definition.

DTD file is similar to CSS file, because DTD also contains only styles.

DTD contains various styles which are to be applied in XML document.

336

Page 337: internet prgramming-notes

Like .CSS file .DTD file also should be linked with XML program.

Styles in XML program should be save with .xsl (Xml Style Sheet Language) extension.

102. WHAT IS THE USE OF XML NAMESPACE?

XML allows document authors to create custom elements.

This extensibility can result in naming collisions (i.e. different elements that have the same name) among elements in an XML document.

An XML namespace is a collection of element and attribute names. Each namespace has a unique name that provides a means for document authors to unambiguously refer to elements with the same name (i.e. prevent collisions).

103. WHAT ARE THE USES OF XML?

CML – Chemical Markup Language – for chemical equations

MML - Mathematical Markup Language – for Mathematical equations and derivations.

Used in bio medical line.

104. What is SOAP? (Simple Object Access Protocol)

SOAP is an XML based protocol that allows applications to easily over the internet using XML documents called AOAP message.

A SOAP message contains an envelope, which is a structure that describes a method call.

A SOAP message’s body contains either a request or a response.

A request message’s body contains a Remote Procedure Call (RPC), which is a request for another machine to perform task.

337

Page 338: internet prgramming-notes

The RPC specifies the method to be invoked and any parameters the method takes.

The application sends the SOAP message via an HTTP POST. A SOAP response message is an HTTP response document that contains the results from the methods call (e.g. return values, error messages.)

105. WHAT IS THE USE OF WEB SERVICES?

Web services encompass a set of related standards that can enable two computer applications to communicate and exchange data over the Internet.

The data is passed back and forth using standard protocols such as HTTP, the same protocol used to transfer ordinary web pages.

Web services operate using open, text-based standards that enable components written in different languages and on different platforms to communicate.

They are ready to use pieces of software on the Internet. XML, SOAP, Web Services Description Language (WSDL) and Universal Description, Discovery and Integration (UDDI) are the standards on which web services rely.

UDDI is another XML based format that enables developers and business to publish and locate Web services on a network.

106. LIST AND THE FUNCTIONS OF THREE-TIER APPLICATIONS.

107.1 The client tier, or top tier, is the application’s user interface. Users interact directly with the application through the client tier, which is typically a Web browser, keyboard and mouse.

107.2 The Middle tier implements business logic and presentation logic to control interactions between application clients and application data.

107.3 Business logic in the middle tier enforces business rules and ensures that data is reliable before updating the database to presenting data to a user.

107. WHAT IS IIS?

338

Page 339: internet prgramming-notes

IIS – Microsoft Internet Information Services is an enterprise-level web server that is included with several versions of Windows.

Installing IIS on a machine allows that computer to serve documents

108. WHAT IS MYSQL?

MYSQL is a multi-user, multithreaded (i.e. allows multiple simultaneous connection).

RDBMS server that uses SQL to interact with and manipulate data.

Implementations of MYSQL are available for Windows, Mac OX X, Linux and UNIX.

The ability to access table from different databases y using a single query, increasing the efficiency of retrieving accurate and necessary information.

MYSQL provides the ability to handle large databases (e.g. ten of thousands of tables with millions of rows.

109. WHAT IS THE USE OF PERL DATABASE INTERFACE.

The Perl Database Interface (DBI) enables users to access relational databases from Perl programs.

Database vendors create drivers that can receive interactions through DBI and process them in a database specific manner.

DBI is the most widely used interface available for database connectivity in Perl.

339

Page 340: internet prgramming-notes

PART B – QUESTIONS

BOOK NAME: Java Network Programming study all the points from notes also)

1. *** Why Java is essential in Network programming? (page 2 13 – 8 marks)

2. With a neat diagram explain the layers of IP network (only 4 layers) (page 22 – 28 – 8 marks).

3. Explain the various types of Client/Server Models (Study from notes – 8 marks)

4. Write short notes on the following (PG NO. 50 – 62 - 16 marks)URIURNURLHTMLSGMLXML

5. ****Write short notes on MIME & CGI 70 (pg no. 63 – 70 – 8 marks)

6. Write short notes on applets and Security (page no. 71 – 74 – 8 marks)

340

Page 341: internet prgramming-notes

7. Write short notes on different types of Stream(Input/Output/Filter/buffered/Print Stream classes – 76 – 109 - ** Write one example program involving 5 to 6 stream classes)

8. **** Explain in detail about Thread & Multi thread concept with example program(117 onwards with an example program)

9. ***Explain the various types of Address format. (page no. 167 – Write detail about address A, B, C, D and E in detail)

10. ***Explain in detail about retrieving data using URL connection (page 193)

Explain URL connection concept Explain all the methods in URL like getConnection, getContent etc Explain Lab URL program without fail.

11. ***Explain Client/Server Socket Programming in detail (page no 301 onwards – 8 marks)

Write the any socket program in Lab exercise without fail compulsory.

12. ***Write short notes Protocol Handlers and Content Handlers in detail with a small program (page no 529 – 581 – 16 marks)

13. *** With a neat diagram explain the concept of RMI (Study from Java complete reference book with diagram and write LAB exercise also without fail – 16 marks)

REFERENCE BOOK: INTERNET & WORLD WIDE WEBHOW TO PROGRAM – THIRD EDITION – DEITEL & DEITEL

14. Discuss the various HTML tags in detail (16 marks – refer notes)

15. ** Write short notes on the following (165 marks - refer notes) IMG tag TABLE tag FRAME tag

341

Page 342: internet prgramming-notes

16. ** With a neat diagram write a SCRIPT PROGRAM with validation for the following (each program carries 16 marks)

Student Mark List Inventory System Employee Pay Slip generation Railway Ticket Reservation Online Quiz program

NOTE Answer should be in the following format only.

1. Draw form design

2. Design must have one Primary key field – always check for duplication for the primary key field

3. emp- name, product- name, dept-name etc should not be blank

Write a function for all these validation 4. When you introduce any number field, always check it

is negative or not, if it so do not accept the input value

5. For calculations always use program concept, do not ask the user to enter total, gross etc.

6. Instead through program calculate

Gross.value = val(basic.value + hra.value+da.value)

7. Always use val or ParseInt function when you perform calculation with numbers.

8. for avoiding too much of validation better use the following in the design itself

Radio button Command button Check box List box

9. Must introduce SUBMIT & RESET button at the end of the design

342

Page 343: internet prgramming-notes

17. *** Explain in detail about all the types of Cascading Style sheet with an example program(16 marks – page no. 140 -149)

draw the form design Mention the 3 types of CSS Write example program for each type Write the differences and advantages of each CSS

18. ***Write short notes on the following.(16 marks – page no. 174 - 221)

Write short notes on Java Script/Advantages of Scripting Java Script control statements Java Script functions

19. ** Discuss briefly about HTML – Object Model and Collections (Page no 429 – 438)** Study from notes also

Object modeling Object Referencing Dynamic Styles Dynamic Positioning

20. *** Discuss briefly Dynamic HTML – Event Model (page mp 451 – 471 refer notes also)

Short notes on event model Printing all the tags using program Explain Event bubbling with an example program

21. **** Discuss briefly about Dynamic HTML – Filters and Transitions (page no. 476 – 495 refer notes also)

Explain filters and transitions with example Write program using flipv and fliph attribute with output

diagram. List all the possible events given in the notes.

343

Page 344: internet prgramming-notes

22. *** Discuss briefly about Data Binding using any control for example

binding with table binding with an image sorting table data.

23. ** Discuss briefly the various servers (refer V th unit notes)

24. ****Discuss briefly about Handling of Multimedia database (very important question) (page 985 - 1023)

25. *** Explain handing of ACTIVEX CONTROL.

26. ** Explain the concept of Servlets with an example program ( Lab exercise)

27. Explain about JSP with example program.

28. Explain about JDBC structure with example program.

THE STRUCTURE OF SHOIS PROTOCOL

The client opens a TCP socket to port 43 on the server whois.internic.net.

When you are using whois, you almost always connect to this server; there are a few other servers, but these are relatively rare.

But there is a separate whois server for the U.S. department of Defencse.

7. The client sends a search string terminated by a carriage return/linefeed pair (/r/n). You can also search for domain names, like oreilly.com or netscape.com, which give you information about a network.

8. The server sends an unspecified amount of human-readable information in response to the command and closes the connection.

344

Page 345: internet prgramming-notes

9. The client displays this information to the user.

56. WHAT YOU MEAN BY FULL-FLEDGED HTTP SERVERS?

9. HTTP is a large protocol.

10. A full featured HTTP server must respond to requests for files, convert URLs into file-names on the local system.

11. It also respond to POST and GET requests, handle requests for files that don’t exist, interpret MIME types, launch CGI programs.

12. Our investigation of HTTP servers begins with a server that always sends out the same file, no matter who or what the request.

A FULL-FLEDGED HTTP SERVER

5. HTTP server can serve an entire document tree, including images, applets, HTML files, and more.

6. This server is called full fledged server.

57. WHAT IS THE USE OF SECURE SOCKET LAYER (SSL)?

7. Confidential communication through an open channel such as the public Internet that nonetheless resists eavesdropping absolutely requires that the data be encrypted.

8. In traditional secret key (or symmetric) encryption, the same key is used both to encrypt and decrypt the data.

9. In public key (or asymmetric) encryption, different keys are used to encrypt and decrypt the data. One key, called the public key, is used to encrypt the data. This key can be given to anyone.

58. WHAT IS THE USE OF SESSION MANAGEMENT?

SSL is most commonly used on web servers. Web connections tend to be transitory(fleeting or temporary) Using JSSE, you don’t need to do anything extra to take advantage of sessions. Using session, various information can be retrieved.

345

Page 346: internet prgramming-notes

13. public byte[] getId()14. public SSLSessionContext getSessionContext()15. public long getCreateation()16. public long getLastAccessdTime()17. public void invalidate()18. public void removeValue(String name)

59. WHAT IS THE USE OF UDP PROTOCOL?

UDP – User Datagram protocol is an alternative protocol for sending data over IP that is very quick, but not reliable.

That is, when you send UDP data, you have no way of knowing whether it arrived, much less whether different pieces of data arrived in the order in which you sent them.

It is connectionless type of protocol.

61. DIFFERENCIATE CONNECTION-ORIENTED AND CONNECTION LESS PROTOCOL.

Connection oriented protocol Connection less protocolClient has to establish a connection to another client or server

Establishing connection is not needed

Once the connection is established, then data transfer takes place.

Data transfer takes place regardless of connection.

At the end of data transfer client should disconnect the connection.

Not applicable.

61. WHAT DO YOU MEAN BY UNICAST SOCKETS? Unicast socket provides point-to-point communication.

Unicast sockets create a connection with two well-defined endpoints.

There is one sender and one receiver, and although they may switch roles, at any given time it is easy to tell which is which.

62. WHAT IS THE USE OF MULTICAST SOCKETS? Multicasting sends data from one host to many different hosts, but not to everyone.

The data goes only to clients that have expressed an interest in the data by joining a particular multicast group.

346

Page 347: internet prgramming-notes

Protocols require broadcasts only when there is no alternative, and routers limit broadcast to the local network or subnet, preventing broadcasts from reaching the Internet at large.

Multicast is useful during Real Audio, Video broadcasting.

63. WHAT IS DOINPUT & DOOUTPUT?

Most URLConnection objects provide input to a client program.

Fox example, a connection to a web server with the GET method would produce input for the client, but a connection to a web server with the POST method might not.

DOOUTPUT Programs can use a URLConnection to send output back to the server. For example,

a program that needs to send data to the server using the POST method could do so by getting an output stream from URLConnection.

useCaches - The useCaches variable determines whether a cache will be used if it is available. The default value is true, meaning that the cache will be used; false means the cache won’t be used.

64. DEFINE CONTENT, PROTOCOL HANDLERS

The URLConnection class is intimately tied to Java’s protocol and content handler mechanism.

The protocol handler is responsible for making connections, exchanging headers, requesting particular documents, and so fourth.

Protocol handler is used to identify what type of protocol is used in network.

Content handler is used to identify what type of content is to be received i.e. picture/text/ASCII type.

Based on the type of the content type responsible protocol is allocated by the protocol handler.

66. DEFINE RMI (important)

347

Page 348: internet prgramming-notes

RMI – Remote Method of Invocation is the method of creating an object in one machine and accessing it in some other machine.

RMI allows the user to call an object remotely.

Since Java is platform independent language RMI can be implemented in Java very well.

66. CONTENT HANDLER FACTORY

The URLConnection class contains a static Hashtable of ContentHandler objects. Whenever the getContent() method of URLConnection is invoked, java looks in this Hashtable to find the right content handler for the current URL, as indicated by the URL’s content type. This is referred as Content Factory.

END OF UNIT II

UNIT III – SCRIPTING LANGUAGES

66. WHAT IS DOMAIN & MENTION DIFFERENT TYPES OF DOMAINS

Domain is a place where information is available. DOMAIN NAME EXTENSION

.edu – Servers that provide Educational services

.gov – About the government of a country.

.mil – Servers that provide military information.

.org – Provide information about the organizations in the world.

.com – Servers providing commercial services on the Internet.

67. WRITE THE FORMAT OF HTML PROGRAM

<HTML><HEAD>

<TITLE> This is the Title </TITLE></HEAD>

<BODY>

348

Page 349: internet prgramming-notes

…. Type the body of the program

</BODY></HTML>

Note: All the tags in HTML program are optional, however the file should be saved in .html extension.

68. MENTION SOME TEXT FORMATTING TAGS

1. <p> </p> - is used for introducing various paragraphs.9. <br> - this tag is used for giving an empty blank line.10. HEADING TAGS - <h1> </h1> .. <h6> </h6> is used to introduce various headings.

<h1> is the biggest and h6 is the smallest heading tag.11. <HR> TAG – is used to draw lines and horizontal rules.12. <B>,<I>,<U> for bold, italic and underline respectively.

69. EXPLAIN ABOUT LIST TAG.

TYPES OF LISTS

4. Unordered lists5. Ordered lists

UNORDERED LISTS

It starts with <ul> and ends with </ul>

Attributes of Unordered lists

TYPE:

TYPE = FILLROUND or TYPE = SQUARE

EXAMPLE

<UL TYPE = FILLGROUND> <LI> CSE </LI>

<LI> IT </LI></UL>ORDERED LISTS (NUMBERING>

349

Page 350: internet prgramming-notes

TYPE: Controls the numbering scheme to be used

TYPE = “1” will give counting numbers (1,2,…> “A” will give A,B,C.. “a” will give a,b,c “I” starts with Capital roman letters I,II,II… “I” starts with small case roman letters

START: Alters the numbering sequence, can be set to any numeric value VALUE: Change the numbering sequence in the middle of an ordered listEXAMPLE<OL TYPE = “1” START = 5> <LI> CSE </LI> <LI> IT </LI> </OL>OUTPUT

5 CSE6 IT

70. EXPLAIN THE ATTRIBUTES OF TABLE TAG WITH AN EXAMPLE

A table is a two dimensional matrix, consisting of rows and columns. All table related tags are included between <TABLE> </TABLE> tags.

<TABLE><TH> Heading </TH>

<TR> Row elements </TR> <TD> Table data values </TD> </TABLE>ATTRIBUTES OF TABLE TAG

ALIGN Horizontal alignment is controlled by the ALIGN attribute. It can be set to LEFT, CENTER, or RIGHT

VALIGN Controls the vertical alignment of cell contents. It accepts the values TOP, MIDDLE or BOTTOM

WIDTH Sets the WIDTH of a specific number of pixels or to a percentage of the available screen width.

BORDER Controls the border to be placed around the table.CELLPADING This attribute controls the distance between the data in a cell and the

boundaries of the cellCELLSPACING Controls the spacing between adjacent cellsCOLSPAN Used to spilt the single cell to one or more columns

350

Page 351: internet prgramming-notes

ROWSPAN Used to spilt the single cell to one or more rows.

EXAMPLE<TABLE BORDER = 3 WIDTH = 100 HEIGHT = 200>

<TR> <TH> Roll Number </TH> <TH> Age </TH> <TR> <TR> <TD> 1 </TD> <TD 35 </TD> </TR> </TABLE>

14. ALIGN: ALIGN = TOP, MIDDLE,BOTTOM

15. BORDER: Specifies the size of the border to place around

the image.

16. WIDTH: Specifies the width of the image in pixels.

17. HEIGHT: Specifies the height of the image in pixels

18. HSPACE: Indicates the amount of space to the left and

right of the image

19. VSPACE: Indicates the amount of apace to the top and

bottom of the image.

71. WHAT DO YOU MEAN BY COLUMN SPANNING AND ROW SPANNING?

Row spanning is used to merge (combine) two or more rows.

Column spanning is used to merge (combine) two or more columns.

72. MENTION THE DIFFERENT TYPES OF LINKS

HTML allows linking to other HTML documents as well as images. There are 3 attributes that can be introduced in BODY tag.

7. LINK – Changes the default color of a Hyperlink to whatever color is specified with this tag.

8. ALINK – Changes the default color of a hyperlink that is activated to whatever color is specified with this tag.

9. VLINK – Changes the default color of a hyperlink that is already visited to whatever color is specified with this tag.

351

Page 352: internet prgramming-notes

NOTE: User can specify the color name of a hyperlink or an equivalent hexadecimal number.

EXTERNAL LINKS

SYNTAXA HREF = “location name”> Hyper Text Message </A>

73. EXPLAIN IMAGE MAPS WITH ITS SYNTAX

When a hyperlink is created on an image, clicking on any part of the image will lead to opening of the document specified in the <A HREF TAG>.

Linked regions of an image map are called hot regions and each hot region is associated with a filename.html.

Syntax

<MAP NAME = “map name”>

ATTRIBUTES OF IMAGE MAPS

7. COORDS: Each of the above shapes takes different coordinates as parameters.a. Rectangle – 4 coordinates (x1,y2,x3,y2)

8. POLYGON: 3 or more coordinates.

9. HREF – Takes the name of the .html file that s linked to the particular area on the image.

<MAP NAME = “fish.jpg”> <AREA SHAPE = “rect” COORDS = “52,65,122,89” HREF = “sct.html”>

</MAP>

75. EXPLAIN ABOUT HTML FORM TAG WITH ITS ATTRIBUTES.

HTML form provides several mechanisms to collect information from people viewing your site. The syntax of the form is

<FORM METHOD = “POST” ACTION = “/cgi-bin/formail”>

352

Page 353: internet prgramming-notes

The METHOD attribute indicates the way the web server will organize and send you the form output.

Use METHOD = “post” in a form that causes changes to server data, for example when updating a database.

The ACTION attribute in the FORM tag is the path to this script; in this case, it is a common script which emails form data to an address. Most Internet Service Providers will have a script like this on their site.

76.MENTION THE VARIOUS FORM ELEMENTS.

Various elements or controls can be created in FORM using <INPUT> tag. They are

1. Label 2. Text box 3. Text Area 4. Radio button

5. Check box 6. List box 7. Command button 8. Scroll bars

77. WHAT IS THE USE OF FRAMES IN HTML GIVE THE SYNTAX.

FRAMES

Frames are used to call many html files at the same time. This can be done using <FRAMESET> </FRAMESET> tags.

ATTRIBUTES OF FRAMES

ROWS – This attribute is used to divide the screen into multiple rows. It can be set equal to a list of values. Depending on the required size of each row. The values can

A number of pixels Expressed as a percentage of the screen resolution The symbol *, which indicates the remaining space.

COLS – This attribute is used to divide the screen into multiple columns.

EXAMPLE

<FRAMESET ROWS = “30%,*”> => Divides the screen into 2 rows, * occupying the remaining space

353

Page 354: internet prgramming-notes

<FRAMESET COLS = “50%,50%”> => Divides the first row into 2 equal columns

<FRAME SRC = “file1.html”> <FRAME SRC = “file2.html”>

<FRAMESET COLS = “50%,50%”> => Divides the second row into 2 equal columns

<FRAME SRC = file3.html”> <FRAME SRC = file4.html”> </FRAMESET> </FRAMESET>78. MENTION THE TYPES OF SCRIPTING LANGUAGES

JavaScript is a Scripting language (web site development environment) created by Netscape.

Hence JavaScript works best with the Netscape suite of Client and Server products.

JavaScript is the native scripting language of Netscape Navigator.

VBScript is the native Scripting language of HTML.

SERVER SIDE SCRIPTING

In Server side scripting the script program is executed at Server Side the required html program is sent to the client.

The job of the server is more in server side scripting

CLIENT SIDE SCRIPTING Here the script program is processed and executed in the client side itself.

So that it reduces the burden of the server.

79. LIST THE ADVANTAGES OF JAVA SCRIPT

5. JavaScript is an object-oriented language that allows creation of interactive Web pages

6. JavaScript allows user entries, which are loaded into an HTML form to be processed as required

354

Page 355: internet prgramming-notes

ADVANTAGES

21. It is an interpreted language, which requires no compilation steps.22. Embedded within HTML.23. Minimal Syntax – easy to learn24. Quick Development25. Designed for simple, small programs26. High performance27. Procedural Capabilities – support facilities such as condition checking, looping and

branching.28. Designed for programming user events – like VB Java Script is also based on Events.29. Easy Debugging and Testing30. Platform Independence/ Architecture Neutral

SYNTAX OF JAVASCRIPT PROGRAM

<HTML> <HEAD> <SCRIPT language = “JavaScript”>

… body of the script program </SCRIPT></HEAD>

<BODY> <SCRIPT language = “JavaScript”> body of the program. </SCRIPT> </BODY></HTML>

80. WHAT IS DENSE ARRAYS?

A dense array is an array that has been created with each of its elements being assigned a specific value.

Dense arrays are used exactly in the same manner as other arrays.

Dense arrays are declared and initialized at the same time.

Array Methods

355

Page 356: internet prgramming-notes

Join() – returns all elements of the array joined together as a single string.

Reverse() – reverses the order of the elements in the array.

81. LIST COMPARISION OPERATORS & STRING OPERATORS IN JAVA

= = equal (perform type conversion before testing for equality.

= = = strictly equal (do not perform type conversion before testing for equality

STRING OPERATIRS Currently Java Script supports only one string concatenation (+) operator.

EXAMPLE “ab” + “cd” produces “abcd”

82. LIST THE VARIOUS DIALOG BOXES IN JAVA SCRIPTDialog boxes are used to display small windows. This is also used to get input from user.SYNTAXalert(“message”);alert(“Click here to continue”)prompt(“Enter your name”, name)

7. Alert is only used to display some information8. Prompt is used to display information along with some input value9. Confirm dialog box, causes program execution to halt until user action takes place.

The user action can be either OK or CANCEL.

OK – returns trueCANCEL – returns false

90. MENTION THE VARIOUS JAVA SCRIPT OBJECT MODELS. Math Object String Object Date Object Boolean and Number Object Document Object Window Object

91. HOW SCRIPTING LANGUAGE IS DIFFERS FROM HTML.

HTML is used for simple web page design HTML with FORM is used for both form design and Reading input values

from user.

356

Page 357: internet prgramming-notes

Scripting Language is used for Validating the given input values weather it is correct or not, if the input value is incorrect, the user can pass an error message to the user.

Using form concept various controls like Text box, Radio Button, Command Button, Text Area control and List box can be created.

92. DEFINE FUNCTION IN JAVA SCRIPT. Function is a part of a program or in other words function is a module in java program which can be called or invoked any number of times from the main program.

Function can be called any number of times but it can accept any input values or parameters, however it can return only one output at a time.

END OF UNIT III

UNIT – IV & V: DYNAMIC HTML, SERVLETS

93. DEFINE CSS – CASCADING STYLE SHEET

DHTML is a new and emerging technology that has evolved to meet the increasing

demand for eye-catching and mind-catching web sites.

DHTML combines HTML with Cascading Style Sheets (CSS) and Scripting

Languages. HTML specifies a web page’s elements like table, frame, paragraph,

bulleted list, etc. CSS can be used to determine an element’s size, color, position and a

number of other features.

Scripting Languages (JavaScript and VBScript) can be used to manipulate the web

page’s elements so that styles assigned to them can change in response to a user’s input.

87. DEFINE CASDING STYLE SHEETS (CSS )

CSS are powerful mechanism for adding styles (e.g. Fonts, Colors, Spacing) to web

documents.

They enforce standards and uniformity throughout a web site and provide numerous

attributes to create dynamic effects.

357

Page 358: internet prgramming-notes

The advantage of a style sheet includes the ability to make global changes to all

documents from a single location. Style sheets are said to cascade when they combine

to specify the appearance of a page.

The style assignment process is accomplished with the <STYLE>…</STYLE> tags.

94. MENTION THE TYPES OF STYLE SHEETS

87.1 Embedded or Internal Style sheet87.2 External or Linked Style sheet87.3 Inline style sheet

95. DIFFERENCE TYPES OF STYLE SHEETS

Slno ‘Embedded Linked Inline Style Sheet

1 Style program is embedded with in the HTML program itself.

Style program alone is stored in a separate file with an extension of .css file.

Different from Embedded and Linked CSS

2 Explicit LINK statement is not needed.

Explicit LINK REL statement is needed to connect with .CSS file

Not required

3 Styles can be used within the program only, it can not be called some other files.

Styles used in .CSS file can be used in any HTML program

Styles created should be used immediately before creating another new style.

96. LIST THE PROPERTIES OF STYLE TAG

<STYLE> tag properties are divided in to 6 categories. They are

Font Attributes

Color and Background attributes

Text Attributes

Border Attributes

Margin Attributes and

358

Page 359: internet prgramming-notes

List Attributes.

90. HOW TO INTRODUCE STYLE IN HTML PROGRAM?

<HTML><HEAD><STYLE Type = “text/css”>

predefined tag name {attribute name1:attribute value1; attribute name2:attribute value2; ……attribute name-n:attribute value-n}

<STYLE>

</HEAD>

<BODY>

write the body of program

</BODY>

</HTML>

91. WHAT DO YOU MEANT BY OBJECT MODEL AND COLLECTION?

The object model allows web authors to control the presentation of their pages and gives them access to all the elements on their web page.

The whole web page – elements, forms, frames, tables, etc – is represented in an object hierarchy.

Using scripting, an author is able to retrieve and modify any properties or attributes of the web page dynamically.

92 .LIST THE TWO DATE OBJECTS

UTC – Coordinated Universal TimeGMT – Greenwich Mean Time

93. WHAT ARE COOKIES ?

359

Page 360: internet prgramming-notes

Cookies provide web developers with a tool for personalizing web pages.

A cookie is a piece of data that is stored on the user’s computer to maintain information about the client during and between browser sessions.

94. WHAT DO YOU MEAN BY OBJECT REFERENCING?

The simplest way to reference an element is by using the element’s id attribute.

The element is represented as an object, and its various XHTML attributes become properties that ca be manipulated by scripting.

95. DEFINE Data Binding.

With data binding, data need to longer reside exclusively on the server.

Data can be maintained on the client, in a manner that distinguishes it from the XHTML markup on the page.

Typically, data is sent to the client. All subsequent manipulations than take place on the data directly on the client, thus eliminating server activity and network delays.

Once it is available on the client, the data can be sorted and filtered in various ways.

In data binding technology, data made on the client do not propagate(spread, broadcast) back to the server.

Once it is available on the client, the data can be sorted and filtered in various ways.

To bind external data to XHTML elements, Internet Explorer employs software capable of connecting the browser to live data sources. These are known as Data Source Objects (DSOs).

The most popular DSO is – the Tabular Data Control (TDC).

96. WHAT DO YOU MEAN BY RECORDSET?A recordset is simply a set of data or rows to be accessed by the program. It contains the following recordset object methods.

9. MoveNext – used to move the recordset to the next row.10. MovePrevious – used to move the recordset to the previous row.11. MoveFirst – used to move the recordset to the first record immediately.12. MoveLast – used to move the recordset to the last record immediately.

360

Page 361: internet prgramming-notes

Note move previous and move next methods should be used before checking BOF(), EOF() methods respectively.

98. WHAT IS EVENT MODEL LIST SOME DHTML EVENTS.

When the program is executed based on a particular event occurrence, it is referred as Event modeling. The DHTML events are described below:

Event Description

onbeforecut Fires before a selection is cut to the clipboardonbeforecopy Fires before a selection is copy to the clipboardonbeforepaste Fires before a selection is paste to the clipboard

onbeforeupdate Fires before a data source is updatedonafterupdate Fires after a data source is updated

onrowenter,onrowexit,onrowsdelete,onrowsinserted

Related to rows, executed when you enter into row, exit, delete and insert respectively.

onhelp, onkeydown, onkeyup

Fires help, keydown and keyup respectively

ondbclick, ondrag, ondrop Fires when double click, drag or drop event is occurred.onchange Fires when a new change occured

98. WHAT DO YOU MEAN BY FILTERS AND TRANSITIONS (Changeover, conversion, shift) IN DHTML?

Filters and transitions are specified with the CSS filter property.

Applying filters to text and images causes changes that are persistent .

Transitions are temporary: applying a transition allows you to transfer from one page to another with a pleasant visual effect, such as a random dissolve.

Filters and transitions do not add content to your pages – rather, they present existing content in an engaging manner to capture the user’s attention.

Each of the visual effects achievable with filters and transitions if programmable, so these effects can be adjusted dynamically by programs that respond to user-initiated events, such as mouse clicks and keystrokes.

361

Page 362: internet prgramming-notes

99. EXPLAIN ABOUT FLIP FILTERS – (FLIPv AND FLIPh ) PROPERTIES.

The flipv and fliph filters mirror text or images vertically and horizontally .

<!-- EVENT MODEL FOR ONCLICK - FILTERS1.HTML<!------------------------------------------><?xml version = "1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml"><head> <title> THE FLIP FILTER - FILTERS1.HTML </title> <style type = "text/css"> body { background-color: cyan } table { font-size: 3em; font-family:arial, sans-serif; background-color:pink; border-style: ridge} td { border-style: groove; padding: lex } </style </head> <body> <table> <tr> <!-- Filters are applied in style declarations ----> <! ------------------------------------------------> <td style = "filter: fliph"> Text </td> <td> Text </tr>

<!-- More than one filter can be applied at once----> <! ------------------------------------------------> <tr> <td style = "filter: flipv fliph"> Text </td> <td style = "filter: flipv"> Text </td> </tr>

</table> </body></html>

OUTPUT

362

Page 363: internet prgramming-notes

fliph filter applied

filpv filter applied

Both

110. WHAT IS THE USE OF XML?

Extensible Markup Language, derived from SGML (Standard Generalized Markup Language.

XML is widely supported open technology (i.e. non-proprietary) for electronic data exchange and storage.

XML is actually a language used to create other markup languages to describe data in a structured manner.

XML documents contain only data, not formatting instructions, so applications that process XML documents must decide how to manipulate or display the document’s data.

111. WHAT DO YOU MEAN BY DTD IN XML?

DTD means Document Type Definition.

DTD file is similar to CSS file, because DTD also contains only styles.

DTD contains various styles which are to be applied in XML document.

Like .CSS file .DTD file also should be linked with XML program.

363

Page 364: internet prgramming-notes

Styles in XML program should be save with .xsl (Xml Style Sheet Language) extension.

112. WHAT IS THE USE OF XML NAMESPACE?

XML allows document authors to create custom elements.

This extensibility can result in naming collisions (i.e. different elements that have the same name) among elements in an XML document.

An XML namespace is a collection of element and attribute names. Each namespace has a unique name that provides a means for document authors to unambiguously refer to elements with the same name (i.e. prevent collisions).

113. WHAT ARE THE USES OF XML?

CML – Chemical Markup Language – for chemical equations

MML - Mathematical Markup Language – for Mathematical equations and derivations.

Used in bio medical line.

114. What is SOAP? (Simple Object Access Protocol)

SOAP is an XML based protocol that allows applications to easily over the internet using XML documents called AOAP message.

A SOAP message contains an envelope, which is a structure that describes a method call.

A SOAP message’s body contains either a request or a response.

A request message’s body contains a Remote Procedure Call (RPC), which is a request for another machine to perform task.

The RPC specifies the method to be invoked and any parameters the method takes.

The application sends the SOAP message via an HTTP POST. A SOAP response message is an HTTP response document that contains the results from the methods call (e.g. return values, error messages.)

364

Page 365: internet prgramming-notes

115. WHAT IS THE USE OF WEB SERVICES?

Web services encompass a set of related standards that can enable two computer applications to communicate and exchange data over the Internet.

The data is passed back and forth using standard protocols such as HTTP, the same protocol used to transfer ordinary web pages.

Web services operate using open, text-based standards that enable components written in different languages and on different platforms to communicate.

They are ready to use pieces of software on the Internet. XML, SOAP, Web Services Description Language (WSDL) and Universal Description, Discovery and Integration (UDDI) are the standards on which web services rely.

UDDI is another XML based format that enables developers and business to publish and locate Web services on a network.

116. MENTION

117. LIST AND THE FUNCTIONS OF THREE-TIER APPLICATIONS.

107.1 The client tier, or top tier, is the application’s user interface. Users interact directly with the application through the client tier, which is typically a Web browser, keyboard and mouse.

107.2 The Middle tier implements business logic and presentation logic to control interactions between application clients and application data.

107.3 Business logic in the middle tier enforces business rules and ensures that data is reliable before updating the database to presenting data to a user.

118. WHAT IS IIS?

IIS – Microsoft Internet Information Services is an enterprise-level web server that is included with several versions of Windows.

Installing IIS on a machine allows that computer to serve documents

119. WHAT IS MYSQL?

365

Page 366: internet prgramming-notes

MYSQL is a multi-user, multithreaded (i.e. allows multiple simultaneous connection).

RDBMS server that uses SQL to interact with and manipulate data.

Implementations of MYSQL are available for Windows, Mac OX X, Linux and UNIX.

The ability to access table from different databases y using a single query, increasing the efficiency of retrieving accurate and necessary information.

MYSQL provides the ability to handle large databases (e.g. ten of thousands of tables with millions of rows.

120. WHAT IS THE USE OF PERL DATABASE INTERFACE.

The Perl Database Interface (DBI) enables users to access relational databases from Perl programs.

Database vendors create drivers that can receive interactions through DBI and process them in a database specific manner.

DBI is the most widely used interface available for database connectivity in Perl.

366

Page 367: internet prgramming-notes

PART B – QUESTIONS

BOOK NAME: Java Network Programming(study all the points from notes also)

29. *** Why Java is essential in Network programming? (page 2 13 – 8 marks)

30. With a neat diagram explain the layers of IP network (only 4 layers) (page 22 – 28 – 8 marks).

31. Explain the various types of Client/Server Models (Study from notes – 8 marks)

32. Write short notes on the following (PG NO. 50 – 62 - 16 marks)URIURNURLHTMLSGMLXML

33. ****Write short notes on MIME & CGI 70 (pg no. 63 – 70 – 8 marks)

34. Write short notes on applets and Security (page no. 71 – 74 – 8 marks)

35. Write short notes on different types of Stream(Input/Output/Filter/buffered/Print Stream classes – 76 – 109 - ** Write one example program involving 5 to 6 stream classes)

36. **** Explain in detail about Thread & Multi thread concept with example program(117 onwards with an example program)

37. ***Explain the various types of Address format. (page no. 167 – Write detail about address A, B, C, D and E in detail)

367

Page 368: internet prgramming-notes

38. ***Explain in detail about retrieving data using URL connection (page 193)

Explain URL connection concept Explain all the methods in URL like getConnection, getContent etc Explain Lab URL program without fail.

39. ***Explain Client/Server Socket Programming in detail (page no 301 onwards – 8 marks)

Write the any socket program in Lab exercise without fail compulsory.

40. ***Write short notes Protocol Handlers and Content Handlers in detail with a small program (page no 529 – 581 – 16 marks)

41. *** With a neat diagram explain the concept of RMI (Study from Java complete reference book with diagram and write LAB exercise also without fail – 16 marks)

REFERENCE BOOK: INTERNET & WORLD WIDE WEBHOW TO PROGRAM – THIRD EDITION – DEITEL & DEITEL

42. Discuss the various HTML tags in detail (16 marks – refer notes)

43. ** Write short notes on the following (165 marks - refer notes) IMG tag TABLE tag FRAME tag

44. ** With a neat diagram write a SCRIPT PROGRAM with validation for the following (each program carries 16 marks)

Student Mark List Inventory System Employee Pay Slip generation Railway Ticket Reservation Online Quiz program

NOTE Answer should be in the following format only.

10. Draw form design

368

Page 369: internet prgramming-notes

11. Design must have one Primary key field – always check for duplication for the primary key field

12. emp- name, product- name, dept-name etc should not be blank

Write a function for all these validation 13. When you introduce any number field, always check it

is negative or not, if it so do not accept the input value

14. For calculations always use program concept, do not ask the user to enter total, gross etc.

15. Instead through program calculate

Gross.value = val(basic.value + hra.value+da.value)

16. Always use val or ParseInt function when you perform calculation with numbers.

17. for avoiding too much of validation better use the following in the design itself

Radio button Command button Check box List box

18. Must introduce SUBMIT & RESET button at the end of the design

45. *** Explain in detail about all the types of Cascading Style sheet with an example program(16 marks – page no. 140 -149)

draw the form design Mention the 3 types of CSS Write example program for each type Write the differences and advantages of each CSS

46. ***Write short notes on the following.(16 marks – page no. 174 - 221)

369

Page 370: internet prgramming-notes

Write short notes on Java Script/Advantages of Scripting Java Script control statements Java Script functions

47. ** Discuss briefly about HTML – Object Model and Collections (Page no 429 – 438)** Study from notes also

Object modeling Object Referencing Dynamic Styles Dynamic Positioning

48. *** Discuss briefly Dynamic HTML – Event Model (page mp 451 – 471 refer notes also)

Short notes on event model Printing all the tags using program Explain Event bubbling with an example program

49. **** Discuss briefly about Dynamic HTML – Filters and Transitions (page no. 476 – 495 refer notes also)

Explain filters and transitions with example Write program using flipv and fliph attribute with output

diagram. List all the possible events given in the notes.

50. *** Discuss briefly about Data Binding using any control for example

binding with table binding with an image sorting table data.

51. ** Discuss briefly the various servers (refer V th unit notes)

52. ****Discuss briefly about Handling of Multimedia database (very important question) (page 985 - 1023)

370

Page 371: internet prgramming-notes

53. *** Explain handing of ACTIVEX CONTROL.

54. ** Explain the concept of Servlets with an example program ( Lab exercise)

55. Explain about JSP with example program.

56. Explain about JDBC structure with example program.

END OF QUESTION BANK

371