Internet Prgramming-notes

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Internet Prgramming-notes as PDF for free.

More details

  • Words: 63,473
  • Pages: 371
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 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

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.



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.

3



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

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? •

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.

5



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.



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.

6





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

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 Application Layer

Logical path

Transport Layer (TCP, UDP) Internet layer (IP) Physical path

Application Layer Transport Layer (TCP, UDP)

The Host to Host Layer

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

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 1. The internet protocol is the most widely used network layer protocol in the world and the only network layer protocol java understands.

8

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

Discard

9

TCP/UDP

FTP SMTP HTTP POP3 NTP

21 25 80 110 119

RMI Registry

1099

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 is a less useful test protocol in which all data received by the server is ignored. For File Transfer Protocol For Simple Mail Transfer Protocol For Hyper Text Transfer Protocol For Post Office Protocol Usenet news transfer is more formally known as the Network News Transfer Protocol This is the registry service for Java Remote Objects.

9

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

A.B.C.D

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

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 Network 2. Cable Modem 3. 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 Internet Response Client

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

11

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 Internet 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. 5. At the end of data transfer, the Client disconnects from the Server.

MODEL 3 – WEB SERVER / APPLICATION SERVER Request

12

Internet 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.

MODEL 4 – WEB SERVER / APPLICATION SERVER/DATABASE SERVER Request

Web server

Internet

13

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. 5. At the end of data transfer, the Client disconnects from the Server.

MODEL 5: WEB SERVER / TRANSACTION SERVER/DATABASE SERVER

14

Request Internet 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. 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 Internet

15

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. 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 LEVELS 1. 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.

16

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. 2. 3. 4. 5.

Application Layer Transport Layer Internet Layer Network Layer Physical Layer

COMPARISON OF OSI AND TCP/IP PROTOCOL ARCHITECTURE Application Layer

Application Layer

Presentation Layer Session Layer Transport (host – to – host) Layer Transport Layer Network Layer

Internet Layer

17

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.

TCP PROTOCOL FORMAT Source Port

Destination Port Sequence Number Acknowledgment Number

DO

R

C W R

E C E

U R G

A C K

P S H

18

R S T

S F Y I N N

Destination Port

Checksum

Urgent Pointer Options + Padding

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

SL. NO

DIFFERENCE BETWEEN CONNECTION ORIENTED AND CONNECTION LESS PROTOCOLS Connection Oriented Connection less Protocol Protocol

1

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

2

Client has to wait until its receives Not applicable Response from the Server After receiving Response from the No need to establish a connection Server, Client establishes connection with the Server.

3

4

5

6

After establishing a connection with the Server Clients starts transmitting the packets to the Server. At the end of data transfer client disconnect the connection with the Server.

Establishing a connection is not necessary. In connection less service the packets are transmitted continuously with out getting permission or without making connection with the server.

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

19

THE NETWORKING CLASSES AND INTERFACES The classes contained in the java.net packages are shown below: Authenticator

ServerSocket

CacheRequest

Socket

CacheResponse

SocketAddress

ContentHandler

SocketPermission

DatagramPacket

URI

DatagramSocket

URL

MulticastSocket

URLEncoder

APPLICATION LAYER •

Application layer contains the logic needed to support the various user applications.



File manager, emails etc.



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.

20

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

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

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

21

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 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.

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 Urn:name:resource-name

22

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)

FORMAT OF URI URI URL

URN

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

23



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 Scheme:scheme-specific-part 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.

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

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

Where,

24



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.

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)

25

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.

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.

26

MIME SUB TYPES Type

Subtype

Description

Text

Calendar

Calendar control

Css

A CSS used for HTML and XML

Directory

Address book information such as name, phone, email address. Font and paragraph level formatting such as bold, email etc Simply raw ASCII text Html languages used by web browsers. This is an HTML like markup for encoding formatting into pure ASCII text. Sgml standard language

Enriched Plain Html Richtext Sgml

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.

1.4.2 MIME MESSAGE FORMAT Header Field

Data



MIME message consists of header field followed by data field.



Header field indicates 1. MIME version 2. The content type 3. Data transfer encoding scheme 4. Message identification 5. Message description

27



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. 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:

28

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.

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.

29



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

Web Browser

Web Server

CGI Program

File

Database



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



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



The CGI programs are saved with an extension of .cgi



The CGI server can recognize any extension type, for example 1. 2. 3. 4. 5. 6.

.exe .cgi .asp .php3 .shtml .pl and so on.

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

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

30



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 VARIABLES SL. NO 1

Variable

Meaning

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.

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.

31

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 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.

32

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, DDMon-YY HH:MM:SS TIMEZONE.

8

HTTP_USER_AGENT

Contains the name of the web browser that requested the document. An example 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.

33



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 1

Variable

Meaning

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 SL. NO 1

Variable

Meaning

ALLOWED

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

2

CONTENT_ENCODING

Specifies which encoding method Examples are x-zip, x-stuffit and x-tar.

34

is

used.

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_ENCO Specifies the encoding of the data between the web DING 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

10

EXPIRES

11

LAST_MODIFIED

12

LINK

13

MESSAGE_ID

14

PUBLIC

Can contain a version number for the requested object, allowing for version control of editable documents. 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. Contains the date when the requested object was last modified. This header is in an ARPANET date format. Holds information about the document being returned. You can use it to specify information such as the inclusion of another URL within the returned document or the creator of the returned object. Contains a unique identifier for the HTTP message. 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.

35

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

15

TITLE

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 <TITLE> CGI EXAMPLE
Enter your Name Enter your Mail address

36



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:



THIS IS CENTERED H1 HEADING





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.

1.6.3 XML DATA FILE FOR PRODUCT DETAILS

37

-Assumed as record name KEY BOARD KEY BOARD 1500
EXAMPLE 2 – XML DATA FILE FOR EMPLOYEE DETAILS <EMPLOYEE”> - Assumed as record name 1001 JACK 10000 3000 2000 500 1000 15500 14500 <EMPLOYEE”> - Assumed as record name 1002 JILL 20000 3000 2000 500 1000 25500 24500 <EMPLOYEE”> - Assumed as record name 1005 BLACK 5000 1000 500 500 1000 7000 6000

38

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) b) c) d)

Making the connection Making a request Receiving the response 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. 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;

39

• • •

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:

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. 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?

40

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 PROGRAMMING 2.1 Java Basics 2.2 I/O Streaming 2.3 Files 2.4 Looking up Internet Address 2.5 Socket Programming 2.6 Client/Server Programs 2.7 E-mail client 2.8 Web Page Retrieval 2.9 Protocol Handlers 2.10 Content Handlers

41

2.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 runtime package exists for a given system.

CHARACTERISTICS OF JAVA PROGRAM 1. Simple 2. Secure 3. Portable 4. Object Oriented 5. Robust 6. Multithreaded 7. Architecture-neutral 8. Interpreted 9. High Performance 10. Distributed 11. Dynamic

SIMPLE: •

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

42



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 deallocation. 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”.

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

43

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. 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:

44

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.

THE FLOW OF BUFFERED STREAM & FLUSH COMMAND Flush Method Message is sent from server to client

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

45

The whole message is sent to the client

WEB SERVER

Buffered Output Stream

WEB CLIENT

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. 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.

46

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.



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)

47

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 APPLICATION

InputStreamReader

48

GZIPInputStream

CipherInputStream

BufferedInputStream

TelnetInputStream

Network

BUFFERED STREAMS •

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.

49

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) 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)

50

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 •

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

51

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 •

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

52

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.



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

53

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 •

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

54



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. PushbackReader 2. 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: 1. For creating a Thread Thread t = new Thread(); t.start() 2. To run a Thread Public void run()

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

POLLING

55

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.

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

56

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 Preemptive -> It is Possible to alter the sequence in the middle NonPreemptive -> It is not possible to alter the sequence.

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:

57

1. It can block on I/O 2. It can block on a synchronized object 3. It can yield 4. It can go to sleep 5. It can join another thread 6. It can wait on an object 7. It can finish 8. It can be preempted by a higher-priority thread. 9. It can be suspended 10. 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()

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.

58



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 expires 2. The thread is interrupted 3. 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.

2.3 FILES •

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

59



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.

2.4 LOOKING UP INTERNET ADDRESSES DNS, IP ADDRESSES

60

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 2. public static InetAddress[] InetAddress.getAllByname(String hostname) throws UnknownHostException 3. public static InetAddress InetAddress.getLocalHost() throws UnknownHostException

61

Byte 0 A B C D E

0 1 1 1 1

N/W 0 1 0 1 1 1 1

Byte 1

Byte 2 HOST

Byte 3

N/W

N/W HOST 0 Multi cast group 1 0 Reserved for feature use 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.

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.

Remotehost rfc931 authuser [date] “request” status bytes 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. 5. “request” – request from the client 6. status – This is a numeric HTTP status code returned to the client.

62

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) }

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

63

1. 2. 3. 4. 5. 6.

getFile() getHost() getPort() getProtocol() getRef() 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 3. public final Object getContent() throws IOException 4. public final Object getContent[class[] classes) throws IOException

64

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.



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

65

1. 2. 3. 4.

The capital letters A-Z The lowercase letters a-z The digits 0-9 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())

2.5 SOCKET PROGRAMMING

66

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. 2. 3. 4. 5. 6. 7.

Connect to a remote machine Send data Receive data Close a connection Bind a port Listen for incoming data 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. 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.

67

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. 4. public Socket(InetAddress host, int port, InetAddress interface, int localPort) throws IOException

68

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.



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

69



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. 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.

70

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 Domain Gateway Group Host Network Organization ASN Full or = Person SUBdisplay %

Meaning Find only domain records Find only gateway records Find only group records Find only host records Find only network records Find only organization records Find only Autonomous System Number records Show complete record for each match Find only person records 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. 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.

71

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. 2. A full featured HTTP server must respond to requests for files, convert URLs into file-names on the local system.

72

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.



Public interface HandshakecompledListener extends java.util.EventListner

73

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 SOCKETS 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.

THE STRUCTURE OF UDP DATAGRAM 0 Version

4

8 Header Length Identification

12 16 20 24 28 Type of service Datagram length Flags

Fragment offset Header checksum

Time-to-live(TTL)

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

74

31

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. 2. public void setData(byte[] data, int offset, int length) – alternative method for sending large amount of data.

75

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

COVERAGE OF PACKET WITH A TTL OF 5 0 CAMPUS WORLD

1

3

4

2

5

3

4

3

4

2

1

2

3

0

1

Packet dies 2

1

2

COMMON PERMANENT MULTICAST ADDRESS Domain name BASE-ADDRESS.MCAST.NET

IP address 224.0.0.0

Purpose 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 subnet.

MOBILE-AGENT.MCAST.NET

224.0.0.11

Mobile agents on the local subnet.

77

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 The local host The local subnet The local campus – that is, the same side of the nearest Internet router – but on possible different LANs High band width sites The United States North America High bandwidth sites worldwide All sites worldwide

TTL VALUE TO USE 0 1 16 32 48 64 128 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



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



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. 2. 3. 4.

Join a multicast group Send date to the members of the group Receive data from the group 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.



80

1. Construct a URL object 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.*;

81

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); } input.close(); } else { System.out.println("No content Available "); } }

82

}

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

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());

84

outbound=new DataOutputStream(client.getOutputStream()); //Format the output(response header and tiny HTML Document StringBuffer buffer=new StringBuffer("

Welcome to Sample WebServer "); 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) {

85

System.out.println("UnknownHostException:"+uhe); } 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("")!=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 {

86

public static void main(String args[])throws IOException { 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
87

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?

88

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 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. 2. 3. 4. 5. 6. 7.

Send messages or memos or greetings for any special occasions. Receive or read messages Reply to messages Forward messages Send the same message to multiple persons at the same time Attach a text file or images 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 .com .net .org .gov .mil .edu .web .tv .info

Example Yahoo.com Microsoft.net Microsof.org Senate.gov Army.mil Annauniv.edu

Description Commercial organization as well as individuals ISP & Network related companies Non commercial organization Government agencies Military Educational institution Web based companies Television channel Information site

89

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

yahoo.co.au yahoo.co.us yahoo.co.uk yahoo.co.in yahoo.co.ca

Australia US United Kingdom India 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



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.

91

PROTOOL HANDLERS 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

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

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

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

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

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

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
98

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

} 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 server 4.2 Download the Homepage of the server 4.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 ========= Welcome to Sathyabama University <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

100

<script language="JavaScript" type="text/JavaScript"> <script language="JavaScript" type="text/JavaScript">

101

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(); for(int i=0;i
102

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); if(c3.getSelectedItem().equals("green"))

103

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: // OUTPUT WINDOW:

104

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.



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)

105

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 1

Datagram Method

Description

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 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

Sets the address to which a packet will be sent. The address is specified by ipAdress.

7

Void setAddress(InetAddress ipaddress) Void setData(byte[] data)

8

Void setLength(int size)

Sets the length of the packet to size

9

Void setPort(int port)

Sets the port to port

Sets the data tp data. The offset to zero, and the length to number of bytes in data.

STEPS FOR SIMPLE CLIENT/SERVER APPLICATION USING RMI Step One: Enter and compile the source code Step Two: Generate a Stub Step Three: Install Files on the client and server machines Step Four: Start the RMI Registry on the Server Machine

106

Step Five: Start the Server Step Six: Start the Client

RMI 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.*; 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"); } }

107

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; } 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 programs C:\jdk1.3\bin>javac Number.java C:\jdk1.3\bin>javac Numberserver.java C:\jdk1.3\bin>javac Numberclient.java Step 5: Create the stub and skeleton classes and register the server. C:\jdk1.3\bin>rmic Numberserver C:\jdk1.3\bin>rmiregistry Step 6: Open a new command window1 and run the Server Program

108

C:\jdk1.3\bin>java Numberserver System is ready

Step 7: Open a Command window2 new DOS Prompt, Run the Client C:\jdk1.3\bin>java Numberclient Enter x : 3 Enter y : 3 3.0 power 3.0 = 27.0

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; }

109

}

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); } 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) {

110

System.out.println("expression:"+e); }

}

}

EXECUTION STEPS 1. 2. 3. 4.

javac AddServerIntf.java javac AddServerImpl.java javac AddServer.java javac AddClient.java

5. 6. 7. 8.

start rmiregistry rmic AddServerImpl java AddServer java AddClient ip-address input1 input2

END OF UNIT II

111

UNIT III – SCRIPTING LANGUAGES 3.1 HTML Introduction 3.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 3.11 Simple Web Applications

3.1 HTML – INTRODUCTION - BASIC CONCEPTS 3.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 1 2 3

Domain Description Name .edu Servers that provide Educational services .gov Provides information about the government of a country .mil Servers that provide military information.

Example Annauniv.edu Senate.gov Army.mil

112

4

.org

5

.com

6 7

.web .net

8

.tv

Provide information about the organizations in the world. Servers providing commercial services on the Internet. Web based company ISP & Network related Companies For Television Channel

Microsoft.org. Google.com http://www.emailaddresses.com/email_web.htm Microsoft.net http://www.brendaborri.com/tv.html

Normally two letters are used to segregate between the countries. Fox example SL NO

Letters

Example

Country

1 2 3 4 5

.au .us .ca .in .uk

yahoo.co.au yahoo.co.us yahoo.co.ca yahoo.co.in yahoo.co.uk

Australia US Canada India United Kingdom

3.1.3 FORMAT OF HTML PROGRAM <TITLE> This is the Title ………….. HTML body program ……………. Note: All the tags in HTML program is optional, however the file should be saved with .html extension.

113

HTML tags in the document Head Tag

Type

Purpose



Stand-alone Container Stand-alone

<META> <STYLE> <TITLE> <SCRIPT>

Stand-alone Container Container Container

Defines document baseline information Denotes the start of the document head Establishes linking relationships with another documents or programs Supplies document meta-information Supplies style sheet information Gives the document a descriptive title Gives facility for JAVA SCRIPT or VBSCRIPT program

HTML tags in the document Body Tag

Type

Purpose

<APPLET>
Tag


Container Container Container Stand-alone Container Container Container Stand-alone Type Container Container Container

Establishes an anchor or link Denotes an address tag Embeds a Java applet in a document Defines clickable regions in a client-side image map Produces boldface text Produces text in a larger font size Denotes the start of the document body Inserts a blank line Purpose Centers contained items on the body Denotes a term definition Denotes a term to be defined

3.1.4 HTML MORE EXAMPLES INTRODUCING TILES AND FOOTERS IN HTML PROGRAM <TITLE> This is the Title …. Type the body of the program here

114

This is Footer


EXAMPLE

Example for Title and Footer Welcome to HTML page
This is the footer
OUTPUT

3.1.5 TEXT FORMATTING TAGS 1.

- is used for introducing various paragraphs. 2.
- Gives blank line. 3. HEADING TAGS -

..
is used to introduce various headings.

is the biggest and h6 is the smallest heading tag. 4.
TAG – is used to draw horizontal line

115

EXAMPLE FOR TEXT FORMATTING TAGS

EXAMPLE FOR TEXT FORMATTING TAGS

Bold Format
Italic Format
Underline Format


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.

116

ATTRIBUTES OF
TAG. Example for HR Tag


OUTPUT

FONT TAG Font tag is used to set different fonts and colors to a text in the web page. SYNTAX ……………….. Type the text or content here ……………….. EXAMPLE Text is Displayed in Red Color


117

Text is Displayed in blue Color
Text is Displayed in Green Color


OUTPUT

3.1.6 LISTS

TYPES OF LISTS 1. Unordered lists 2. Ordered lists UNORDERED LISTS Unordered lists starts with
    and ends with


ATTRIBUTES OF UNORDERED LISTS TYPE = DISC or TYPE = SQUARE Here DISC provides a shaded circle format and SQUARE provides square shapes respectively.

118

SYNTAX
  • List Item
  • List Item
  • List Item
EXAMPLE

  • RED
  • GREEN
  • BLUE


      OUTPUT

      EXAMPLE

      • RED
      • GREEN

        119

      • BLUE
          OUTPUT

          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
          1. Floppies
          2. Hard Disks
          3. Monitors


        120

        OUTPUT

        EXAMPLE
        1. Floppies
        2. Hard Disks
        3. Monitors
        OUTPUT

        EXAMPLE
        1. Floppies
        2. Hard Disks
        3. Monitors


      121

      OUTPUT

      EXAMPLE
      1. Floppies
      2. Hard Disks
      3. Monitors


    OUTPUT

    EXAMPLE
    1. Floppies
    2. Hard Disks
    3. Monitors


122

OUTPUT

EXAMPLE
  1. Floppies
  2. Hard Disks
  3. Monitors OUTPUT

    USE OF DL, DT AND DD TAGS
    Keyboard
    An input device
    It is very useful
    Used to give Input Values
    printer
    An output device
    Output can be produced using printer


    123





    OUTPUT

    Explanation: 1. Here,
    specifies definition list. The
    is used for creating main items and sub items as shown above. 2.
    specifies definition term. It is used to specify the main heading. 3.
    specifies definition description. It specifies sub heading or sub title. 4.
    ,
    tags should be given within
    tags.

    3.1.7ADDING GRAPHICS TO HTML PROGRAM tag is used to insert or call a picture inside the Web page:

    SYNTAX

    Where, SRC specifies path of the picture. Height and width specifies height, width of the picture during display.

    124



    The message given in alt attribute will be printed when the particular picture is not available.

    EXAMPLE Working with Images

    Controlling Image Border

    Image WITHOUT a BORDER



    Image With BORDER = 3

    OUTPUT

    125

    Note HTML accepts two picture format namely .gif and .jpg. Image can be called in web page using 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.

    126

    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. NOTE: User can specify the color name of a hyperlink or an equivalent hexadecimal number.

    EXAMPLE FOR VARIOUS LINKS LINKS.HTML EXAMPLE FOR DIFFERENT LINKS


  4. EXAMPLE FOR LINK


  5. EXAMPLE FOR ALINK


  6. EXAMPLE FOR VLINK

    LINK.HTML Example for LINK attribute

    Example for LINK attribute



    127

    ALINK.HTML Example for ALINK attribute

    Example for ALINK attribute



    VLINK.HTML Example for VLINK attribute

    Example for VLINK attribute



    EXTERNAL LINKS

    SYNTAX Hyperlink Message

    EXAMPLE Click Here to Continue

    3.1.9 IMAGE MAPS USING IMAGES AS HYPERLINKS

    128

    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 . 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”>

    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”>

    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.

    129



    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.

    STRUCTURE OF FORM TAG IN HTML PROGRAM <TITLE>THIS IS MY TITLE Create the necessary form elements (text box, radio, label etc.)


    3.2.1 FORM ELEMENTS EXAMPLES CREATION OF LABEL AND TEXT BOX form1-example FORM1.HTML

    Student Details

    Student Name:


    130

    INTRODUCING PASSWORD form2-using password FORM2.HTML

    Student Details

    Student Password:



    OUTPUT

    131

    INTRODUCING CHECKBOX form2-Creating Checkbox FORM3.HTML

    Loan Status



    CREATION OF RESET, SUBMIT, RADIO BUTTONS form2-Creating Reset and Submit Buttons

    Sex Male

    Sex Female



    132

    CREATION OF LIST BOX Using List box Object
    <select dept = "deptnames" size = 2>


    OUTPUT

    133

    3.3 FRAMES Frames are used to call many html files at the same time. This can be done using 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

    => Divides the screen into 2 rows, * indicates the remaining space => Divides the first row into 2 equal columns => Divides the second row into 2 equal columns

    134

    EXAMPLE FRAME.HTML

    FILE1.HTML html>

    Output of File1



    FILE2.HTML

    Output of File2



    FILE3.HTML html>

    Output of File3



    135

    FILE4.HTML

    Output of File4



    OUTPUT

    Output of File1

    Output of File2

    Output of File3 Output of File4

    3.4 TABLES A table is a two dimensional matrix, consisting of rows and columns. All table related tags are included between
    tags. SYNTAX Heading
    Row elements Table data values


    136

    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 cell CELLSPACING Controls the spacing between adjacent cells COLSPAN Used to merge two or more columns ROWSPAN Used to merge two or more rows.

    EXAMPLE Table Attributes

    Specifing the BORDER and WIDTH of the Table!





    137

    Name Branch Total Marks Grade
    Shilpa CSE 950 Distinction
    Beena IT 800 First Class
    Hanifa ECE 645 Second Class
    Monisha EEE 245 Fail

    Personal Information



    138

    OUTPUT

    3.4.2 SPECIFYING CELL SPACING AND CELL PADDING TABLE ATTRIBUTES Working with Table Specifing CELL SPACING



    139

    Name Age
    Shilpa 21
    vaishali 22

    With Cellpadding of 10
    Name Age
    Shilpa 21
    vaishali 22


    140

    OUTPUT

    3.4.3 ROWSPAN AND COLSPAN ATTRIBUTES Working with Tables

    Specifing ROWSPAN and COLSAPN Attributes!





    NAME MARKS
    PowerBuilder Visual Basic Developer2000

    141

    Shilpa 21 45 30
    vaishali 26 30 40

    Mark Sheet
    OUTPUT

    142

    3.4.4 SPECIFYING COLORS IN TABLE CELLS Working with Tables

    Specifing Colour in Table Cells





    Name Age
    Shilpa 21
    vaishali 22


    143

    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 Web Page Design Example


    1.Set the Background With Grey Color

    2.Different Fonts With Different Sizes

    3.Text Formatting Tags



    144

    yellow.html Displaying web page with Grey color

    This Web Page is Displayed in Yellow Color



    Back to Main Menu



    DIFFERENT FONTS WITH COLORS DIFFONT.HTML Create Web Page for using Different fonts with different sizes - EX No. 1>

    Text is in Arial, size = 6, color = "black"

    Text is in Times New Roman, size = 5, color = "black"

    145



    Text is in Lucida Handwriting, size =4, color = "black"

    Text is in Century Gothic, size =5, color = "black"

    Back to Main Menu



    FORMAT.HTML Various text formatting tags <title>



    Example for Bold Format

    Example for Italic Format

    Example for Underline Format

    Example for Bold Format


    146



    OUTPUT

    147

    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

    148

    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 <SCRIPT language = “JavaScript”> … body of the script program <SCRIPT language = “JavaScript”> body of the program.

    149



    EXAMPLE <SCRIPT language = “JavaScript”> var name = prompt(“Enter your name”,”name”); <SCRIPT language = “JavaScript”> document.write(“

    Hai” + “ OUTPUT Assume the input is anbu then the output will be Hai anbu

    3.7 JAVA SCRIPT CONTROL STRUCTURES SCRIPT PROGRAM USING FOR.. LOOP SYNTAX for(int i=initial-value;i
    150

    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. <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; }

    WELCOME TO JAVA SCRIPT PROGRAM

    <SCRIPT language = "JavaScript"> document. write ("

    " + "SUM FROM " + num1 +" to " + num2 + " = " + tot1);

    151

    OUTPUT

    SCRIPT PROGRAM USING WHILE LOOP SYNTAX i = 0; while(condition) { body program }

    152

    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. <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);

    WELCOME TO JAVA SCRIPT PROGRAM - WHILE LOOP

    <SCRIPT language = "JavaScript"> document.write("

    " + "SUM FROM " + num1 +" to " + num2 + " = " + tot1);

    153

    OUTPUT

    3.8 JAVA SCRIPT FUNCTIONS SCRIPT PROGRAM USING FUNCTION SYNTAX function function-name(input parameter1, …input parameter-n) { body of the function program } 154

    SYNTAX FOR CALLING THE FUNCTION variable name = function-name(input parameter1, …input parameter-n)

    EXAMPLE Java script program for adding values from first number to second number using function loop.

    <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("

    " + "SUM FROM " + num1 +" to " + num2 + " = " + tot1); }

    155

    JAVA SCRIPT USING FUNCTION

    <SCRIPT language = "JavaScript"> var sum2 = sum1();

    OUTPUT

    156

    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 size 0.

    =>The second example creates an array of

    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.

    EXAMPLE 3.9.1 JAVA SCRIPT PROGRAM FOR ARRAYS

    157

    <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

    158

    159

    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. 3. 4. 5. 6.

    = += increments and assigns the value -= *= /= %= Takes the modulus of the variable on the left the %= operator using the value of the expression on its right

    160

    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 }

    161

    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 true CANCEL – returns false. Simple example <TITLE> This is a simple program <SCRIPT LANGUAGE = “JavaScript”> document.writeln(<“H1”> Welcome to Javascript programming “

    ”); /BODY>

    ARITHMETIC OPERATORS +

    -

    *

    /

    162

    % (modulus)

    3.9.5 JAVASCRIPT KEYWORDS break case else false in this while with

    new true

    continue delete do for function if null return typeof var

    switch void

    KEYWORDS THAT ARE RESERVED BUT NOT USED BY JAVASCRIPT catch enum super

    class export try

    const extends

    debugger finally

    default import

    3.9.6 INCREMENT AND DECREMENT OPERATORS SL NO

    Assignment operator

    Initial variable value

    Sample expression

    Explanation

    1 2 3 4 5 6

    += -= *= /= %= ++

    c=3 d=5 e=4 f=6 g = 12 Pre increment

    c+=7 d- = 4 e*=5 f /= = 3 g %= 9 ++a

    7

    ++

    Post increment

    a++

    8

    --

    Pre decrement

    --b

    9

    --

    Post decrement

    b--

    c=c+7 10 to c d=d–4 1 to d e=e*5 20 to e f=f/3 2 to f g = g %9 3 to g Increment a y 1, then use the new value in the expression Use the current value of a in the expression in which a resides, then increment a by 1 decrement a y 1, then use the new value in the expression Use the current value of a in the expression in which a resides, then decrement a by 1

    163

    Assigns

    3.9.7 MORE JAVA SCRIPT PROGRAMS PROGRAM 1 – Java Script program to read and printing the Text

    164

    JAVA SCRIPT PROGRAM FOR ADDING TWO NUMBERS <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;

    WELCOME TO JAVA SCRIPT PROGRAM

    <SCRIPT language = "JavaScript"> document.write("

    SUM " + tot1 +"

    ");

    165

    OUTPUT

    JAVA SCRIPT PROGRAM USING FOR LOOP TO PRINT SUM FROM STARTING NUMBER TO ENDING NUMBER <SCRIPT language = JavaScript>

    166

    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; }

    WELCOME TO JAVA SCRIPT PROGRAM

    <SCRIPT language = "JavaScript"> document.write("

    " + "SUM FROM " + num1 +" to " + num2 + " = " + tot1);

    167

    OUTPUT

    JAVA SCRIPT PROGRAM USING WHILE FOR LOOP TO PRINT SUM FROM STARTING NUMBER TO ENDING NUMBER

    168

    <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);

    WELCOME TO JAVA SCRIPT PROGRAM

    <SCRIPT language = "JavaScript"> document.write("

    " + "SUM FROM " + num1 +" to " + num2 + " = " + tot1);

    OUTPUT

    169

    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); for(i=0;i
    170

    elements[i]=prompt("Enter the array elements",""); elements[i]=parseInt(elements[i]); } sum=0; for(i=0;i

    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

    Document

    Anchor

    Button

    Navigator

    History

    Link

    Location

    Images

    Form

    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 Properties Closed

    Meaning Returns true if the window is closed else returns Boolean value false.

    171

    Length Name Opener Parent

    Returns the number of frames in the current window Returns the name of a window Returns the name of the window from which it was created. The return value is String. Refers a window that contains a frameset

    METHODS OF WINDOW OBJECT Methods onBlur() onFocus() onError() onLoad() onUnload()

    Meaning Triggers when focus is removed from the window Triggers when focus is applied to the window Triggers when error occurs in the window Triggers when browser finishes loading a document into the window Triggers when user exists from the document within the window PROPERTIES OF WINDOW OBJECT

    The properties of window objects are 1. href 5. port

    2. protocol 6. path

    3. host 7. hash

    4. hostname 8. search.

    Methods Length() Back() Forward()

    METHODS OF HISTORY OBJECT Meaning Returns the number of entries in the history entity Helps the web browser to load the previous entry in history object. Helps the web browser to load the next entry in history object.

    Properties Current Length Previous Next

    PROPERTIES OF HISTORY OBJECT Meaning Contains the URL of the current history entity Contains the number of entities in history list Contains the URL of the previous history stack entity Contains the URL of the next history stack entity

    3.11 SIMPLE WEB APPLICATIONS SIMPLE WEB APPLICATION FOR STUDENT MARK LIST SIMPLE WEB APPLICATION FOR PAYSLIP GENERATION

    172

    Refer Class Note book and assignmet

    END OF UNIT III

    UNIT – IV: DYNAMIC HTML 4.1 Dynamic HTML – Introduction 4.2 Cascading Style Sheets (CSS)

    173

    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.



    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>… tags.

    174

    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? <STYLE Type = “text/css”> Predefined tag name {attribute name1:attribute value1; attribute name2:attribute value2; ……attribute name-n:attribute value-n} <STYLE> write the body of program

    EXAMPLE

    175

    <STYLE Type = “text/css”> h1{text-align:center} <STYLE>

    Example for CSS program

    Here the text “Example for CSS program” will be printed in center with bold effect. Note 1. Here the previous properties of

    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

    1. Font Attributes 2. Color and Background attributes 3. Text attributes 4. Border attributes 5. Margin attributes 6. List Attributes (Contains only one attribute)

    FONT ATTRIBUTES Attribute Name Font-family

    Values A comma-delimited sequence of font family names (Serif, sanserif, cursive)

    176

    Font-style Font-size

    Normal, italic or oblique. 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),

    Font-weight

    percentage (of the parent element’s size. Normal, bold, lighter, or one of the nine numerical values (100,200 to 900)

    COLOR AND BACKGROUND ATTRIBUTES Attributes Color Background-

    Values Sets an element’s text-color- a color name or a color code Specifies the color in an element’s background. A color name or a color

    color code. Background- Sets the background image. A URL or none. image Backgroundrepeat

    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 text-decoration

    Values Adds decoration to an element’s text- none, underline, overline, line-

    vertical-align

    through, blink Determines an element’s vertical position. Baseline, sub, super, top, text-

    text-transform

    top, middle, bottom, text-bottom, also percentage of the element’s length. Applies a transformation to the text. Capitalize (puts the text into initial

    text-align text-indent

    caps), uppercase, lowercase or none. Aligns text with an element. Left, right, center, or justify can be given. Indents the first line of text. A percentage of the element’s width or a length.

    BORDER ATTRIBUTES

    Attributes

    Values

    177

    Border-style

    Solid, double, groove, ridge, inset, outset

    Border-color Border-width Border-top-

    A color name or color code Thin, medium thick or length Thin, medium thick or length

    width Border-bottom-

    Thin, medium thick or length

    width Border-left-width Thin, medium thick or length Border-rightThin, medium thick or length width Border-top Border-bottom Border-left Border-right Border

    Specifies width, color and style Specifies width, color and style Specifies width, color and style Specifies width, color and style Sets all the properties at once

    MARGIN RELATED ATTRIBUTES Attributes Margin-top Margin-bottom Margin-left Margin-right Margin

    Values Percent, length or auto Percent, length or auto Percent, length or auto Percent, length or auto Percent, length or auto

    LIST ATTRIBUTES Attributes List-style-type

    Values 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.

    178

    Unit name Em

    Abbreviation Em

    Explanation The height of a font

    Relative Yes

    Ex Pica Point Pixel Millimeter Centimeter Inch

    Ex Pc Pt Px Mm Cm In

    Height letter x in a font 1 pica is 12 points 1/72 of an inch One dot on a screen Printing unit Printing unit Printing unit

    Yes No No Yes No No No

    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 tag.

    Syntax NOTE: Like <STYLE> tag also should be given with in … 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.

    179

    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,

    This is example for Inline Style Sheet



    EXAMPLE FOR STYLE SHEETS MAIN PROGRAM Create Web Page for Different Types of Style Sheets>


    Main Menu



    1. Embeded Style Sheet(Cascading)

    2. Linked Style Sheet

    3. Inline Style Sheet




    180



    Embedded Style Sheet> <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} h4 {text-align:center} ul {list-style-type:disc; font-size:1em; color:brown; font-weight:bold}

    Panimalar Engineering College

    Nasarethpet, Poonamallee

    Chennai - 602 103


    No. of Courses Offered

    • IT
    • CSE
    • ECE

    Back to Main Menu

style4.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} h4 {text-align:center} ul {list-style-type:disc; font-size:1em; color:brown; font-weight:bold} 181

------------------Main program---------------------------------------- Linked Style Sheet>

Panimalar Engineering College

Nasarethpet, Poonamallee

Chennai - 602 103


No. of Courses Offered

  • IT
  • CSE
  • ECE

Back to Main Menu



182

Inline Style Sheet>

Panimalar Engineering College

Nasarethpet, Poonamallee

Chennai - 602 103


No. of courses offered

  • IT
  • CSE
  • ECE
  • EEE
Back to Main Menu

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.

183

OUTPUT MAIN PROGRAM

184

EMBEDDED OR CASCADING STYLE SHEET

185

EXTERNAL OR LINKED STYLE STHEET

186

INLINE STYLE SHEET

4.3 OBJECT MODEL AND COLLECTIONS

187



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

1. MATH OBJECT Method Abs( x ) Ceil( x ) Cos( x ) Exp( x ) floor( x ) log (x) max( x, y ) Min( x, y ) Pow( x, y ) round ( x ) sin ( x ) Sqrt ( x ) tan ( x)

Description Absolute value of x Rounds x to the smallest integer not less than x Trigonometric cosine of x (x in radians) Exponential method Rounds x to the largest integer not greater than x Natural logarithm of x (base e) Largest value of x and y Smaller value of x and y X raised to power y Rounds x to the closest integer Trigonometric sine of x (x in radians) Square root of x Trigonometric tangent of (x in radians)

Example abs ( 7.2 ) is 7.2, abs(-5.6) is 5.6 ceil( 9.2 ) is 10.0 cos ( 0.0 ) is 1.0 exp( 1.0 ) is 2.71828 floor( 9.2 ) is 9.0 log ( 2.7182 ) is 1.0 Max(10,40) Min(10,40) Pow(2,3) Round(20.456) Sin(2) Sqrt(25) Tan(1)

2. STRING OBJECT String can be assigned to a variable in a declaration. The declaration is

188

var color = “blue”

or var name = “peter”

Method

Description

charAt( index ) charCodeAt( index)

Returns a string containing the character at the specified 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) Concatenates its argument to the end of the string that invokes the method. 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. Splits the source string into an array of strings or tokens. Returns a string containing the characters from index start up to but not including index end in the source string. Converts uppercase into lowercase Converts lowercase into uppercase. Gives blinking, strike through, subscript and superscript respectively Trigonometric tangent of (x in radians)

concat ( string ) slice( start, end ) split ( string ) substr( start, end ) toLowerCase(), toUpperCase() Blink, strike, sub, sup tan ( x)

3. DATE OBJECT UTC – Coordinated Universal Time GMT – Greenwich Mean Time Method

Description

getdate() getUTCDate() getDay() getUTCDay() getFullYear() getUTCFullYear() getHours() getUTCHours() roUTCString() valueOf()

Returns a number from 1 to 31 representing the day of the month in local time or UTC. Returns a number from 0 (Sunday) to 6 (Saturday) representing the day of the week in local time or UTC Returns the year as a four digit number in ocal time of UTC. Returns a number from 0 to 23 representing hours since midnight in local time or UTC. Returns a string representation of the date and time in the form 19 sep 2001 The time in number of milliseconds since midnight, January 1, 1970

BOOLEAN AND NUMBER OBJECTS

189

Method toString( radix )

valueof() number.MAX_VALUE number.MIN-VALUE number.Nan number.NEGATIVE_INFINITY number.POSITIVE_INFINITY

Description 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. Returns the numeric value This property represents the largest value that can be stored I a javascript program – approximately 1.79E+308 This property represents the smallest value that can be stored I a java script program – approximately 2.22E-308 This property represents not a number This property represents a value less than – Number.MAX_VALUE This property represents a value greater than – Number.MAX_VALUE

DOCUMENT OBJECT Method

Description

write( string ) writeln( string ) document.cookie

Writes the string to the HTML document as XHTML code Writes the string to the HTML document to a new line This property is a string containing the values of all the cookies stored on the user’s computer for the current document. This property is the date and time that this document was last modified.

Document.lastmodified

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

190

prompt( prompt, default ) close() Blur() window.document window.closed window.opener

string passed in as option. Displays dialog box. Closes the current window and deletes its object from memory This method takes focus away from the window This property contains the document object representing the document currently inside the window Set to true/false if window is closed or not respectively 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.

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 COLLECTIONS ALL AND CHILDREN <Script Language = "JavaScript">

194

var elements = ""; function start() { for (var i = 0; i < document.all.length; i++) elements += "
" + document.all[ i ] . tagName; pText.innerHTML += elements; alert( elements ); }

Elements on this web page:



OUTPUT

DYNAMIC HTML - OBJECT MODEL AND COLLECTIONS

195

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.

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 onbeforecopy onbeforepaste

Fires before a selection is cut to the clipboard Fires before a selection is copy to the clipboard Fires before a selection is paste to the clipboard

onbeforeupdate onafterupdate

Fires before a data source is updated Fires after a data source is updated

onrowenter,onrowexit,

Related to rows.

196

onrowsdelete,onrowsinserted onhelp, onkeydown, onkeyup ondbclick, ondrag, ondrop onchange

Fires help, keydown and keyup respectively Fires when a new change occurred

EVENT MODEL - ON CLICK EVENT <script type = "text/javascript" for = "para" event = "onclick"> alert("Hai Clik performed");

Click on this button



197



OUTPUT

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

198

EVENT BUBBLING <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; } document.onclick = documentClick;

Click here

Click here too!



OUTPUT

199

DYNAMIC STYLES – EXAMPLE PROGRAM Dynamic styles are used to change effect during run time.

200

Object model - Dynamic styles <script type = "text/javascript"> function start() { var inputColor = prompt("Enter a color for the " + "background of this page", ""); document.body.style.backgroundColor = inputColor; }

Welcome to our web site



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

201

Object model - Dynamic styles - using style tag <style type = "text/css"> .bigText { font-size: 3em; font-weight: bold } .mediumText { font-size: 1.5em; font-weight: bold } .smallText { font-size: .75em } <script type = "text/javascript"> function start() { var inputClass = prompt( "Enter a className for the text " + "(bigText or smallText)", ""); pText.className = inputClass; }

Welcome to our web site



OUTPUT The input value can be either (bigText or smallText) If the input value is bigText, then the output is

202

If the input value is smallText, then the output is

OUTPUT

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.



203

THE FLIP FILTER - FILTERS1.HTML <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 }

204

Text Text
Text Text


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.

205

• •

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).

RECORDSET A recordset is simply a set of data or rows to be accessed by the program. It contains the following recordset object methods. 1. 2. 3. 4.

MoveNext – used to move the recordset to the next row. MovePrevious – used to move the recordset to the previous row. MoveFirst – used to move the recordset to the first record immediately. 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 CONTROL 4.8ACTIVX CONTROL SAMPLE PROGRAM:

206

<param name="DataURL" value="color.txt"> <param name="UseHeader" value="TRUE"> <param name="TextQualifier" value="@"> <param name="FieldDelim" value="|">
<script> var rs=colors.recordset; function display() { recno.innerText="Record Number =" + rs.absolutePosition; test.style.color=rgbval.innerText; } function forward() { rs.moveNext(); if(rs.EOF) rs.moveFirst(); display(); } Color Name :<span id="rgbtext" datasrc="#colors" datafld="colorName">
Color Hex Value :<span id="rgbval" datasrc="#colors" datafld="ColorHexVal">
datafld="ColorHexVal">
<span id="recno" >

testing

COLOR.TXT: @colorName@|@ColorHexVal@ @red@|@#FF0000@ @green@|@#00FF00@ @blue@|@#0000FF@ @black@|@#000000@

207

@white@|@#FFFFFF@

OUTPUT WINDOW:

208

COLOR MOVING SAMPLE PROGRAM: <param name="DataURL" value="color.txt"> <param name="UseHeader" value="TRUE"> <param name="TextQualifier" value="@"> <param name="FieldDelim" value="|"> <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":

209

rs.movePrevious(); if(rs.BOF) rs.moveLast(); break; } display(); } Color Name :<span id="rgbtext" datasrc="#colors" datafld="colorName">
Color Hex Value :<span id="rgbval" datasrc="#colors" datafld="ColorHexVal">
<span id="recno" >

testing



OUTPUT WINDOW

210

COLOR SORT SAMPLE PROGRAM: <param name="DataURL" value="color.txt"> <param name="UseHeader" value="TRUE"> <param name="TextQualifier" value="@"> <param name="FieldDelim" value="|">

211

Binding to an Table

Sort by : <select onchange="colors.Sort=this.value;colors.Reset();">
Color Name Color RGB
<span datafld="colorName"> <span datafld="ColorHexVal">


OUTPUT WINDOW:

212

BINDING TO AN TABLE EXAMPLE (USING COLOR.TXT FILE SAMPLE PROGRAM: <param name="DataURL" value="color.txt"> <param name="UseHeader" value="TRUE"> <param name="TextQualifier" value="@"> <param name="FieldDelim" value="|">

Binding to an Table



213

Color Name Color RGB
<span datafld="colorName"> <span datafld="ColorHexVal">


OUTPUT WINDOW:

214

4.9 HANDLING OF MULTIMEDIA DATA IMAGE MOVE - SAMPLE PROGRAM:

215

<param name="DataURL" value="img.txt"> <param name="UseHeader" value="TRUE"> <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; }

216

display(); } <span id="recno" >




IMG.TXT: image E:\images\image1.bmp E:\images\image2.bmp E:\images\image3.bmp E:\images\image4.bmp E:\images\image5.bmp E:\images\image6.bmp E:\images\image7.bmp E:\images\image8.bmp E:\images\image9.bmp

OUTPUT WINDOW:

217

END OF UNIT - IV

218

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 documents ,servlets and supporting files such as images,and class files

219

reside in this directory or its subdirectories. WEB-INF

This directory contains the web application deployment descriptor

WEB-

This directory contains the servlets class files and other supporting class

INF/classes

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> internet world wide web and how to program <description> this is the web application in which we demonstrate our jsp and servlet examples <servlet> <servletname> welcome1 <description>a simple servlet that handles an http get request

220

<servlet-class>Welcomeservlet <servlet> <servlet-mapping> <servletname>welcome1 /welcome1

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

221

Welcomeservlet.html WEB-INF Web.xml 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.

222

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 roaming Web agent servlets, interactive HTML editors…or perform just about any Webrelated 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.

223

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

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.

224

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.

225



Tomcat is available for commercial use under the ASF license from the Apache web site in both binary and source versions.



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 Tomcat Before 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.

226

• • •

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. 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.

227

3. Select the Environment Variables button. You see a screen similar toFigure3

will

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.

228

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:

229



Servlets



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-tomcat4.0/webapps.

THE WEB APPLICATION DIRECTORY STRUCTURE /onjavaThis is the root directory of the web application. All JSP and XHTML files are stored here. /onjava/WEB-INFThis directory contains all resources related to the application that are not in the document root of the application. /onjava/WEB-INF/classesThis directory is where servlet and utility classes are located.

230

/onjava/WEB-INF/libThis directory contains Java Archive files that the web application depends upon.

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

231

WEB.XML <web-app> The OnJava App <session-timeout>30 <servlet> <servlet-name>TestServlet <servlet-class>com.onjava.TestServlet 1 <param-name>name <param-value>value In this example we are setting three application level elements. •

The first of the application level elements is the . 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

232

WHAT IS JK V1.2? •

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

233

3) Install Tomcat as described by its documentation. 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.

234

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 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 elements.





The only two attributes in this 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.

235



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 /conf directory of the Tomcat instance that you will be integrating with Apache.

EXAMPLE:



worker.list=testWorker worker.testWorker.port=8009 worker.testWorker.host=localhost worker.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>.portThe port property defines the port number of this Tomcat worker. This value must match the port attribute of the previously defined Tomcat element. <workername>.hostThe 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>.typeThe 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.

236



Tomcat has this type of realm functionality built in.



The component that provides this functionality is the org.apache.catalina.Realm interface.



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:

/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:

<user name="tomcat" password="tomcat" roles="tomcat" /> <user name="role1" password="tomcat" roles="role1" /> <user name="both" password="tomcat" roles="tomcat,role1" /> Note: The default location of the MemoryRealms XML file is the /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

237

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.

Roles

The roles attribute contains the role or roles assigned to the named user. This is the value that must match the 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 commaseparated 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 /conf/server.xml and uncomment the following line.

2) By un-commenting this 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 /webapps/onjava/WEB-INF/web.xml and add the following security constraint: <security-constraint> <web-resource-collection> <web-resource-name>OnJava /* onjavauser

238

Application



There are only two sub-elements that you need to focus upon. The first is the 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.



The second sub-element, , defines the user role that can access the resource protected by the previously defined . 4) Add the following sub-element directly following the <security-constraint>.



BASIC OnJava Application


The sub-element defines the authentication method for the defined realm. The possible values are BASIC, DIGEST, and FORM.



And the config> maps to.

sub-element names the Web resource that this
5) Open /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 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.

239

Figure 1. The BASIC Authentication Dialog

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 ecommerce 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.

240

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.

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

241

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 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 missioncritical 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.

242

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 commandline interface for configuration makes it convenient to administer WebLogic Servers ith scripts.



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.

243

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 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 networksavvy, 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.

244

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

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

245

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. 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 backend 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 loadbalancing 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

246

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 missioncritical 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 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

247

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

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

248

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 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

249

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 Internetbased 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. 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.

250

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 runtime 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.

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 messagedriven 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-

251

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. 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 clientspecific 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.

252

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). 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

253

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 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

254

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 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.

255

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

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.

256

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)



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.

257

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. 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 thirdparty 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.

258

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 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.

259

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 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.

260

5.4 HTTP REQUESTS An HTTP request consists of three components:  Method-URI-Protocol/Version  Request headers  Entity body AN EXAMPLE HTTP REQUEST IS: POST /servlet/default.jsp HTTP/1.1 Accept: 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

261

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. 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:

262

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"));

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.

263

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. 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

264

{ 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, 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 initializations and 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.

265

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."

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. HEAD Asks 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. GET Requests 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. POST

266

Submits 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. PUT Uploads a representation of the specified resource. DELETE Deletes the specified resource

TRACE Echoes back the received request, so that a client can see what intermediate servers are adding or changing in the request. OPTIONS Returns 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 sideeffect 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.

267

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.

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.

268

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. 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

URL

asPost

Description 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.

true/false value that indicates if the request should

269

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 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.

270

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. 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

271

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. 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/formdata 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

272

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 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)

273



This method binds the specified object value under the specified name. Any existing binding with the same name is replaced

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.

274



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.



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: name=value;expires=expDate;

275

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

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

276

Anchor

Button

Applet

Area

FileUpload Checkbox

Password

Hidden

Form

Image

Reset

Submit

Radio

Select

Link

TextArea 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: Print “Set-Cookie:name=siva”; The cookie can be later referred again from the Perl Script by using the”Environmental Variable” as: $var=$ENV{‘HTTP_COOKIE’}; In this case, the value of the cookie is extracted to the variable var.

277

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. 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: Use Win32:: ODBC;

The possible object methods for Database connectivity and straightaway run to a sample coding: i.

The new method: Syntax : new Win32:: ODBC(DSN); 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 :

Sql( sql statement)

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.

278

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, 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. 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 The entire code(ODBC) listing is below: # ! /usr/bin/perl ->given System DSN -> Add. ii. In the newly appeared dialog box, select the “Driver do Microsoft Access(*.mdb) and # This program illustrates DB connectivity concepts press Finish iii. In the new dialog box, type the DataSourceName as “bibilo” and select the print “Content-type: text/html\n\n”; “bibilo.mdb” by pressing the Select button. Finally press the OK button. print “”; use Win32: :ODBC; print “”; if(($db=new Win32: :ODBC(“dsn=bibilo;”))) { $no=$db->Connection; print “Connection identification number is: $no”; print “

DATA IS

”; $db ->Sql (“SELECT * FROM authors”); while($db->FetchRow()) { undef %Data; %Data=$$db->DataHash(); print “”; } print “
”; print “ Aythor id Author Name
$Data{ ‘Au_ID’ } $Data{ ‘Author’ }
”; 279

} print “”;

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.

280



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.



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

281

Regno

Number

5

Name

Varchar2

20

Class

Varchar2

20

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

282

UPDATE student SET mark=100 WHERE regno=1001;

DELETE: 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.

283

Application

Oracle Data Base

ODBC Oracle Driver

SQL Driver

SQL Data Base

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.



• • •

284



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. 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 JDBCDriverManager ODBC Driver Manager ODBC libraries

ODBC Database

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.

285

• •

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 DBMS Vendor Client Side Libraries based On C Language

Socket connection

DBMS Server

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.

Application

Socket connection(DBMS specific protocol

JDBC Java based Socket driver 286

DBMS server

5.8 SIMPLE APPLICATIONS • An N-tier application is anything that is divided into discrete logical parts. • 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

287

• 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.

288

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

289

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?

290

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.

291

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

292

3. Shopping sites have proven to be one of the few real ways to make money from consumers on the web. 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

Application Layer Transport Layer (TCP, UDP)

Transport Layer (TCP, UDP) The Host to Host Layer

Internet layer (IP) Physical path

Application Layer

7.

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

INTERNET PROTOCOL (IP) CONTAINS ONLY 4 LAYERS, NAMELY 6.1 6.2 6.3 6.4

Application layer Transport Layer(TCP, UDP) Internet Layer (IP) 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

293

Discard

9

FTP SMTP HTTP POP3 NTP

21 25 80 110 119

RMI Registry

1099

TCP/UDP

other’s input. Discard is a less useful test protocol in which all data received by the server is ignored.

Usenet news transfer is more formally known as the Network News Transfer Protocol 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

294

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. 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 Extensions 3. 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.

295

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 Scheme:scheme-specific-part Scheme types

4. 5. 6. 7. 8. 9.

1. data – base 64 encoded data included directly in a link 2. file – A file on a local disk FTP – An FTP server gopher – a Gopher server mailto – an email address news – A Usenet newsgroup Telnet – A connection to a Telnet based service (only used in Remote Login System) 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.

296

17. EXPLAIN ABOT SGML – STANDARD GENERALIZED MARKUP LANGUAGE • • • •

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 -Assumed as record name KEY BOARD KEY BOARD 1500
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:

THIS IS CENTERED H1 HEADING

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.

297

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 connection 4. Making a request 5. Receiving the response 6. Closing the connection 20. 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

Calendar control

Css

A CSS used for HTML and XML

directory

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 <TITLE> CGI EXAMPLE

298

Enter your Name Enter your Mail address
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:

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.

299

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. 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.

300

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. 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 IOException public void write(byte[] data) throws IOException public void write(byte[] data, int offset, int length ) throws IOException public void flush() throws IOException public void close() throws IOException 26. WHAT IS THE MEANING OF FLUSH (WASH OUT) METHOD ?

301

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 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 IOException 3. public Boolean markSupported()

Marking 7. 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?

302

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. 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.

303

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) 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. 2. 3. 4. 5. 6.

public class DeflaterOutputStream extends FilterOutputStream public class DeflaterInputStream extends FilterInputStream public class QDeflaterOutputStream extends FilterOutputStream public class DeflaterOutputStream extends FilterOutputStream public class DeflaterOutputStream extends FilterOutputStream 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.

304



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.



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. FileReader FileWriter StringReader StringWriter ChararrayReader CharArrayWriter

305

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. 1. protected Writer() 2. protected Writer(Object lock) 3. public abstract void write(char[] text, int offset, int length) throws IOException 4. 5. 6. 7. 8.

public void write(int c) throws IOException public void write(char[] text) throws IOException public void write(String s, int offset, int length) throws IOException public abstract void flush() throws IOException 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. PushbackReader 4. PrintWriter classes. 37. DEFINE THREAD. •

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

306



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.



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: 3. For creating a Thread Thread t = new Thread(); t.start() 4. To run a Thread Public void run()

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

307

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) 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

308

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. 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 Preemptive -> Possible to alter the sequence NonPreemptive -> Not possible to alter the sequence.

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.

309



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

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 InterrupteException Public 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

310

• • • • • • •

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

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.

311



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 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:

312

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. 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 machine

313

9. Send data 10. Receive data 11. Close a connection 12. Bind a port 13. Listen for incoming data 14. Accept connections from remote machine on the bound port 52. WHAT IS A PORT? • • • •

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.

314



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? •

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.

315

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 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()

316

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.

60. DIFFERENCIATE CONNECTION-ORIENTED AND CONNECTION LESS PROTOCOL.

Connection oriented protocol Client has to establish a connection to another client or server Once the connection is established, then data transfer takes place. At the end of data transfer client should disconnect the connection.

Connection less protocol Establishing connection is not needed Data transfer takes place regardless of 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.

317



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.



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.

318



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. END OF UNIT II

319

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 <TITLE> This is the Title …. Type the body of the program 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.

- is used for introducing various paragraphs. 5.
- this tag is used for giving an empty blank line.

320

6. HEADING TAGS -

..
is used to introduce various headings.

is the biggest and h6 is the smallest heading tag. 7.
TAG – is used to draw lines and horizontal rules. 8. ,, for bold, italic and underline respectively. 69. EXPLAIN ABOUT LIST TAG. TYPES OF LISTS 1. Unordered lists 2. Ordered lists UNORDERED LISTS It starts with
    and ends with
Attributes of Unordered lists TYPE: TYPE = FILLROUND or TYPE = SQUARE EXAMPLE
  • CSE
  • IT
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

321

EXAMPLE
  1. CSE
  2. IT
OUTPUT 5 CSE 6 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
tags. Row elements
Heading
Table data values
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 cell CELLSPACING Controls the spacing between adjacent cells COLSPAN Used to spilt the single cell to one or more columns ROWSPAN Used to spilt the single cell to one or more rows. EXAMPLE
Roll Number Age
1


322

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. 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 Hyper Text Message

323

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 . 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. 6. HREF – Takes the name of the .html file that s linked to the particular area on the image. <MAP NAME = “fish.jpg”> 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


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.

324

76.MENTION THE VARIOUS FORM ELEMENTS. Various elements or controls can be created in FORM using tag. They are 1. Label

2. Text box

5. Check box 6. List box

3. Text Area

4. Radio button

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 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

=> Divides the screen into 2 rows, * occupying the remaining space => Divides the first row into 2 equal columns => Divides the second row into 2 equal columns

325

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 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 learn 14. Quick Development 15. Designed for simple, small programs 16. High performance 17. Procedural Capabilities – support facilities such as condition checking, looping and branching.

326

18. Designed for programming user events – like VB Java Script is also based on Events. 19. Easy Debugging and Testing 20. Platform Independence/ Architecture Neutral

SYNTAX OF JAVASCRIPT PROGRAM <SCRIPT language = “JavaScript”> … body of the script program <SCRIPT language = “JavaScript”> body of the program. 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.

327



= = = 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 SCRIPT 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) 4. Alert is only used to display some information 5. Prompt is used to display information along with some input value 6. Confirm dialog box, causes program execution to halt until user action takes place. The user action can be either OK or CANCEL. OK – returns true CANCEL – 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.

328

• •

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

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) •

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>…

tags. 87. MENTION THE TYPES OF STYLE SHEETS 87.1 Embedded or Internal Style sheet 87.2 External or Linked Style sheet 87.3 Inline style sheet

330

88. LIST THE DIFFERENCE BETWEEN STYLE SHEETS Slno ‘Embedded

Linked

Inline Style Sheet

1

Style program alone is stored in a separate file with an extension of .css file. Explicit LINK REL statement is needed to connect with .CSS file Styles used in .CSS file can be used in any HTML program

Different from Embedded and Linked CSS Not required

2 3

Style program is embedded with in the HTML program itself. Explicit LINK statement is not needed. Styles can be used within the program only, it can not be called some other files.

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 4. Border Attributes 5. Margin Attributes and 6. List Attributes. 90. HOW TO INTRODUCE STYLE IN HTML PROGRAM? <STYLE Type = “text/css”> predefined tag name {attribute name1:attribute value1; attribute name2:attribute value2; ……attribute name-n:attribute value-n} <STYLE>

331

write the body of program



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 Time GMT – Greenwich Mean Time 93. WHAT ARE 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. 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.

332

• •

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. 6. 7. 8.

MoveNext – used to move the recordset to the next row. MovePrevious – used to move the recordset to the previous row. MoveFirst – used to move the recordset to the first record immediately. 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. 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 Onbeforecopy Onbeforepaste

Fires before a selection is cut to the clipboard Fires before a selection is copy to the clipboard Fires before a selection is paste to the clipboard

Onbeforeupdate Onafterupdate

Fires before a data source is updated Fires after a data source is updated

onrowenter,onrowexit, Related to rows, executed when you enter into row, exit, onrowsdelete,onrowsinserted delete and insert respectively. onhelp, onkeydown,

Fires help, keydown and keyup respectively

333

onkeyup ondbclick, ondrag, ondrop Onchange

Fires when double click, drag or drop event is occurred. 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.

THE FLIP FILTER - FILTERS1.HTML <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 }

334

Text Text
Text Text


OUTPUT fliph filter applied

filpv filter applied Both

335

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.



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).

336

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.



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.

337



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? •

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.

338



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

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) URI URN URL HTML SGML XML 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) 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)

340

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 WEB HOW 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 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.

341

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 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

342

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. 22. *** Discuss briefly about Data Binding using any control for example • • •

binding with table binding with an image sorting table data.

343

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. 9. The client displays this information to the user. 56. WHAT YOU MEAN BY FULL-FLEDGED HTTP SERVERS? 9. HTTP is a large protocol.

344

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.

13. public byte[] getId() 14. public SSLSessionContext getSessionContext() 15. public long getCreateation() 16. public long getLastAccessdTime() 17. public void invalidate()

345

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 protocol Client has to establish a connection to Establishing connection is not needed another client or server Once the connection is established, then data Data transfer takes place regardless of transfer takes place. connection. At the end of data transfer client should Not applicable. disconnect the connection. 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.

346



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) RMI – Remote Method of Invocation is the method of creating an object in one machine and accessing it in some other machine.

347

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 <TITLE> This is the Title …. Type the body of the program

348

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.

- is used for introducing various paragraphs. 9.
- this tag is used for giving an empty blank line. 10. HEADING TAGS -

..
is used to introduce various headings.

is the biggest and h6 is the smallest heading tag. 11.
TAG – is used to draw lines and horizontal rules. 12. ,, for bold, italic and underline respectively. 69. EXPLAIN ABOUT LIST TAG. TYPES OF LISTS 4. Unordered lists 5. Ordered lists UNORDERED LISTS It starts with
    and ends with
Attributes of Unordered lists TYPE: TYPE = FILLROUND or TYPE = SQUARE EXAMPLE
  • CSE
  • IT
ORDERED LISTS (NUMBERING> TYPE: Controls the numbering scheme to be used TYPE = “1” will give counting numbers (1,2,…>

349

“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
  1. CSE
  2. IT
OUTPUT 5 CSE 6 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
tags. Row elements
Heading
Table data values
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 cell CELLSPACING Controls the spacing between adjacent cells COLSPAN Used to spilt the single cell to one or more columns ROWSPAN Used to spilt the single cell to one or more rows. EXAMPLE

350

Roll Number Age
1
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. NOTE: User can specify the color name of a hyperlink or an equivalent hexadecimal number.

351

EXTERNAL LINKS SYNTAX A HREF = “location name”> Hyper Text Message
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 . 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”> 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 •

The METHOD attribute indicates the way the web server will organize and send you the form output.

352



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 tag. They are 1. Label

2. Text box

5. Check box 6. List box

3. Text Area

4. Radio button

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 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

=> Divides the screen into 2 rows, * occupying the remaining space => Divides the first row into 2 equal columns

353

=> Divides the second row into 2 equal columns 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 ADVANTAGES

354

21. It is an interpreted language, which requires no compilation steps. 22. Embedded within HTML. 23. Minimal Syntax – easy to learn 24. Quick Development 25. Designed for simple, small programs 26. High performance 27. 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 Testing 30. Platform Independence/ Architecture Neutral SYNTAX OF JAVASCRIPT PROGRAM <SCRIPT language = “JavaScript”> … body of the script program <SCRIPT language = “JavaScript”> body of the program. 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

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 SCRIPT 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) 7. Alert is only used to display some information 8. Prompt is used to display information along with some input value 9. Confirm dialog box, causes program execution to halt until user action takes place. The user action can be either OK or CANCEL. OK – returns true CANCEL – 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

356



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. 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.

357



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>…

tags. 94. MENTION THE TYPES OF STYLE SHEETS 87.1 Embedded or Internal Style sheet 87.2 External or Linked Style sheet 87.3 Inline style sheet

95. DIFFERENCE TYPES OF STYLE SHEETS Slno ‘Embedded

Linked

Inline Style Sheet

1

Style program alone is stored in a separate file with an extension of .css file. Explicit LINK REL statement is needed to connect with .CSS file Styles used in .CSS file can be used in any HTML program

Different from Embedded and Linked CSS Not required

2 3

Style program is embedded with in the HTML program itself. Explicit LINK statement is not needed. Styles can be used within the program only, it can not be called some other files.

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

358



Color and Background attributes



Text Attributes



Border Attributes



Margin Attributes and



List Attributes.

90. HOW TO INTRODUCE STYLE IN HTML PROGRAM? <STYLE Type = “text/css”> predefined tag name {attribute name1:attribute value1; attribute name2:attribute value2; ……attribute name-n:attribute value-n} <STYLE> write the body of program

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

359

UTC – Coordinated Universal Time GMT – Greenwich Mean Time 93. WHAT ARE 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. 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).



360

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. 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 onbeforecopy onbeforepaste

Fires before a selection is cut to the clipboard Fires before a selection is copy to the clipboard Fires before a selection is paste to the clipboard

onbeforeupdate onafterupdate

Fires before a data source is updated Fires after a data source is updated

onrowenter,onrowexit, Related to rows, executed when you enter into row, exit, onrowsdelete,onrowsinserted delete and insert respectively. onhelp, onkeydown, onkeyup ondbclick, ondrag, ondrop onchange

Fires help, keydown and keyup respectively Fires when double click, drag or drop event is occurred. 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.

361



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.

THE FLIP FILTER - FILTERS1.HTML <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 }

362

Text Text
Text Text
OUTPUT 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.

363

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.



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.

364



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.)

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.

365



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? •

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

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) URI URN URL HTML SGML

367

XML 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) 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 WEB HOW 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

368

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 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

369

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) 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)

370

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) 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

Related Documents

Internet
May 2020 27
Internet
November 2019 56
Internet
May 2020 26
Internet
December 2019 54
Internet
November 2019 50
Internet
November 2019 52