Web Technologies Notes
Web Technologies Notes
ON
WEB TECHNOLOGIES
S. No Topic Page no
Unit
1 Introduction to Internet 1
I
II
4 Introduction to XML 33
II
5 Introduction to XHTML, Using XML 55
II
6 PHP 62
III
7 Introduction to Servlets 81
III
8 Cookies and Session Tracking 95
IV
10 Database Programming using JDBC 107
IV Updating Tables
12 113
V
13 JSP Application Design and JSP Environment 115
V Anatomy of JSP
14 117
NotesUNIT - I
The Internet is the global system of interconnected computer networks that use the
Internetprotocol suite (TCP/IP) to link devices worldwide. It is a network of networks that
consists of private, public, academic, business, and government networks of local to global
scope, linked by a broad array of electronic, wireless, and optical networking technologies. The
Internet carries a vast range of information resources and services.
History of Internet
This marvelous tool has quite a history that holds its roots in the cold war scenario. A
need was realized to connect the top universities of the United States so that they can share all
the research data without having too much of a time lag. This attempt was a result of Advanced
Research Projects Agency (ARPA) which was formed at the end of 1950s just after the Russians
had climbed the space era with the launch of Sputnik. After the ARPA got success in 1969, it
didn‘t take the experts long to understand that how much potential can this interconnection tool
have. In 1971 Ray Tomlinson made a system to send electronic mail. This was a big step in the
making as this opened gateways for remote computer accessing i.e.telnet.
During all this time, rigorous paper work was being done in all the elite research
institutions. From giving every computer an address to setting out the rules, everything was
getting penned down. 1973 saw the preparations for the vital TCP/IP and Ethernet services. At
the end of 1970s, Usenet groups had surfaced up. By the time the 80s had started, IBM came up
with its PC based on Intel 8088 processor which was widely used by students and universities for
it solved the purpose of easy computing. By 1982, the Defense Agencies made the TCP/IP
compulsory and the term ―internet‖ was coined. The domain name services arrived in the year
1984 which is also the time around which various internet based marked their debut. A worm, or
a rust the computers, attacked in 1988 and disabled over 10% of the computer systems all over
the world. While most of the researchers regarded it as an opportunity to enhance computing as it
was still in its juvenile phase, quite a number of computer companies became interested in
dissecting the cores of the malware which resulted to the formation Computer Emergency
Rescue Team (CERT). Soon after the world got over with the computer worm, World Wide Web
came into existence. Discovered by Tim Berners-Lee, World Wide Web was seen as a service to
connect documents in websites usinghyperlinks.
World Wide Web
The World Wide Web (abbreviated WWW or the Web) is an information space where
documents and other web resources are identified by Uniform Resource Locators (URLs),
interlinked by hypertext links, and can be accessed via the Internet. English scientist
TimBerners-Lee invented the World Wide Web in 1989. He wrote the first web browser
computerprogram in 1990 while employed at CERN in Switzerland. The Web browser was
released outside CERN in 1991, first to other research institutions starting in January 1991 and to
the general public on the Internet in August 1991.
The World Wide Web has been central to the development of the Information Age and is
the primary tool billions of people use to interact on the Internet. Web pages are primarily text
documents formatted and annotated with Hypertext Markup Language (HTML). In addition to
formatted text, web pages may contain images, video, audio, and software components that are
rendered in the user's web browser as coherent pages of multimedia content.
Embedded hyperlinks permit users to navigate between web pages. Multiple web pages
with a common theme, a common domain name, or both, make up a website. Website content
can largely be provided by the publisher, or interactively where users contribute content or the
content depends upon the users or their actions. Websites may be mostly informative, primarily
for entertainment, or largely for commercial, governmental, or non-governmental organizational
purposes
WWW is another example of client/server computing. Each time a link is followed, the client is
requesting a document (or graphic or sound file) from a server (also called a Web server) that's
part of the World Wide Web that "serves" up the document. The server uses a protocol called
HTTP or Hyper Text Transport Protocol. The standard for creating hypertext documents for the
WWW is Hyper Text Markup Language or HTML. HTML essentially codes plain text
documents so they can be viewed on the Web.
Browsers:
WWW Clients, or "Browser": The program you use to access the WWW is known as a
browser because it "browses" the WWW and requests these hypertext documents. Browsers can
be graphical, allows to see and hear the graphics and audio;
text-only browsers (i.e., those with no sound or graphics capability) are also available. All of
these programs understand http and other Internet protocols such as FTP, gopher, mail, and
news, making the WWW a kind of "one stop shopping" for Internetusers.
Year List of Web browsers
1991 World Wide Web (Nexus)
1992 Viola WWW, Erwise, MidasWWW, MacWWW (Samba)
1993 Mosaic,Cello,[2] Lynx 2.0, Arena, AMosaic 1.0
IBM WebExplorer, Netscape Navigator, SlipKnot 1.0, MacWeb, IBrowse, Agora
1994
(Argo), Minuet
Internet Explorer 1, Internet Explorer 2, Netscape Navigator 2.0, OmniWeb,
1995
UdiWWW, Grail
Arachne 1.0, Internet Explorer 3.0, Netscape Navigator 3.0,Opera 2.0,
1996
PowerBrowser 1.5,[4] Cyberdog,Amaya 0.9,[5] AWeb,Voyager
Internet Explorer 4.0, Netscape Navigator 4.0, Netscape Communicator 4.0,
1997
Opera3.0,[6] Amaya 1.0[5]
1998 iCab, Mozilla
1999 Amaya 2.0,[5] Mozilla M3, Internet Explorer 5.0
Konqueror,Netscape 6, Opera 4,[7] Opera 5,[8] K-Meleon 0.2, Amaya 3.0,[5] Amaya
2000
4.0[5]
2001 Internet Explorer 6, Galeon 1.0, Opera 6,[9] Amaya 5.0[5]
2002 Netscape 7, Mozilla 1.0, Phoenix 0.1, Links 2.0, Amaya 6.0,[5] Amaya 7.0[5]
2003 Opera 7,[10] Apple Safari 1.0, Epiphany 1.0, Amaya 8.0[5]
2004 Firefox 1.0, Netscape Browser, OmniWeb 5.0
Opera8,[11]Apple Safari2.0, Netscape Browser 8.0, Epiphany 1.8, Amaya
2005
9.0,[5] AOL Explorer 1.0, Maxthon 1.0,Shiira 1.0
Mozilla Firefox 2.0, Internet Explorer 7,Opera 9,[12], SeaMonkey 1.0, K-Meleon 1.0,
2006
Galeon 2.0, Camino 1.0, Avant11, iCab 3
Apple Safari 3.0, Maxthon 2.0, Netscape
2007
Navigator9,NetSurf 1.0, Flock 1.0, Conkeror
Google Chrome 1, Mozilla Firefox 3, Opera 9.5,[13], Apple Safari 3.1, Konqueror 4,
2008
Amaya 10.0,[5] Flock 2, Amaya 11.0[5]
Google Chrome 2–3, Mozilla Firefox 3.5, Internet Explorer 8,Opera 10,[14], Apple
2009
Safari 4, SeaMonkey 2, Camino 2,surf, Pale Moon 3.0[15]
Google Chrome 4–8, Mozilla Firefox 3.6, Opera 10.50,[16], Opera 11, Apple Safari 5,
2010
K-Meleon 1.5.4,
Google Chrome 9–16, Mozilla Firefox 4-9, Internet Explorer 9,Opera 11.50, Apple
2011
Safari 5.1, Maxthon 3.0, SeaMonkey 2.1–2.6
Google Chrome 17–23, Mozilla Firefox 10–17, Internet Explorer 10, Opera 12, Apple
2012
Safari 6, Maxthon 4.0, SeaMonkey 2.7-2.14
Google Chrome24–31,Mozilla Firefox 18–26,Internet Explorer 11, Opera 15–
2013
18, Apple Safari 7, SeaMonkey 2.15-2.23
2014 Google Chrome 32–39, Mozilla Firefox 27–34, Opera 19–26, Apple Safari 8
2015 Google Chrome 40–47, Microsoft Edge,Mozilla Firefox 35–43, Opera 27–34, Vivaldi
Google Chrome 48–55,Mozilla Firefox 44–50,Microsoft Edge 14, Opera35–
2016 42, Apple Safari 10, SeaMonkey 2.24–2.30, Pale Moon 26.0.0[17], Pale Moon
27.0.0[18]
Google Chrome56–60,Microsoft Edge 15,Mozilla Firefox 51–55.0.2, Opera43–
2017
45, Opera Neon
Uniform Resource Locators, or URLs: A Uniform Resource Locator, or URL is the address of
a document found on the WWW. Browser interprets the information in the URL in order to
connect to the proper Internet server and to retrieve your desired document. Each time a click on
a hyperlink in a WWW document instructs browser to find the URL that's embedded within the
hyperlink.
The elements in a URL: Protocol://server's address/filename
Hypertext protocol:
http://www.aucegypt.eduFile Transfer
Protocol: ftp://ftp.dartmouth.eduTelnet
Protocol: telnet://pac.carl.org
News Protocol: news:alt.rock-n-roll.stones
What are Domains? Domains divide World Wide Web sites into categories based on the nature
of their owner, and they form part of a site's address, or uniform resource locator (URL).
Common top-level domainsare:
Additional three-letter, four-letter, and longer top-level domains are frequently added.
Each country linked to the Web has a two-letter top-level domain, for example .fr is France, .ie is
Ireland.
MIME (Multi-Purpose Internet Mail Extensions):- MIME is an extension of the original
Internet e-mail protocol that lets people use the protocol to exchange different kinds of data files
on the Internet: audio, video, images, application programs, and other kinds, as well as the ASCII
text handled in the original protocol, the Simple Mail Transport Protocol (SMTP). In 1991,
Nathan Borenstein of Bellcore proposed to the IETF that SMTP be extended so that Internet (but
mainly Web) clients and servers could recognize and handle other kinds of data than ASCII text.
As a result, new file types were added to "mail" as a supported Internet Protocol file type.
Servers insert the MIME header at the beginning of any Web transmission. Clients use
this header to select an appropriate "player" application for the type of data the header indicates.
Some of these players are built into the Web client or browser (for example, all browsers come
with GIF and JPEG image players as well as the ability to handle HTML files); other players
may need to bedownloaded.
New MIME data types are registered with the Internet Assigned Numbers Authority
(IANA).
MIME is specified in detail in Internet Request for Comments 1521 and 1522, which
amend the original mail protocol specification, RFC 821 (the Simple Mail Transport Protocol)
and the ASCII messaging header, RFC 822.
HTTP means HyperText Transfer Protocol. HTTP is the underlying protocol used by the World
Wide Web and this protocol defines how messages are formatted and transmitted, and what
actions Web servers and browsers should take in response to various commands.
For example, when you enter a URL in your browser, this actually sends an HTTP command to
the Web server directing it to fetch and transmit the requested Web page. The other main
standard that controls how the World Wide Web works is HTML, which covers how Web pages
are formatted anddisplayed.
HTTP is called a stateless protocol because each command is executed independently, without
any knowledge of the commands that came before it. This is the main reason that it is difficult to
implement Web sites that react intelligently to user input.
HTTPS: A similar abbreviation, HTTPS means Hyper Text Transfer Protocol Secure. Basically,
it is the secure version of HTTP. Communications between the browser and website are
encrypted by Transport Layer Security (TLS), or its predecessor, Secure Sockets Layer (SSL).
The Web Programmer‟sToolbox:
• HTML - a markuplanguage
o To describe the general form and layout ofdocuments
▪ HTML is not a programming language - it cannot beused
describe computations.
o An HTML document is a mix of content and controls
▪ Controls are tags and theirattributes
▪ Tags often delimit content and specify something about howthe
content should be arranged in thedocument
For example, <p>Write a paragraph here </p> is an element.
▪ Attributes provide additional information about the content of a tag
For example, <img src = "redhead.jpg"/><font color ="Red"/>
• Plugins
o Integrated into tools like word processors, effectively converting themto
WYSIWYG HTMLeditors
• Filters
o Convert documents in other formats toHTML
• Advantages of both filters and plug-ins:
o Existing documents produced with other tools can be converted to HTML
documents
o Use a tool you already know to produceHTML
• Disadvantages of both filters andplug-ins:
o HTML output of both is not perfect - must be finetuned
o HTML may benon-standard
o You have two versions of the document, which are difficult tosynchronize
• XML
o A meta-markup language (a language for defining markuplanguage)
o Used to create a new markup language for a particular purpose orarea
o Because the tags are designed for a specific area, they can bemeaningful
• JavaScript
o A client-side HTML-embedded scriptinglanguage
o Provides a way to access elements of HTML documents and dynamicallychange
them
• Flash
o A system for building and displaying text, graphics, sound, interactivity,and
animation(movies)
o Twoparts:
1. Authoringenvironment
2. Player
Supports both motion and shape animation
PHP
A server-side scripting language
Great for form processing and database access through the Web
Ajax
Asynchronous JavaScript + XML
▪ No new technologies orlanguages
Much faster for Web applications that have extensive user/server interactions
Uses asynchronous requests to the server
Requests and receives small parts of documents, resulting in much faster
responses
Java Web Software
Servlets – server-side Java classes
JavaServer Pages (JSP) – a Java-based approach to server-side scripting
JavaServer Faces – adds an event-driven interface model on JSP
ASP.NET
Does what JSP and JSF do, but in the .NET environment
Allows.NET languages to be used as server-side scripting language
Ruby Rails
data value is an object, and all operations are via method calls Both
A pure object- classes and objects are dynamic
oriented interpreted
scripting language
E
v
e
r
y
A development framework for Web-based applications
Particularly useful for Web applications that access databases
Written in Ruby and uses Ruby as its primary user language
HTML is the building block for web pages. HTML is a format that tells a computer how to
display a web page. The documents themselves are plain text files with special "tags" or codes
that a web browser uses to interpret and display information on your computer screen.
HTML Tags:- HTML tags are used to mark-up HTML elements .HTML tags are surrounded by
the two characters < and >. The surrounding characters are called angle brackets. HTML tags
normally come in pairs like and The first tag in a pair is the start tag, the second tag is the end
tag . The text between the start and end tags is the element content . HTML tags are not case
sensitive, <B>means the same as<b>.
The most important tags in HTML are tags that define headings, paragraphs and line breaks.
Tag Description
<!DOCTYPE...> This tag defines the document type and HTML version.
<html> This tag encloses the complete HTML document and mainly comprises of
document header which is represented by <head>...</head> and document
body which is represented by <body>...</body> tags.
<head> This tag represents the document's header which can keep other HTML tags
like <title>, <link> etc.
<title> The <title> tag is used inside the <head> tag to mention the document title.
<body> This tag represents the document's body which keeps other HTML tags like
<h1>, <div>, <p> etc.
<p> This tag represents a paragraph.
<h1> to <h6> Defines header 1 to header 6
Headings:-
Headings are defined with the <h1> to <h6> tags. <h1> defines the largest heading while <h6>
defines the smallest.
<h1>This is a heading</h1>
<h2>This is aheading</h2>
<h3>This is aheading</h3>
<h4>This is aheading</h4>
<h5>This is aheading</h5>
<h6>This is aheading</h6>
Paragraphs:-
Paragraphs are defined with the <p> tag. Think of a paragraph as a block of text. You can use the
align attribute with a paragraph tag as well.
Line Breaks:-
The <br> tag is used when you want to start a new line, but don't want to start a new paragraph.
The <br> tag forces a line break wherever you place it. It is similar to single spacing in a
document.
This Code output
<p>This <br> is a para<br> graph with This
is a para
line breaks</p> graph with line breaks
Horizontal Rule The element is used for horizontal rules that act as dividers between sections
like this:
The horizontal rule does not have a closing tag. It takes attributes such as align and width
Code Output
<hr width="50%" align="center">
Lists:-HTML offers web authors three ways for specifying lists of information.
All lists must contain one or more list elements. Lists are of three types
1) Un ordered list
2) Ordered List
3)Definitionlist
HTML Unordered Lists:An unordered list is a collection of related items that have no special
order or sequence. This list is created by using HTML <ul> tag. Each item in the list is marked
with a bullet.
Example
HTML Ordered Lists:- items are numbered list instead of bulleted, This list is created by using
<ol>tag.
HTML Definition Lists:- HTML and XHTML supports a list style which is called definition
lists where entries are listed like in a dictionary or encyclopedia. The definition list is the ideal
way to present a glossary, list of terms, or other name/value list. Definition List makes use of
following three tags.
1). <dl> - Defines the start of the list
2). <dt> - A term
3). <dd> - Termdefinition
4). </dl> - Defines the end of thelist
HTML tables:
The HTML tables allow web authors to arrange data like text, images, links, other tables, etc.
into rows and columns of cells. The HTML tables are created using the <table>tag inwhich the
<tr>tag is used to create table rows and <td>tag is used to create data cells.
Table Heading: Table heading can be defined using <th>tag. This tag will be put to replace
<td> tag, which is used to represent actual data cell. Normally you will put your top row as table
heading as shown below, otherwise you can use <th> element in any row.
Tables Backgrounds: set table background using one of the following two ways:
1) bgcolor attribute - You can set background color for whole table or just for one cell.
2) background attribute - You can set background image for whole table or just for one cell. You
can also set border color also using bordercolorattribute.
Images are very important to beautify as well as to depict many complex concepts in simple way
on your web page.
Insert Image:
insert any image in the web page by using <img>tag.
<img align="left|right|middle|top|bottom">
Attribute Values
WebTechnologies Page11
top Align the image at the top
Example:
2) Password input controls - This is also a single-line text input but it masks the character as
soon as a user enters it. They are also created using HTML <input>tag.
Input Type Password
3) Multi-line text input controls - This is used when the user is required to give details that may
belongerthanasinglesentence.Multi-lineinputcontrolsarecreatedusing HTML
<textarea> tag.
Checkboxes Controls:-
Checkboxes are used when more than one option is required to be selected. They are also
created using HTML <input> tag but type attribute is set to checkbox.
Here is an example HTML code for a form with two checkboxes:
<!DOCTYPE html>
<html>
<head>
<title>Select Box Control</title>
</head>
<body>
<form>
<select name="dropdown">
<option value="C++" selected>C++</option>
<option value="JAVA">JAVA</option>
<option value="HTML">HTML</option>
</select>
</form>
</body>
</html>
File Select boxes:- If you want to allow a user to upload a file to your web site, you will need to
use a file upload box, also known as a file select box. This is also created using the <input>
element but type attribute is set to file.
Hidden Controls:- Hidden form controls are used to hide data inside the page which later on can
be pushed to the server. This control hides inside the code and does not appear on the actual
page. For example, following hidden form is being used to keep current page number. When a
user will click next page then the value of hidden control will be sent to the web server and there
it will decide which page will be displayed next based on the passed currentpage.
Button Controls:-
There are various ways in HTML to create clickable buttons. You can also create a clickable
button using <input> tag by setting its type attribute to button. The type attribute can take the
following values:
HTML frames: These are used to divide your browser window into multiple sections where
each section can load a separate HTML document. A collection of frames in the browser window
is known as a frameset. The window is divided into frames in a similar way the tables
areorganized: into rows andcolumns.
To use frames on a page we use <frameset> tag instead of <body> tag. The <frameset>
tag defines, how to divide the window into frames. The rows attribute of <frameset> tag defines
horizontal frames and cols attribute defines vertical frames. Each frame is indicated by <frame>
tag and it defines which HTML document shall open into the frame.
CSS stands for Cascading Style Sheets
CSS describes how HTML elements are to be displayed on screen, paper, or in other media.
CSS saves a lot of work. It can control the layout of multiple web pages all at once.
CSS can be added to HTML elements in 3 ways:
➢ Inline - by using the style attribute in HTMLelements
➢ Internal - by using a <style> element in the <head>section
➢ External - by using an external CSSfile
Inline CSS
An inline CSS is used to apply a unique style to a single HTML element.
An inline CSS uses the style attribute of an HTML element.
This example sets the text color of the <h1> element to blue:
Internal CSS: An internal CSS is used to define a style for a single HTML page. An internal
CSS is defined in the <head> section of an HTML page, within a <style> element:
An external style sheet is used to define the style for many HTML pages. With an external style
sheet, you can change the look of an entire web site, by changing one file! To use an external
style sheet, add a link to it in the <head> section of the HTML page:
An external style sheet can be written in any text editor. The file must not contain any HTML
code, and must be saved with a .css extension.
Here is how the "styles.css" looks:
h1 { color:blue; }
p { color:red; }
WebTechnologies Page18
CSS Fonts: The CSS color property defines the text color to be used.
The CSS font-family property defines the font to be used.
The CSS font-size property defines the text size to be used.
CSS Border: The CSS border property defines a border around an HTML element.
CSS Padding: The CSS padding property defines a padding (space) between the text and the
border.
CSS Margin: The CSS margin property defines a margin (space) outside the border.
JavaScript:
What is JavaScript?
Java Script is one popular scripting language over internet. Scripting means a small sneak
(piece). It is always independent on otherlanguages.
JavaScript is most commonly used as a client side scripting language. This means that JavaScript
code is written into an HTML page. When a user requests an HTML page with JavaScript in it,
the script is sent to the browser and it's up to the browser to do something with it.
Difference between JavaScript and Java
JavaScript Java
Cannot live outside a Web page Can build stand-alone applications or live in a
Web page as an applet.
Doesn‘t need a compiler Requires a compiler
Knows all about your page Applets are dimly aware of your Web page.
Untyped Strongly typed
Somewhat object-oriented Object-oriented
There are no relationship between in java & java script. Java Script is a scripting language that
always dependent in HTML language. It used to css commands. It is mainly used to creating
DHTML pages & validating the data. This is called client side validations.
Why we Use JavaScript?
Using HTML we can only design a web page but you can not run any logic on web browser
like addition of two numbers, check any condition, looping statements (for, while), decision
making statement (if-else) at client side. All these are not possible using HTML So for perform
all these task at client side you need to useJavaScript.
Features of JavaScript
JavaScript is a client side technology, it is mainly used for gives client side validation, but it
have lot of features which are given below;
→Java script is object based oriented language.
→ Java script is also called light weight programming language, because Java script is
return with very simple syntax. Java script is containing executable code.
→ Java script is also called interpreted language, because script code can be executed
without preliminary compilation.
→ It Handling dates, time, onSubmit, onLoad, onClick, onMouseOver & etc.
Creating a java script: - html script tag is used to script code inside the html page.
<script> </script>
1) Language attribute:-
<script language=―JavaScript‖>
2) Type attribute: - It indicates MIME (multi purpose internet mail extension) type of scripting
code. It sets to an alpha-numeric MIME type of code.
Location of script or placing the script: - Script code can be placed in both head & body
section of html page.
<html> <html>
<head> <head>
<script type=―text/JavaScript‖>
</head>Scr
iptcodehere <body>
</script> <script type= ―text /JavaScript‖>
</head> Script codehere
<body> </script>
</body> </body>
</html> </html>
Scripting in both head & body section: - we can create unlimited number of scripts inside the
same page. So we can locate multiple scripts in both head & body section of page.
Ex: - <html>
<head>
<script type=―text / JavaScript‖>
Script code here
</script>
</head>
<body>
<script type=―text / JavaScript‖>
Script code here
</script>
</body>
</html>
Program: -
<html>
<head>
<script language="JavaScript">
document.write("hai my name is Kalpana")
</script>
</head>
<body text="red">
<marquee>
<script language="JavaScript">
document.write("hai my name is Sunil Kumar Reddy")
</script></marquee>
</body>
</html>
O/P: - hai my name is Kalpana
Ex: -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional // EN">
<HTML>
<HEAD>
<script language="JavaScript">
function myf( )
{
document.write("Hai Kalpana")
}
</script>
</HEAD>
<BODY>
to execute script code:
<input type="button" value="click me" onclick="myf( )">
To execute script code:
<input type="button" value="touch me" onmouseover="myf( )">
</BODY>
</HTML>
O/P: - to executescriptcode: To execute scriptcode:
Creating external script: - some times you might want to run same script on several pages
without having to write the script on each page. To simplify this, write external script & save .js
extension. To use external script specify .js file in src attribute of script tag.
save: - external.js
document.write("this is external script code 1 "+"<br>");
document.write("this is external script code 2 "+"<br>");
document.write("this is external script code 3 "+"<br>");
document.write("this is external script code 4 ");
<HTML><BODY>
<script language="JavaScript">
document.write("this is document code 1 "+"<br>");
document.write("this is document code 2 "+"<br>");
</script>
<script src="external.js">
</script>
</BODY>
</HTML>
JavaScript syntax rules: - JavaScript is case sensitive language. In this upper case lower
case letters are differentiated (not same).
Ex:- a=20;
A=20;
Those the variable name „a‟ is different from the variable named „A‟.
Ex: - myf( ) // correct
myF( ) // incorrect
→; is optional in general JavaScript.
Ex:- a=20 //valid
b=30 //valid
A=10; b=40; // valid
However it is required when you put multiple statements in the same line.
→ JavaScript ignore white space. In java script white space, tag space & empty lines are not
preserved.
→ To display special symbols we use \.
Comment lines: - comments lines are not executable.
Declaring variable: - variable is a memory location where data can be stored. In java script
variables with any type of data are declared by using the keyword ‗var‘. All keywords are small
letters only.
vara; a=20;
varstr; str= “Sunil”;
varc; c=‟a‟;
vard; d=30.7;
But the keyword is not mandatory when declare of the variable.
c; → not valid. In this solution var keyword must be declared.
→During the script, we can change value of variable as well as type of value of variable.
Ex: -
a=20;
a=30.7;
JavaScript functions: - in java script functions are created with the keyword ‗function‘ as
shownbelow
Ex: -
<HTML> </HEAD>
<HEAD> <BODY>
<TITLE> Function direct call</TITLE> <script>
<script language="JavaScript"> var r=add(30,60)
function add(x,y) document.write("addition is :"+r);
{ </script>
z=x+y </BODY>
return z </HTML>
}
O/P: - addition is :90
</script>
2→ to add dynamical effects, java script provide a list of events that call function
dynamically. Hare each event is one attribute that always specified in html tags.
attrname=”attrval”
eventName=”funname( )”
Ex: -
EVENTHANDLERS: Events are not casesensitive.
Java script events: -
Attribute The event occurs when…
onclick mouse click an object
ondblclick mouse double clicks
onmouseover a mouse cursor on touch here
onmousedown a mouse button ispressed
onmousemove the mouse is moved
onmouseout the mouse is moved out anelement
onmouseup a mouse button isreleased
onkeydown a keyboard key ispressed
onkeypress a keyboard key is pressed or held down
onkeyup a keyboard key isreleased
onfocus an elements getfocus
onblur an element losesfocus
onchange the content of a fieldchange
onselect text isselected
onload a page or an image is finishedloading
onunload the user exist thepage
onerror an error occurs when loading a document or animage
onabort loading an image isinterrupted
onresize a window or frame is resized
onreset the reset button is pressed
onsubmit the submit button isclicked
Ex: -
Program: -
<HTML>
<HEAD>
<TITLE> display student name </TITLE>
<script language="JavaScript">
function disp( )
{
// access from data
var name=window.document.student.sname.value
// (or) var name=window.document.getElementById("snameid").value
//checking name
if(name=""||!isNaN(name)||!isNaN(name.charAt(0)))
window.alert("sname you entered isinvalid")
else
document.write("sname you have entered is : "+name);
}
</script>
</HEAD>
<BODY>
<form name="student">
Enter Student name:
<input type="text" name="sname"id="snameid" value="enter" onblur="disp( )">
</form>
</BODY>
</HTML>
O/P: -
Enter Studentname:
Enter Studentname:
sname you have entered is : true
Popup boxes: - popup (arises) box is a small window that always shown before opening the
page. The purpose of popup box is to write message, accept some thing from user. Java script
provides 3 types of popup boxes. They are 1) alert 2) Confirm. 3) Prompt.
O/P: -
Result is: 60
2) confirm popupbox:-
This is useful to verify or accept some thing from user. It is created by confirm method of
window object as shown below.
When the confirm box pop‘s up, user must click either ok or cancel buttons to proceed. If user
clicks ok button it returns the boolean valve true. If user clicks cancel button, it returns the
boolean value false.
Ex: - document.write("result is :"+c)
<HTML> }
<HEAD> else
<TITLE> Confirm </TITLE> {
<script> document.write("you clicked cancel button")
function sub( ) }
{ }
a=50 </script>
b=45 </HEAD>
c=a-b <BODY onload="sub( )">
x=window.confirm("Do you want to see to see the o/p in pop up box:
subtraction of numbers") </BODY>
if(x==true) </HTML>
{
O/P: -
WebTechnologies Page28
to see the o/p in pop up box:
result is :5
3) Prompt popup box:- It is useful to accept data from keyboard at runtime. Prompt box is
created by prompt method of windowobject.
window.prompt (“message”, “default text”);
When prompt dialog box arises user will have to click either ok button or cancel button after
entering input data to proceed. If user click ok button it will return input value. If user click
cancel button the value ―null‖ will be returned.
Ex: -
<HTML> This method is secure because it will work
<HEAD>
<TITLE> Prompt </TITLE>
<script>
function fact( )
{
var b=window.prompt("enter +ve integer
:","enter here")
var c=parseInt(b)
a=1
for(i=c;i>=1;i--)
O/P: -
FORM VALIDATION:
When we create forms, providing form
validation is useful to ensure that your
customers enter valid and complete data. For
example, you may want to ensure that
someone inserts a valid e-mail address into a
text box, or perhaps you want to ensure that
someone fills in certain fields.
XML - XML stands for Extensible Mark-up Language, developed by W3C in 1996. It is a
text-based mark-up language derived from Standard Generalized Mark-up Language
(SGML). XML 1.0 was officially adopted as a W3C recommendation in 1998. XML was
designed to carry data, not to display data. XML is designed to be self-descriptive. XML is a
subset of SGML that can define your own tags. A Meta Language and tags describe the
content. XML Supports CSS, XSL, DOM. XML does not qualify to be a programming
language as it does not performs any computation or algorithms. It is usually stored in a
simple text file and is processed by special software that is capable of interpretingXML.
The Difference between XML and HTML
1. HTML is about displaying information, where asXML is about carrying information. In
other words, XML was created to structure, store, and transport information. HTML was
designed to display thedata.
2. Using XML, we can create own tags where as in HTML it is not possible instead it offers
several built intags.
3. XML is platform independent neutral and languageindependent.
4. XML tags and attribute names are case-sensitive where as in HTML it isnot.
5. XML attribute values must be single or double quoted where as in HTML it is not
compulsory.
6. XML elements must be properlynested.
7. All XML elements must have a closingtag.
Well Formed XML Documents
A "Well Formed" XML document must have the following correct XML syntax:
- XML documents must have a rootelement
- XML elements must have a closing tag(start tag must have matching endtag).
- XML tags are casesensitive
- XML elements must be properly nestedEx:<one><two>Hello</two></one>
- XML attribute values must bequoted
XML with correct syntax is "Well Formed" XML. XML validated against a DTD is "Valid"
XML.
What is Markup?
XML is a markup language that defines set of rules for encoding documents in a format that
is both human-readable andmachine-readable.
Example for XML Document
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!—xml declaration-->
<note>
<to>MRCET</to>
<from>MRGI</from>
<heading>KALPANA</heading>
<body>Hello, world! </body>
</note>
• Xml document begins with XML declaration statement: <? xml version="1.0"
encoding="ISO-8859-1"?>.
• The next line describes the root element of the document:<note>.
• This element is "the parent" of all otherelements.
• The next 4 lines describe 4child elements of the root: to, from, heading, and body. And
finally the last line defines the end of the root element : </note>.
• The XML declaration has no closing tag i.e.</?xml>
• The default standalone value is set to no. Setting it to yes tells the processor there are no
external declarations (DTD) required for parsing the document. The file name extension
used for xml program is.xml.
Valid XML document
If an XML document is well-formed and has an associated Document Type Declaration
(DTD), then it is said to be a valid XML document. We will study more about DTD in the
chapter XML - DTDs.
XML DTD
Document Type Definition purpose is to define the structure of an XML document. It defines
the structure with a list of defined elements in the xml document. Using DTD we can specify
the various elements types, attributes and their relationship with one another. Basically DTD
is used to specify the set of rules for structuring data in any XML file.
Why use a DTD?
XML provides an application independent way of sharing data. With a DTD, independent
groups of people can agree to use a common DTD for interchanging data. Your application
can use a standard DTD to verify that data that you receive from the outside world is valid.
You can also use a DTD to verify your own data.
DTD - XML building blocks
Various building blocks of XML are-
1. Elements: The basic entity is element. The elements are used for defining the tags. The
elements typically consist of opening and closing tag. Mostly only one element is used to
define a singletag.
Syntax1: <!ELEMENT element-name (element-content)>
Syntax 2: <!ELEMENT element-name (#CDATA)>
#CDATA means the element contains character data that is not supposed to be parsed by a
parser. or
Syntax 3: <!ELEMENT element-name (#PCDATA)>
#PCDATA means that the element contains data that IS going to be parsed by a parser. or
Syntax 4: <!ELEMENT element-name (ANY)>
The keyword ANY declares an element with any content.
Example:
<!ELEMENT note (#PCDATA)>
Elements with children (sequences)
Elements with one or more children are defined with the name of the children elements inside
the parentheses:
When children are declared in a sequence separated by commas, the children must appear in
the same sequence in the document. In a full declaration, the children must also be declared,
and the children can also have children. The full declaration of the note document will be:
2. Tags
Tags are used to markup elements. A starting tag like <element_name> mark up the
beginning of an element, and an ending tag like </element_name> mark up the end of an
element.
Examples:
A body element: <body>body text in between</body>.
A message element: <message>some message in between</message>
3. Attribute: The attributes are generally used to specify the values of the element. These are
specified within the double quotes. Ex: <flagtype=‖true‖>
4. Entities
Entities as variables used to define common text. Entity references are references to entities.
Most of you will known the HTML entity reference: " " that is used to insert an extra
space in an HTML document. Entities are expanded when a document is parsed by an XML
parser.
The following entities are predefined in XML:
< (<), >(>), &(&), "(") and '(').
5. CDATA: It stands for character data. CDATA is text that will NOT be parsed by a
parser. Tags inside the text will NOT be treated as markup and entities will not beexpanded.
6. PCDATA: It stands for Parsed Character Data(i.e., text). Any parsed character data should
not contain the markup characters. The markup characters are < or > or &. If we want to use
these characters then make use of < , > or &. Think of character data as the text
found between the start tag and the end tag of an XML element. PCDATA is text that will be
parsed by a parser. Tags inside the text will be treated as markup and entities will be
expanded.
<!DOCTYPE note
[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
Where PCDATA refers parsed character data. In the above xml document the elements to,
from, heading, body carries some text, so that, these elements are declared to carry text in
DTD file.
This definition file is stored with .dtd extension.
DTD identifier is an identifier for the document type definition, which may be the path to a
file on the system or URL to a file on the internet. If the DTD is pointing to external path, it
is called ExternalSubset.
The square brackets [ ] enclose an optional list of entity declarations called Internal Subset.
Types of DTD:
1. InternalDTD
2. ExternalDTD
1. Internal DTD
A DTD is referred to as an internal DTD if elements are declared within the XML files. To
refer it as internal DTD, standalone attribute in XML declaration must be set to yes. This
means, the declaration works independent of external source.
Syntax:
The syntax of internal DTD is as shown:
<!DOCTYPE root-element [element-declarations]>
Where root-element is the name of root element and element-declarations is where you
declare the elements.
Example:
Following is a simple example of internal DTD:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE address [
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
]>
<address>
<name>Kalpana</name>
<company>MRCET</company>
<phone>(040) 123-4567</phone>
</address>
Let us go through the above code:
Start Declaration- Begin the XML declaration with following statement <?xml version="1.0"
encoding="UTF-8" standalone="yes" ?>
DTD- Immediately after the XML header, the document type declaration follows, commonly
referred to as the DOCTYPE:
<!DOCTYPE address [
The DOCTYPE declaration has an exclamation mark (!) at the start of the element name. The
DOCTYPE informs the parser that a DTD is associated with this XML document.
DTD Body- The DOCTYPE declaration is followed by body of the DTD, where you declare
elements, attributes, entities, and notations:
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>
Several elements are declared here that make up the vocabulary of the <name> document.
<!ELEMENT name (#PCDATA)> defines the element name to be of type "#PCDATA".
Here #PCDATA means parse-able text data. End Declaration - Finally, the declaration
section of the DTD is closed using a closing bracket and a closing angle bracket (]>). This
effectively ends the definition, and thereafter, the XML document followsimmediately.
Rules
✓ The document type declaration must appear at the start of the document (preceded only by
the XML header) — it is not permitted anywhere else within thedocument.
✓ Similar to the DOCTYPE declaration, the element declarations must start with an
exclamationmark.
✓ The Name in the document type declaration must match the element type of the root
element.
External DTD
In external DTD elements are declared outside the XML file. They are accessed by
specifying the system attributes which may be either the legal .dtd file or a valid URL. To
refer it as external DTD, standalone attribute in the XML declaration must be set as no. This
means, declaration includes information from the externalsource.
Syntax Following is the syntax for external DTD:
<!DOCTYPE root-element SYSTEM "file-name">
where file-name is the file with .dtd extension.
Example The following example shows external DTDusage:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
<name>Kalpana</name>
<company>MRCET</company>
<phone>(040) 123-4567</phone>
</address>
The content of the DTD file address.dtd are as shown:
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
Types
You can refer to an external DTD by using either system identifiers or public identifiers.
SYSTEM IDENTIFIERS
A system identifier enables you to specify the location of an external file containing DTD
declarations. Syntax is as follows:
<!DOCTYPE name SYSTEM "address.dtd" [...]>
As you can see, it contains keyword SYSTEM and a URI reference pointing to the location of
the document.
PUBLIC IDENTIFIERS
Public identifiers provide a mechanism to locate DTD resources and are written as below:
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
As you can see, it begins with keyword PUBLIC, followed by a specialized identifier. Public
identifiers are used to identify an entry in a catalog. Public identifiers can follow any format;
however, a commonly used format is called Formal Public Identifiers, or FPIs.
XML Schemas
• XML Schema is commonly known as XML Schema Definition (XSD). It is used to
describe and validate the structure and the content of XML data. XML schema defines the
elements, attributes and data types. Schema element supports Namespaces. It is similar to
a database schema that describes the data in a database. XSD extension is“.xsd”.
• This can be used as an alternative to XML DTD. The XML schema became the W#C
recommendation in2001.
• XML schema defines elements, attributes, element having child elements, order of child
elements. It also defines fixed and default values of elements andattributes.
• XML schema also allows the developer to us datatypes.
SCHEMA STRUCTURE
The Schema Element
<xs: schema xmlns: xs="http://www.w3.org/2001/XMLSchema">
Element definitions
As we saw in the chapter XML - Elements, elements are the building blocks of XML
document. An element can be defined within an XSD as follows:
<xs:element name="x" type="y"/>
Data types:
These can be used to specify the type of data stored in an Element.
• String (xs:string)
• Date (xs:date or xs:time)
• Numeric (xs:integeror xs:decimal)
• Boolean (xs:boolean)
EX: Sample.xsd
<?xml version=‖1.0‖ encoading=‖UTF-8‖?>
<xs:schema xmlns:xs=http://www.w3.org/XMLSchema>
<xs:element name="sname‖ type=‖xs:string"/>
/* <xs:element name="dob” type=”xs:date"/>
<xs:element name="dobtime” type=”xs:time"/>
<xs:element name="marks” type=”xs:integer"/>
<xs:element name="avg” type=”xs:decimal"/>
<xs:element name="flag” type=”xs:boolean"/>*/
</xs:schema>
Sample.xml:
<?xml version=‖1.0‖ encoading=‖UTF-8‖?>
<sname xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="sample.xsd">
Kalpana /*yyyy-mm-dd 23:14:34 600 92.5 true/false */
</sname>
Definition Types
You can define XML schema elements in following ways:
Simple Type - Simple type element is used only in the context of the text. Some of
predefined simple types are: xs:integer, xs:boolean, xs:string, xs:date. Forexample:
<xs:element name="phone_number" type="xs:int" />
<phone>9876543210</phone>
Default and Fixed Values for Simple Elements
In the following example the default value is "red":
<xs:element name="color" type="xs:string" default="red"/>
In the following example the fixed value is "red":
<xs:element name="color" type="xs:string" fixed="red"/>
Complex Type - A complex type is a container for other element definitions. This allows you
to specify which child elements an element can contain and to provide some structure within
your XML documents. For example:
<xs:element name="Address">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="company" type="xs:string"/>
<xs:element name="phone" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
In the above example, Address element consists of child elements. This is a container for
other <xs:element> definitions, that allows to build a simple hierarchy of elements in the
XML document.
Global Types - With global type, you can define a single type in your document, which can
be used by all other references. For example, suppose you want to generalize the person and
company for different addresses of the company. In such case, you can define a general type
as below:
<xs:element name="AddressType">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="company" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Now let us use this type in our example as below:
<xs:element name="Address1">
<xs:complexType>
<xs:sequence>
<xs:element name="address" type="AddressType" />
<xs:element name="phone1" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Address2">
<xs:complexType>
<xs:sequence>
<xs:element name="address" type="AddressType" />
<xs:element name="phone2" type="xs:int" />
</xs:sequence></xs:complexType></xs:element>
Instead of having to define the name and the company twice (once for Address1 and once for
Address2), we now have a single definition. This makes maintenance simpler, i.e., if you
decide to add "Postcode" elements to the address, you need to add them at just one place.
Attributes
Simple elements cannot have attributes. If an element has attributes, it is considered to be of a
complex type. But the attribute itself is always declared as a simple type. Attributes in XSD
provide extra information within an element. Attributes have name and type property as
shown below:
<xs:attribute name="x" type="y"/>
Ex: <lastname lang="EN">Smith</lastname>
<xs:attribute name="lang" type="xs:string"/>
Default and Fixed Values for Attributes
<xs:attribute name="lang" type="xs:string" default="EN"/>
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
Optional and Required Attributes
Attributes are optional by default. To specify that the attribute is required, use the "use"
attribute:
<xs:attribute name="lang" type="xs:string" use="required"/>
Restrictions on Content
When an XML element or attribute has a data type defined, it puts restrictions on the
element's or attribute's content. If an XML element is of type "xs:date" and contains a string
like "Hello World", the element will not validate.
Restrictions on Values:
The value of age cannot be lower than 0 or greater than 120:
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType></xs:element>
Restrictions on a Set of Values
The example below defines an element called "car" with a restriction. The only acceptable
values are: Audi, Golf, BMW:
<xs:element name="car">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Restrictions on Length
To limit the length of a value in an element, we would use the length, maxLength, and
minLength constraints. The value must be exactly eight characters:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:lengthvalue="8"/> [<xs:minLengthvalue="5"/> <xs:maxLengthvalue="8"/>]
</xs:restriction></xs:simpleType></xs:element>
XSD Indicators
We can control HOW elements are to be used in documents with indicators.
Indicators: There are seven indicators
Order indicators:
• All
• Choice
• Sequence
Occurrence indicators:
• maxOccurs
• minOccurs
Group indicators:
• Groupname
• attributeGroupname
→Order Indicators
Order indicators are used to define the order of the elements.
All Indicator
The <all> indicator specifies that the child elements can appear in any order, and that each
child element must occur only once:
<xs:element name="person">
<xs:complexType>
<xs:all>
<xs:element name="firstname"type="xs:string"/>
<xs:element name="lastname"type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
Note: When using the <all> indicator you can set the <minOccurs> indicator to 0 or 1 and the
<maxOccurs> indicator can only be set to 1 (the <minOccurs> and <maxOccurs> are
described later).
Choice Indicator
The <choice> indicator specifies that either one child element or another can occur:
<xs:element name="person">
<xs:complexType>
<xs:choice>
<xs:element name="employee" type="employee"/>
<xs:element name="member" type="member"/>
</xs:choice></xs:complexType> </xs:element>
Sequence Indicator
The <sequence> indicator specifies that the child elements must appear in a specific order:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence></xs:complexType></xs:element>
→Occurrence Indicators
Occurrence indicators are used to define how often an element can occur.
Note: For all "Order" and "Group" indicators (any, all, choice, sequence, group name, and group
reference) the default value for maxOccurs and minOccurs is 1.
maxOccurs Indicator
The <maxOccurs> indicator specifies the maximum number of times an element can occur:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
</xs:element>
minOccurs Indicator
The <minOccurs> indicator specifies the minimum number of times an element can occur:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Tip: To allow an element to appear an unlimited number of times, use the
maxOccurs="unbounded" statement:
EX: An XML file called "Myfamily.xml":
<?xml version="1.0" encoding="UTF-8"?>
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">
<person>
<full_name>KALPANA</full_name>
<child_name>mrcet</child_name>
</person>
<person>
<full_name>Tove Refsnes</full_name>
<child_name>Hege</child_name>
<child_name>Stale</child_name>
<child_name>Jim</child_name>
<child_name>Borge</child_name>
</person>
<person>
<full_name>Stale Refsnes</full_name>
</person>
</persons>
The XML file above contains a root element named "persons". Inside this root element we
have defined three "person" elements. Each "person" element must contain a "full_name"
element and it can contain up to five "child_name" elements.
Here is the schema file "family.xsd":
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs=http://www.w3.org/2001/XMLSchemaelementFor
mDefault="qualified">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string" minOccurs="0" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
→Group Indicators: Group indicators are used to define related sets of elements.
Element Groups
Element groups are defined with the group declaration, like this:
<xs:group name="groupname">
...
</xs:group>
You must define an all, choice, or sequence element inside the group declaration. The
following example defines a group named "persongroup", that defines a group of elements
that must occur in an exact sequence:
<xs:group name="persongroup">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
</xs:sequence>
</xs:group>
After you have defined a group, you can reference it in another definition, like this:
<xs:element name="person" type="personinfo"/>
<xs:complexType name="personinfo">
<xs:sequence>
<xs:group ref="persongroup"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Attribute Groups
Attribute groups are defined with the attributeGroup declaration, like this:
<xs:attributeGroup name="groupname">
...
</xs:attributeGroup>
The following example defines an attribute group named "personattrgroup":
<xs:attributeGroup name="personattrgroup">
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
After you have defined an attribute group, you can reference it in another definition, like this:
<xs:element name="person">
<xs:complexType>
<xs:attributeGroup ref="personattrgroup"/></xs:complexType></xs:element>
The XML DOM, on the other hand, also provides an API that allows a developer to add, edit,
move, or remove nodes in the tree at any point in order to create an application. A DOM
parser creates a tree structure in memory from the input document and then waits for requests
from client. A DOM parser always serves the client application with the entire document no
matter how much is actually needed by the client. With DOM parser, method calls in client
application have to be explicit and forms a kind of chained method calls.
Document Object Model is for defining the standard for accessing and manipulating XML
documents. XML DOM is used for
• Loading the xmldocument
• Accessing the xmldocument
• Deleting the elements of xmldocument
• Changing the elements of xml document
According to the DOM, everything in an XML document is a node. It considers
• The entire document is a documentnode
• Every XML element is an elementnode
• The text in the XML elements are textnodes
• Every attribute is an attributenode
• Comments are comment nodes
lastChild
H1 P H2 P
previousSibling previousSibling previousSibling
DOM Document Object
✓ There are12 types of nodes in a DOM Documentobject
DOM or SAX
DOM
- Suitable for smalldocuments
- Easily modifydocument
- Memory intensive;Load the complete XMLdocument
SAX
- Suitable for large documents; saves significant amounts ofmemory
- Only traverse document once, start toend
- Eventdriven
- Limited standardfunctions.
-
Loading an XML file:one.html
<html><body>
<script type=‖text/javascript‖>
try
{
xmlDocument=new ActiveXObject(―Microsoft.XMLDOM‖);
}
catch(e)
{
try {
xmlDocument=document.implementation.createDocument("","",null);
}
catch(e){alert(e.message)}
}
try
{
xmlDocument.async=false;
xmlDocument.load(―faculty.xml‖);
document.write(―XML document student is loaded‖);
}
catch(e){alert(e.message)}
</script>
</body></html>
faculty.xml:
<?xml version=‖1.0‖?>
< faculty >
<eno>30</eno>
<personal_inf>
<name>Kalpana</name>
<address>Hyd</address>
<phone>9959967192</phone>
</personal_inf>
<dept>CSE</dept>
<col>MRCET</col>
<group>MRGI</group>
</faculty>
OUTPUT: XML document student is loaded
ActiveXObject: It creates empty xml document object.
Use separate function for Loading an XML document: two.html
<html><head>
<script type=‖text/javascript‖>
Function My_function(doc_file)
{
try
{
xmlDocument=new ActiveXObject(―Microsoft.XMLDOM‖);
}
catch(e)
{
try
{
xmlDocument=document.implementation.createDocument("","",null);
}
catch(e){alert(e.message)}
}
try
{
xmlDocument.async=false;
xmlDocument.load(―faculty.xml‖);
return(xmlDocument);
}
catch(e){alert(e.message)}
return(null);
}
</script>
</head>
<body>
<script type=‖text/javascript‖>
xmlDoc=‖My_function(―faculty.xml‖);
document.write(―XML document student is loaded‖);
</script>
</body></html>
OUTPUT: XML document student is loaded
Use of properties and methods: three.html
<html><head>
<script type=‖text/javascript‖ src=‖my_function_file.js‖></script>
</head><body>
<script type=‖text/javascript‖>
xmlDocument=My_function(“faculty.xml”);
document.write(―XMLdocumentfacultyisloadedandcontentofthisfileis:‖);
document.write(―<br>‖);
document.write(―ENO:‖+
xmlDocument.getElementsByTagName(―eno‖)[0].childNodes[0].nodeValue);
document.write(―<br>‖);
document.write(―Name:‖+
xmlDocument.getElementsByTagName(―name‖)[0].childNodes[0].nodeValue);
document.write(―<br>‖);
document.write(―ADDRESS:‖+
xmlDocument.getElementsByTagName(―address‖)[0].childNodes[0].nodeValue);
document.write(―<br>‖);
document.write(―PHONE:‖+
xmlDocument.getElementsByTagName(―phone‖)[0].childNodes[0].nodeValue);
document.write(―<br>‖);
document.write(―DEPARTMENT:‖+
xmlDocument.getElementsByTagName(―dept‖)[0].childNodes[0].nodeValue);
document.write(―<br>‖);
document.write(―COLLEGE:‖+
xmlDocument.getElementsByTagName(―col‖)[0].childNodes[0].nodeValue);
document.write(―<br>‖);
document.write(―GROUP:‖+
xmlDocument.getElementsByTagName(―group‖)[0].childNodes[0].nodeValue);
</script>
</body>
</html>
OUTPUT:
XML document faculty is loaded and content of this file is
We can access any XML element using the index value: four.html
<html><head>
<script type=‖text/javascript‖ src=‖my_function_file.js‖></script>
</head><body>
<script
type=‖text/javascript‖>xmlDoc=My_function(“faculty
1.xml”); value=xmlDoc.
getElementsByTagName(―name‖);
document.write(―value[0].childNodes[0].nodeValue‖);
</script></body></html>
OUTPUT: Kalpana
XHTML: eXtensible Hypertext Markup Language
Hypertext is simply a piece of text that works as a link. Markup language is a language of
writing layout information within documents. The XHTML recommended by W3C. Basically an
XHTML document is a plain text file and it is very much similar to HTML. It contains rich text,
means text with tags. The extension to this program should b either html or htm. These programs
can be opened in some web browsers and the corresponding web page can be viewed.
HTML Vs XHTML
HTML XHTML
1. The HTML tags are case insensitive. 1. The XHTML tags are case sensitive.
EX:<BoDy> -------- </body> EX:<body>--------- </body>
2. We can omit the closing tags sometimes. 2. For every tag there must be a closing tag.
EX: <h1>---------</h1>or<h1 ------------ />
3. The attribute values not always 3. The attribute values are must be quoted.
necessary to quote.
4. In HTML there are some implicit 4. In XHTML the attribute values must be
attribute values. specified explicitly.
5. In HTML even if we do not follow the 5. In XHTML the nesting rules must be
nesting rules strictly it does not cause much strictly followed. These nesting rules are-
difference. - A form element cannot contain another form
element.
-an anchor element does not contain another
form element
-List element cannot be nested in the list
element
-If there are two nested elements then the
inner element must be enclosed first before
closing the outerelement
-Text element cannot be directly nested in
form element
The relationship between SGML, XML, HTML and XHTML is as given below
Standard structure: DOCTYPE, html, head and body
The doctype is specified by the DTD. The XHTML syntax rules are specified by the file
xhtml11.dtd file.There are 3 types of DTDs.
1. XHTML 1.0 Strict: clean markupcode
2. XHTML 1.0 Transitional: Use some html features in the existing XHTMLdocument.
3. XHTML 1.0 Frameset: Use of Frames in an XHTMLdocument.
EX:
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
<html xmlns="http://www.w3c.org/1999/xhtml">
<head>
<title>Sample XHTML Document</title>
</head>
<body bgcolor=‖#FF0000‖>
<basefont face=‖arial‖ size=‖14‖ color=‖white‖>
<h1>MRCET</h1>
<h2>MRCET</h2>
<h3>MRCET</h3>
<h4> KALPANA</h4>
<h5> KALPANA</h5>
<h6>KALPANA</h6>
<p><center> XHTML syntax rules are specified by the file xhtml11.dtd file. </center></p>
<divalign="right"><b>XHTMLstandardsforeXtensibleHypertextMarkupLanguage.</b>XHT
ML syntax rules are specified by the file xhtml11.dtdfile.</div>
<pre><b>XHTML standards for <i>eXtensible Hypertext Markup
Language.</i></b>XHTML syntax rules are specified by the file
xhtml11.dtdfile.</pre>
</basefont>
</body>
</html>
DOM in JAVA
DOM interfaces
The DOM defines several Java interfaces. Here are the most common interfaces:
• Node - The base datatype of theDOM.
• Element - The vast majority of the objects you'll deal with areElements.
• Attr Represents an attribute of anelement.
• Text The actual content of an Element orAttr.
• Document Represents the entire XML document. A Document object is often referred to
as a DOMtree.
Common DOM methods
When you are working with the DOM, there are several methods you'll use often:
• Document.getDocumentElement() - Returns the root element of thedocument.
• Node.getFirstChild() - Returns the first child of a givenNode.
• Node.getLastChild() - Returns the last child of a givenNode.
• Node.getNextSibling() - These methods return the next sibling of a givenNode.
• Node.getPreviousSibling() - These methods return the previous sibling of a givenNode.
• Node.getAttribute(attrName) - For a given Node, returns the attribute with the
requestedname.
Steps to Using DOM
Following are the steps used while parsing a document using DOM Parser.
• Import XML-relatedpackages.
• Create aDocumentBuilder
• Create a Document from a file orstream
• Extract the rootelement
• Examineattributes
• Examinesub-elements
DOM
SAX:
SAX (the Simple API for XML) is an event-based parser for xml documents. Unlike a DOM
parser, a SAX parser creates no parse tree. SAX is a streaming interface for XML, which means
that applications using SAX receive event notifications about the XML document being
processed an element, and attribute, at a time in sequential order starting at the top of the
document, and ending with the closing of the ROOT element.
• Reads an XML document from top to bottom, recognizing the tokens that make up a
well-formed XMLdocument
• Tokens are processed in the same order that they appear in thedocument
• Reports the application program the nature of tokens that the parser has encountered as
theyoccur
• The application program provides an "event" handler that must be registered with the
parser
• As the tokens are identified, callback methods in the handler are invoked with the
relevantinformation
When to use?
You should use a SAX parser when:
• You can process the XML document in a linear fashion from the topdown
• The document is not deeplynested
• You are processing a very large XML document whose DOM tree would consume too
much memory.Typical DOM implementations use ten bytes of memory to represent one
byte ofXML
• The problem to be solved involves only part of the XMLdocument
• Data is available as soon as it is seen by the parser, so SAX works well for an XML
document that arrives over astream
Disadvantages of SAX
• We have no random access to an XML document since it is processed in a forward-only
manner
• If you need to keep track of data the parser has seen or change the order of items, you
must write the code and store the data on yourown
• The data is broken into pieces and clients never have all the information as a whole
unless they create their own datastructure
The kinds of events are:
• The start of the document isencountered
• The end of the document isencountered
• The start tag of an element isencountered
• The end tag of an element isencountered
• Character data isencountered
• A processing instruction isencountered
Scanning the XML file from start to end, each event invokes a corresponding callback method
that the programmer writes.
SAX packages
javax.xml.parsers:
org.xml.sax: Describing few interfaces forparsing
SAX classes
• SAXParser Defines the API that wraps an XMLReader implementationclass
• SAXParserFactoryDefinesafactoryAPIthatenablesapplicationstoconfigureand
obtain a SAX based parser to parse XMLdocuments
• ContentHandler Receive notification of the logical content of adocument.
• DTDHandler Receive notification of basic DTD-relatedevents.
• EntityResolver Basic interface for resolvingentities.
• ErrorHandler Basic interface for SAX errorhandlers.
• DefaultHandler Default base class for SAX eventhandlers.
SAX parser methods
StartDocument() and endDocument() – methods called at the start and end of an XML
document.
StartElement() and endElement() – methods called at the start and end of a document
element.
Characters() – method called with the text contents in between the start and end tags of
an XML document element.
ContentHandler Interface
This interface specifies the callback methods that the SAX parser uses to notify an application
program of the components of the XML document that it has seen.
• void startDocument() - Called at the beginning of adocument.
• void endDocument() - Called at the end of adocument.
• void startElement(String uri, String localName, String qName, Attributes atts) -
Called at the beginning of anelement.
• void endElement(String uri, String localName,String qName) - Called at the end of
anelement.
• void characters(char[] ch, int start, int length) - Called when character data is
encountered.
• void ignorableWhitespace( char[] ch, int start, int length) - Called when a DTD is
present and ignorable whitespace isencountered.
• void processingInstruction(String target, String data) - Called when a processing
instruction isrecognized.
• void setDocumentLocator(Locator locator)) - Provides a Locator that can be used to
identify positions in thedocument.
• void skippedEntity(String name) - Called when an unresolved entity isencountered.
• void startPrefixMapping(String prefix, String uri) - Called when a new namespace
mapping isdefined.
• void endPrefixMapping(String prefix) - Called when a namespace definition ends its
scope.
Attributes Interface
This interface specifies methods for processing the attributes connected to an element.
• int getLength() - Returns number of attributes,etc.
PHP INTRODUCTION
• PHP is a recursive acronym for "PHP: Hypertext Preprocessor".
• PHP is a server side scripting language that is embedded in HTML. PHP scripts are executed
on theserver
• It is used to manage dynamic content, databases, session tracking, even build entire e-
commercesites.
• PHP supports many databases (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic
ODBC, Microsoft SQL Server ,etc.)
• PHP is an open sourcesoftware.
• PHP is pleasingly zippy in its execution, especially when compiled as an Apache module on the
Unix side. The MySQL server, once started, executes even very complex queries with huge
result sets in record-settingtime.
• PHP supports a large number of major protocols such as POP3, IMAP, andLDAP.
• PHP is forgiving: PHP language tries to be as forgiving aspossible.
• PHP Syntax isC-Like.
Common uses of PHP:
PHP performs system functions, i.e. from files on a system it can create, open, read, write, and
close them. The other uses of PHP are:
• PHP can handle forms, i.e. gather data from files, save data to a file, thru email you can send
data, return data to theuser.
• You add, delete, and modify elements within your database thruPHP.
• Access cookies variables and setcookies.
• Using PHP, you can restrict users to access some pages of yourwebsite.
• It can encryptdata.
Characteristics of PHP:
• Simplicity
• Efficiency
• Security
• Flexibility
• Familiarity
•
All PHP code must be included inside one of the three special markup tags are recognized by the
PHP Parser.
Most common tag is the <?php...?>
SYNTAX OVERVIEW:
Canonical PHP tags The most universally effective PHP tag style is:
<?php...?>
Short-open (SGML-style) tags Short or short-open tags look like this:
<?...?>
HTML script tags HTML script tags look like this:
<script language="PHP">...</script>
PHP - VARIABLE TYPES
The main way to store information in the middle of a PHP program is by using a variable. Here
are the most important things to know about variables in PHP.
• A variable is used to storeinformation.
• All variables in PHP are denoted with a leading dollar sign($).
• The value of a variable is the value of its most recentassignment.
• Variables are assigned with the = operator, with the variable on the left-hand side and the
expression to be evaluated on theright.
• Variables can, but do not need, to be declared beforeassignment.
• Variables used before they are assigned have defaultvalues.
• PHP does a good job of automatically converting types from one to another when
necessary.
• PHP variables arePerl-like.
Syntax: $var_name = value;
Eg: creating a variable containing a string, and a variable containing a number:
<?php
$txt="HelloWorld!";
$x=16;
?>
PHP is a Loosely Typed Language:
✓ In PHP, a variable does not need to be declared before adding a value toit.
✓ You do not have to tell PHP which data type the variableis
✓ PHP automatically converts the variable to the correct data type, depending on itsvalue.
Naming Rules for Variables
✓ A variable name must start with a letter or an underscore"_"
✓ A variable name can only contain alpha-numeric characters and underscores (a-z,A-Z,
0-9, and _)
✓ A variable name should not contain spaces. If a variable name is more than one word, it
should be separated with an underscore ($my_string), or with capitalization/Camel notation
($myString)
PHP VariablesScope
In PHP, variables can be declared anywhere in the script. The scope of a variable is the part of
the script where the variable can be referenced / used. PHP has three different variablescopes:
• local
• global
• static
PHP Boolean
A Boolean represents two possible states: TRUE or FALSE.
$x = true; $y = false;
Booleans are often used in conditional testing.
<?php
$male = False;
$r = rand(0, 1);
$male = $r ? True: False;
if ($male) {
echo "We will use name John\n";
} else {
echo "We will use name Victoria\n";
} ?>
The script uses a random integer generator to simulate our case. $r = rand(0, 1);
The rand( ) function returns a random number from the given integer boundaries 0 or 1.
$male = $r? True: False;
We use the ternary operator to set a $male variable. The variable is based on the random $r
value. If $r equals to 1, the $male variable is set to True. If $r equals to 0, the $male variable
is set to False.
PHP Strings
String is a data type representing textual data in computer programs. Probably the single most
important data type in programming.
<?php
$a = "PHP ";
$b = 'PERL';
echo $a . $b;?>
We can use single quotes and double quotes to create string literals.
The script outputs two strings to the console. The \n is a special sequence, a new line.
The escape-sequence replacements are −
• \n is replaced by the newlinecharacter
• \r is replaced by the carriage-returncharacter
• \t is replaced by the tabcharacter
• \$ is replaced by the dollar sign itself($)
• \" is replaced by a single double-quote(")
• \\ is replaced by a single backslash(\)
<?php
define("MINSIZE",50);
echo MINSIZE;
echo constant("MINSIZE"); // same thing as the previous line
?>
Output: 50 50
Only scalar data (boolean, integer, float and string) can be contained in constants.
PHP - Operators:
What is Operator?
Simple answer can be given using expression 4 + 5 is equal to 9. Here 4 and 5 are called
operands and + is called operator. PHP language supports following type of operators.
Arithmetic Operators:
There are following arithmetic operators supported by PHP language:
Assume variable A holds 10 and variable B holds 20 then:
Operator Description Example
+ Adds two operands $A + $B will give 30
- Subtracts second operand from the first $A - $B will give -10
* Multiply both operands $A *$B will give 200
/ Divide numerator by denumerator $B / $A will give 2
% Modulus Operator and remainder of after an integer $B % $A will give 0
division
** Exponentiation ($x to the $y'th power) $A ** $B
Increment/Decrement operators
Operator Description Example
++ Increment operator, increases integer value by one $A++ - 11 / ++$A
-- Decrement operator, decreases integer value by one $A-- will give 9 / --$A
Comparison Operators:
There are following comparison operators supported by PHP language Assume variable A
holds 10 and variable B holds 20 then:
Operator Description Example
== Checks if the value of two operands are equal or not ($A==$B) is not true.
=== Identical(Returns true if $A is equal to $B, and they $A === $B
are of the same type)
!= Checks if the values of two operands are equal or not, ($A != $B) is true.
if values are not equal then condition becomes true.
<> Returns true if $x is not equal to $y $A <> $B
!== Not identical (Returns true if $A is not equal to $B, or $A !== $B
they are not of the same type)
> Checks if the value of left operand is greater than the ($A > $B) is not true.
value of right operand, if yes then condition becomes
true.
< Checks if the value of left operand is less (A < B) is
true. Than the value of right operand, if yes then
condition becomestrue.
>= Checks if the value of left operand is greater than or ($A >= $B) is not true.
equal to the value of right operand, if yes then returns
true.
<= Checks if the value of left operand is less than or equal ($A <= $B) is true.
to the value of right operand, if yes then condition
becomes true.
Logical Operators:
There are following logical operators supported by PHP language
Assume variable A holds 10 and variable B holds 20 then:
Operator Description Example
and (or) Called Logical AND operator. If both the operands ($A and $B) is true.
&& are true then then condition becomes true. ($A && $B) is true.
or (or)|| Called Logical OR Operator. If any of the two ($A or $B) is true.
operands are non zero then then condition becomes ($A || $B) is true.
true.
! Called Logical NOT Operator. Use to reverses the !( $A && $B) is false.
logical state of its operand. If a condition is true
then Logical NOT operator will make false.
Assignment Operators:
There are following assignment operators supported by PHP language:
Operator Description Example
= Simple assignment operator, Assigns values from right $C = $A + $B
side operands to left side operand
+= Add AND assignment operator, It adds right operand $C += $A is equivalent
to the left operand and assign the result to left operand to $C = $C + $A
-= Subtract AND assignment operator, It subtracts right $C -= $A is equivalent
operand from the left operand and assign the result to to $C = $C - $A
left operand
*= Multiply AND assignment operator, It multiplies right $C *= $A is equivalent
operand with the left operand and assign the result to to $C = $C * $A
left operand
/= Divide AND assignment operator, It divides left $C /= $A is equivalent
operand with the right operand and assign the result to to $C = $C / $A
left operand
%= Modulus AND assignment operator, It takes modulus $C %= $A is
using two operands and assign the result to left equivalent to
operand $C = $C % $A
ConditionalOperator
There is one more operator called conditional operator. This first evaluates an expression for
a true or false value and then execute one of the two given statements depending upon the
result of theevaluation.
The conditional operator has this syntax:
Operator Description Example
?: Conditional Expression If Condition is true ? Then value X : Otherwise value Y
PHP String Operators
PHP has two operators that are specially designed for strings.
Operator Description Example
. Concatenation $txt1 . $txt2 (Concatenation of $txt1 and $txt2)
.= Concatenation assignment $txt1 .= $txt2 (Appends $txt2 to $txt1)
Syntax EX:<html>
if (condition) <body>
code to be executed if condition is true; <?php
else $d=date("D");
code to be executed if condition is false; if ($d=="Fri")
echo "Have a nice weekend!";
Example else
The following example will output "Have a echo "Have a nice day!";
nice weekend!" if the current day is Friday, ?>
Otherwise, it will output "Have a nice day!": </body></html>
The If...Else Statement
If you want to execute some code if a condition is true and another code if a condition is
false, usetheif......else statement.
The elseif Statement
If you want to execute some code if one of the several conditions is true use the elseif
statement
Syntax EX:<html>
if (condition) <body>
code to be executed if condition is true; <?php
elseif (condition) $d=date("D");
code to be executed if condition is true; if($d=="Fri")
else echo "Have a nice weekend!";
code to be executed if condition is false; elseif ($d=="Sun")
Example echo "Have a nice Sunday!";
The following example will output "Have a else
nice weekend!" if the current day is Friday, echo "Have a nice day!";
and "Have a nice Sunday!" if the current day ?>
is Sunday. Otherwise, it will output "Have a </body>
nice day!" </html>
Example
This example decrements a variable value on each iteration of
the loop and the counter increments until it reaches 10 when
the evaluation is false and the loop ends.
<html>
<body>
<?php
$i = 0;
$num = 50;
PHP – Functions
PHP functions are similar to other programming languages. A function is a piece of code
which takes one more input in the form of parameter and does some processing and returns a
value. You already have seen many functions like fopen() and fread() etc. They are built-in
functions but PHP gives you option to create your own functions as well.
There are two parts which should be clear to you–
• Creating a PHPFunction
• Calling a PHPFunction
In fact you hardly need to create your own PHP function because there are already more
than 1000 of built-in library functions created for different area and you just need to call
them according to yourrequirement.
Creating PHP Function
It‘s very easy to create your own PHP function. Suppose you want to create a PHP function
which will simply write a simple message on your browser when you will call it. Following
example creates a function called writeMessage() and then calls it just after creating it.
<html> <html>
<head> <head>
<title>Dynamic Function Calls</title> <title>Dynamic Function Calls</title>
</head> </head>
<body> <body>
<?php <?php
function sayHello() function add($x,$y)
{ {
echo "Hello<br />"; echo "addition=" . ($x+$y);
} }
$function_holder = "sayHello"; $function_holder = "add";
$function_holder(); $function_holder(20,30);
?> </body></html> ?> </body></html>
Output: Hello
Output:addition=50
PHP Default Argument Value
The following example shows how to use a default parameter. If we call the function
setHeight() without arguments it takes the default value as argument:
Example
<?php
function setHeight($minheight = 50) {
echo "The height is : $minheight \t";
}
setHeight(350);
setHeight(); // will use the default value of 50
setHeight(135);
setHeight(80);
?>
O/P:350 50 135 80
Web Servers:
Any computer can be turned into a Web server by installing server softwareand connecting
the machine to the Internet. There are many Web server software applications, including
public domain software and commercial packages.
Name: JAVA_HOME
Value: install_dir/common/lib/servlet-api.jar
Turn on Servlet Reloading
The next step is to tell Tomcat to check the modification dates of the class files of requested
servlets and reload ones that have changed since they were loaded into the server's memory.
This slightly degrades performance in deployment situations, so is turned off by default.
However, if you fail to turn it on for your development server, you'll have to restart the server
every time you recompile a servlet that has already been loaded into the server's memory.
RESULT: Thus TOMCAT web server was installed successfully.
Access the developed static web pages for books web site, using these servers by putting the
web pages developed in week-1 and week-2 in the document root.
RESULT: These pages are accessed using the TOMCAT web server successfully.
INTRODUCTION TO SERVLETS
Servlets:
• Servlets are server side programs that run on a Web or Application server and act as a
middle layer between a requests coming from a Web browser and databases or
applications on theserver.
• Using Servlets, you can collect input from users through web page forms, presentrecords
from a database or another source, and create web pagesdynamically.
• Servlets don‘t fork new process for each request, instead a new thread iscreated.
• Servlets are loaded and ready for eachrequest.
• The same servlet can handle many requestssimultaneously.
Web Container: It is web server that supports servlet execution. Individual Servlets
are registered with a container. Tomcat is a popular servlet and JSP container.
Servlet Architecture:
Servlets Tasks:
Servlets perform the following major tasks:
• Read the explicit data sent by the clients (browsers). This includes an HTML form on a
Web page or it could also come from an applet or a custom HTTP clientprogram.
• Read the implicit HTTP request data sent by the clients (browsers). This includes cookies,
media types and compression schemes the browser understands, and soforth.
• Process the data and generate the results. This process may require talking to a database,
executing an RMI or CORBA call, invoking a Web service, or computing the response
directly.
• Send the explicit data (i.e., the document) to the clients (browsers). This document can be
sent in a variety of formats, including text (HTML or XML), binary (GIF images), Excel,
etc.
• Send the implicit HTTP response to the clients (browsers).This includes telling the
browsers or other clients what type of document is being returned (e.g., HTML), setting
cookies and caching parameters, and other suchtasks.
Life Cycle
Steps:
The sequence in which the Web container calls the life cycle methods of a servlet is:
1. The Web container loads the servlet class and creates one or more instances of the
servletclass.
2. The Web container invokes init() method of the servlet instance during initialization of
the servlet. The init() method is invoked only once in the servlet lifecycle.
3. The Web container invokes the service() method to allow a servlet to process a client
request.
4. The service() method processes the request and returns the response back to the Web
container.
5. The servlet then waits to receive and process subsequent requests as explained in steps
3 and4.
6. The Web container calls the destroy() method before removing the servlet instance
from the service. The destroy() method is also invoked only once in a servlet lifecycle.
Servlet Interface
import java.io.*;
import javax.servlet.*;
public class First implements Servlet{
ServletConfig config=null;
public void init(ServletConfig config){
this.config=config;
System.out.println("servlet is initialized");
}
public void service(ServletRequest req,ServletResponse res)
throws IOException,ServletException{
res.setContentType("text/html");
PrintWriter out=res.getWriter();
out.print("<html><body>");
out.print("<b>hello KALPANA</b>");
out.print("</body></html>");
}
public void destroy(){
System.out.println("servlet is destroyed");
}
public ServletConfig getServletConfig(){
return config;
}
public String getServletInfo(){
return "copyright 2007-1010";
}
}
ServletConfiginterface
• When the Web Container initializes a servlet, it creates a ServletConfig object for the
servlet.
• ServletConfig object is used to pass information to a servlet during initialization by getting
configuration information from web.xml(DeploymentDescriptor).
Methods
• getInitParameter(String name): returns a String value initializedparameter
• getInitParameterNames(): returns the names of the servlet's initialization parameters as an
Enumeration of Stringobjects
• getServletContext(): returns a reference to theServletContext
• getServletName(): returns the name of the servletinstance
ServletContext Interface
Methods:
• getAttribute(String name) - returns the container attribute with the givenname
• getInitParameter(String name) - returns parameter value for the specified parametername
• getInitParameterNames() - returns the names of the context's initialization parameters as
an Enumeration of Stringobjects
• setAttribute(String name,Objectobj) - set an object with the given attribute name in the
applicationscope
• removeAttribute(String name) - removes the attribute with the specified name from the
applicationcontext
Servlet RequestInterface
Methods
• getAttribute(String name), removeAttribute(String name), setAttribute(String name,
Object o), getAttributeName() – used to store and retrieve an attribute fromrequest.
• getParameter(String name) - returns value of parameter byname
• getParameterNames() - returns an enumeration of all parameternames
• getParameterValues(String name) - returns an array of String objects containing all of the
values the given request parameter has, or null if the parameter does notexist
Servlet ResponseInterface
• Servlet API provides ServletResponseto assist in sending response toclient.
Methods
• getWriter()- returns a PrintWriter object that can send character text to theclient.
• setContentType(String type)- sets the content type of the response being sent to the client
before sending therespond.
GenericServletclass
• GenericServlet class implements Servlet, ServletConfig and Serializableinterfaces.
• It provides the implementation of all the methods of these interfaces except the service
method.
• GenericServlet class can handle any type of request so it isprotocol-independent.
• You may create a generic servlet by inheriting the GenericServlet class and providing the
implementation of the servicemethod.
Methods
ServletInputStream Class
• It provides stream to read binary data such as image etc. from the request object. It is an
abstractclass.
• ThegetInputStream()method ofServletRequestinterface returns the instance of
ServletInputStreamclass
• intreadLine(byte[] b, int off, intlen) it reads the inputstream.
ServletOutputStream Class
• It provides a stream to write binary data into the response. It is an abstractclass.
• The getOutputStream() method of ServletResponse interface returns the instance of
ServletOutputStreamclass.
• ServletOutputStream class provides print() and println() methods that areoverloaded.
2. javax.servlet.http
Interfaces
1. HttpServletRequest
2. HttpServletResponse
3. HttpSession
Classes
1. HttpServlet
2.Cookie
2. Parameters-
The HttpServletRequest provides methods for accessing parameters of a request. The
methods getParameter(), getParameterValues()and getParameterNames() are offered as
ways to access the arguments.
3. Attributes–
The request object defines a method called getAttribute(). The servlet interface
provides this as a way to include extra information about the request that is not covered
by any of the other HttpServletRequest methods.
4. ServletInputStream–
The ServletInputStream is an InputStream that allows your servlets to read all of the
request‘s input following theheaders.
HTTPSession
• HttpSession object is used to store entire session with a specificclient.
• We can store, retrieve and remove attribute from HttpSessionobject.
• Any servlet can have access to HttpSession object throughout the getSession() method of
the HttpServletRequestobject.
HTTPServlet
• HttpServlet is extends from GenericServlet and does not override init, destroy and other
methods.
• It implements the service () method which is abstract method inGenericServlet.
• A subclass of HttpServlet must override at least one method, usually one ofthese:
o doGet(), if the servlet supports HTTP GETrequests
o doPost(), for HTTP POSTrequests
o doPut(), for HTTP PUTrequests
o doDelete(), for HTTP DELETErequests
o Init() and destroy(), to manage resources that are held for the life of theservlet
o getServletInfo(), which the servlet uses to provide information aboutitself
Cookie
• A cookie is a small piece of information that is persisted between the multiple client
requests.
• javax.servlet.http.Cookie class provides the functionality of using cookies. It provides a
lot of useful methods for cookies.
• public void addCookie(Cookie ck):method of HttpServletResponse interface is used to
add cookie in responseobject.
• public Cookie[] getCookies():method of HttpServletRequest interface is used to return all
the cookies from thebrowser.
Reading Servlet Parameters(or) Handling HTTPRequest and HTTPResponse
• The parameters are the way in which a client or user can send information to the Http
Server.
• The HTTPServletRequest interface includes methods that allow you to read the names
and values of parameters that are included in a client request.
• The HttpServletResponse Interface provides functionality for sending response toclient.
• The browser uses two methods to pass this information to web server. These methods are
GET Method and POSTMethod.
GET method:
• The GET method sends the encoded user information appended to the pagerequest.
• The page and the encoded information are separated by the ? character asfollows:
• The GET method is the defualt method to pass information from browser to webserver.
• Never use the GET method if you have password or other sensitive information to pass to
theserver.
• The GET method has size limtation: only 1024 characters can be in a requeststring.
• This information is passed using QUERY_STRING header and will be accessible through
QUERY_STRING environmentvariable.
• Servlet handles this type of requests using doGet()method.
POST method:
• A generally more reliable method of passing information to a backend program is the
POST method.
• This message comes to the backend program in the form of the standard input which you
can parse and use for yourprocessing.
• Servlet handles this type of requests using doPost()method.
Reading Form Data using Servlet:
Servlets handles form data parsing automatically using the following methods depending on
the situation:
• getParameter(): You call request.getParameter() method to get the value of a form
parameter.
• getParameterValues(): Call this method if the parameter appears more than once and
returns multiple values, for examplecheckbox.
• getParameterNames(): Call this method if you want a complete list of all parameters in
the currentrequest.
Sending Data to Client:
Obtain a PrintWriter object HTTPServletResponse that can send character text to the client.
PrintWriterpw = response.getWriter();
pw.println(―Hello world‖);
<servlet>
<servlet-name>HelloForm</servlet-name>
<servlet-class>HelloForm</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloForm</servlet-name>
<url-pattern>/HelloForm</url-pattern>
</servlet-mapping>
First Name:
Last Name:
1. Using ServletConfig:
• An object of ServletConfig is created by the web container for each servlet. This object
can be used to get configuration information from web.xml file.
• If the configuration information is modified from the web.xml file, we don't need to
change the servlet. So it is easier to manage the web application if any specific content is
modified from time totime.
Methods
• getInitParameter(String name): returns a String value initializedparameter
• getInitParameterNames(): returns the names of the servlet's initialization parameters as an
Enumeration of Stringobjects
• getServletContext(): returns a reference to theServletContext
• getServletName(): returns the name of the servletinstance
Syntax to provide the initialization parameter for a servlet
The init-param sub-element of servlet is used to specify the initialization parameter
for aservlet.
<web-app>
<servlet>
......
<init-param>
<param-name>email</param-name>
<param-value>kalpana@gamil.com</param-value>
</init-param>
......
</servlet>
</web-app>
Retrieve ServletConfig
ServletConfigsc = getServletConfig();
out.println(sc.getInitParameter("email"));
Ex: web.xml
<web-app>
servlet>
<servlet-name>TestInitParam</servlet-name>
<servlet-class>TestInitParam</servlet-class>
<init-param>
<param-name>email</param-name>
<param-value>kalpana@gmail.com</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>TestInitParam</servlet-name>
<url-pattern>/TestInitParam</url-pattern>
</servlet-mapping>
</web-app>
TestInitParam.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestInitParam extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
ServletConfigsc=getServletConfig();
out.print("<html><body>");
out.print("<b>"+sc.getInitParameter("email")+"</b>");
out.print("</body></html>");
out.close();
}
}
• It will generateresult
2. UsingServletContext
• An object of ServletContext is created by the web container at time of deploying the
project.
• This object can be used to get configuration information from web.xmlfile.
• There is only one ServletContext object per webapplication.
• If any information is shared to many servlet, it is better to provide it from the web.xml file
using the <context-param>element.
Advantage
• Easy to maintain if any information is shared to all the servlet, it is better to make it
available for all theservlet.
• We provide this information from the web.xml file, so if the information is changed, we
don't need to modify the servlet. Thus it removes maintenanceproblem.
Uses
1. The object of ServletContext provides an interface between the container andservlet.
2. The ServletContext object can be used to get configuration information from the web.xml
file.
3. The ServletContext object can be used to set, get or remove attribute from the web.xml
file.
4. The ServletContext object can be used to provide inter-applicationcommunication.
Methods:
• getAttribute(String name) - returns the container attribute with the givenname
• getInitParameter(String name) - returns parameter value for the specified parametername
• getInitParameterNames() - returns the names of the context's initialization parameters as
an Enumeration of Stringobjects
• setAttribute(String name,Objectobj) - set an object with the given attribute name in the
applicationscope
• removeAttribute(String name) - removes the attribute with the specified name from the
applicationcontext
Retrieve ServletContext
ServletContextapp = getServletContext();
OR
ServletContextapp = getServletConfig().getServletContext();
Ex: web.xml
<web-app>
<context-param>
<param-name>driverName</param-name>
<param-value>sun.jdbc.JdbcOdbcDriver</param-value>
</context-param>
<servlet>
<servlet-name>TestServletContext</servlet-name>
<servlet-class>TestServletContext</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServletContext</servlet-name>
<url-pattern>/TestServletContext</url-pattern>
</servlet-mapping>
</web-app>
TestServletContext.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServletContext extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
ServletContextsc = getServletContext();
out.println(sc.getInitParameter("driverName"));
}
}
• It will generateresult
Context Init parameters are initialized within Initialized within the <servlet> for each
the <web-app> not withina specific servlet.
specific <servlet>elements
ServletContext object is used to get Context ServletConfig object is used to get Servlet
Init parameters Init parameters
Only one ServletContext object for entire web Each servlet has its own ServletConfig
app object
Session Tracking
• Session simply means a particular interval oftime.
• Session Tracking is a way to maintain state (data) of anuser.
• Http protocol is a stateless, each request is considered as the new request, so we need to
maintain state using session trackingtechniques.
• Each time user requests to the server, server treats the request as the new request. So we
need to maintain the state of an user to recognize to particularuser.
• We use session tracking to recognize the user It is used to recognize the particularuser.
• Session TrackingTechniques
– Cookies
– Hidden FormField
– URLRewriting
– HttpSession
Cookies
• Cookies are text files stored on the client computer and they are kept for various
information trackingpurpose
• There are three steps involved in identifying returningusers:
o Server script sends a set of cookies to the browser in responseheader.
o Browser stores this information on local machine for futureuse.
o When next time browser sends any request to web server then it sends those cookies
information to the server in request header and server uses that information to identify the
user.
• Cookies are created using Cookie class present in ServletAPI.
• For adding cookie or getting the value from the cookie, we need some methods provided
by other interfaces. Theyare:
a. public void addCookie(Cookie ck):method of HttpServletResponse interface is used
to add cookie in response object.
b. public Cookie[] getCookies():method of HttpServletRequest interface is used to return
all the cookies from the browser.
Disadvantage of Cookies
• It will not work if cookie is disabled from thebrowser.
• Only textual information can be set in Cookieobject.
Methods
public void setMaxAge(int expiry) Sets the maximum age of the cookie in seconds.
public String getName() Returns the name of the cookie. The name cannot
be changed after creation.
public String getValue() Returns the value of the cookie.
public void setName(String name) changes the name of the cookie.
public void setValue(String value) changes the value of the cookie.
Create Cookie
Cookie ck=new Cookie("user","kalpana ");//creating cookie object
response.addCookie(ck);//adding cookie in the response
Delete Cookie
It is mainly used to logout or signout the user.
Cookie ck=new Cookie("user","");//deleting value of cookie
ck.setMaxAge(0);//changing the maximum age to 0 seconds
response.addCookie(ck);//adding cookie in the response
Get Cookies
Cookie ck[]=request.getCookies();
for(int i=0;i<ck.length;i++)
out.print("<br>"+ck[i].getName()+" "+ck[i].getValue());
if(!pass.equals("")||!name.equals("")) {
Cookie ck = newCookie(name,pass);
response.addCookie(ck);
}
Session
• HttpSession Interface provides a way to identify a user across more than one pagerequest
or visit to a Web site and to store information about thatuser.
• Web container creates a session id for each user. The container uses this id to identify the
particularuser.
• The servlet container uses this interface to create a session between an HTTP client and an
HTTPserver.
• The session persists for a specified time period, across more than one connection orpage
request from theuser.
Get the HttpSession object
The HttpServletRequest interface provides two methods to get the object of HttpSession:
1. publicHttpSessiongetSession():Returns the current session associated with this
request, or if the request does not have a session, createsone.
2. publicHttpSessiongetSession(boolean create):Returns the current HttpSession
associated with this request or, if there is no current session and create is true, returns
a newsession.
Destroy Session
session.invalidate();
Methods
1. public String getId():Returns a string containing the unique identifiervalue.
2. public long getCreationTime():Returns the time when this session was created,
measured in milliseconds since midnight January 1, 1970GMT.
3. public long getLastAccessedTime():Returns the last time the client sent a request
associated with this session, as the number of milliseconds since midnight January 1,
1970 GMT.
4. public void invalidate():Invalidates this session then unbinds any objects bound toit.
Steps
• On client's first request, the Web Container generates a unique session ID and gives it
back to the client with response. This is a temporary session created by webcontainer.
• The client sends back the session ID with each request. Making it easier for the web
container to identify where the request is comingfrom.
• The Web Container uses this ID, finds the matching session with the ID and associates
the session with therequest.
Ex: SessionTrack.java
import java.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
if (session.isNew())
{
userID = "Kalpana";
session.setAttribute("UserId", "Kalpana");
}
else {
visitCount = (Integer)session.getAttribute("visitCount");
visitCount = visitCount + 1;
userID = (String)session.getAttribute("UserId");
}
session.setAttribute("visitCount",visitCount);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>" +
"<body>" +
"<h1>Session Infomation</h1>" +
"<table border='1'>" +
"<tr><th>Session info</th><th>value</th></tr>" +
"<tr><td>id</td><td>" + session.getId() + "</td></tr>" +
"<tr><td>User ID</td<td>" + userID + ―</td></tr>" +
"<tr><td>Number of visits</td><td>" + visitCount + "</td></tr>" +
"</table></body></html>");
}
}
web.xml
<web-app>
<servlet>
<servlet-name>SessionTrack</servlet-name>
<servlet-class>SessionTrack</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SessionTrack</servlet-name>
<url-pattern>/SessionTrack</url-pattern>
</servlet-mapping>
</web-app>
Output:
UNIT - IV
DATABASE ACCESS & JAVA BEANS
Database Access: Database Programming using JDBC, JDBC drivers, Studying Javax.sql.* package,
Connecting to database in PHP, Execute Simple Queries, Accessing a Database from a Servlet.
Introduction to Struts Frame works.
MySQL's Connector/J driver is a Type 4 driver. Because of the proprietary nature of their
network protocols, database vendors usually supply type 4 drivers.
Which Driver should be Used?
If you are accessing one type of database, such as Oracle, Sybase, or IBM, the preferred
driver type is4.
If your Java application is accessing multiple types of databases at the same time, type 3 is
the preferreddriver.
Type 2 drivers are useful in situations, where a type 3 or type 4 driver is not available yet for
your database.
The type 1 driver is not considered a deployment-level driver, and is typically used for
development and testing purposesonly.
The first thing you need to do is check that you are set up properly. This involves the
following steps:
1. Install Java and JDBC on yourmachine.
To install both the Java tm platform and the JDBC API, simply follow the instructions for
downloading the latest release of the JDK tm (Java Development Kit tm ). When you
download the JDK, you will get JDBC as well.
Configuring Database:
Configuring a database is not at all difficult, but it requires special permissions and is
normally done by a database administrator.
First, open the control panel. You might find "Administrative tools" select it, again you may
find shortcut for "Data Sources (ODBC)". When you open the ―Data Source (ODBC)" 32bit
ODBC‖ icon, you‘ll see a "ODBC Data Source Administrator" dialog window with a
number of tabs, including ―User DSN,‖ ―System DSN,‖ ―File DSN,‖ etc., in which ―DSN‖
means ―Data Source Name.‖ Select ―System DSN,‖. and add a new entry there, Select
appropriate driver for the data source or directory where database lives. You can name the
entry anything you want, assume here we are giving our data source name as"MySource".
Establishing a Connection
The first thing you need to do is establish a connection with the DBMS you want to use. This
involves two
steps: (1) loading the driver and (2) making the connection.
Loading Drivers: Loading the driver or drivers you want to use is very simple and involves
just one line of code. If, for example, you want to use the JDBC-ODBC Bridge driver, the
following code will load it
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Your driver documentation will give you the class name to use.Forinstance, if
the class name is jdbc.DriverXYZ , you would load the driver with the following line of
code:
Class.forName("jdbc.DriverXYZ");
Making the Connection: The second step in establishing a connection is to have the
appropriate driver connect to the DBMS. The following line of code illustrates the general
idea:
Connection con = DriverManager.getConnection(url,"myLogin", "myPassword");
If you are using the JDBC-ODBC Bridge driver, the JDBC URL will start with jdbc:odbc: .
The rest of the URL is generally your data source name or database system. So, if you are
using ODBC to access an ODBC data source called "MySource, " for example, your JDBC
URL could be jdbc:odbc:MySource . In place of " myLogin " you put the name you use to
log in to the DBMS; in place of " myPassword " you put your password for the DBMS. So if
you log in to your DBMS with a login name of " scott " and a password of "tiger" just these
two lines of code will establish aconnection:
String url = "jdbc:odbc:MySource";
Connection con = DriverManager.getConnection(url, "scott", "tiger");
The connection returned by the method DriverManager.getConnection is an open connection
you can use to create JDBC statements that pass your SQL statements to the DBMS. In the
previous example, con is an open connection, and we will use it in the dorth coming
examples.
Updating Tables
Suppose that after a period of time we want update the YEAR column in the table
STUDENT. The SQL statement to update one row might look likethis:
String updateString = "UPDATE STUDENT " +
"SET YEAR = IV WHERE S-NAME LIKE 'yStudent'";
Using the Statement object stmt , this JDBC code executes the SQL statement contained in
updateString :
stmt.executeUpdate(updateString);
Using try and catch Blocks:
Something else all the sample applications include is try and catch blocks. These are the Java
programming language's mechanism for handling exceptions. Java requires that when a
method throws an exception, there be some mechanism to handle it. Generally a catch block
will catch the exception and specify what happens (which you may choose to be nothing). In
the sample code, we use two try blocks and two catch blocks. The first try block contains
the method Class.forName, from the java.lang package. This method throws a
ClassNotFoundException, so the catch block immediately following it deals with that
exception. The second try block contains JDBC methods, which all throw SQLExceptions, so
one catch block at the end of the application can handle all of the rest of the exceptions
that might be thrown because they will all be SQLExceptionobjects.
Retrieving Exceptions
JDBC lets you see the warnings and exceptions generated by your DBMS and by the Java
compiler. To see exceptions, you can have a catch block print them out. For example, the
following two catch blocks from the sample code print out a message explaining the
exception:
Try
{
// Code that could generate an exception goes here.
// If an exception is generated, the catch block below
// will print out information about it.
} catch(SQLException ex)
{
System.err.println("SQLException: " + ex.getMessage());
}
Struts is an open source framework that extends the Java Servlet API and employs a
Model, View, Controller (MVC) architecture. It enables you to create maintainable,
extensible, and flexible web applications based on standard technologies, such as JSP pages,
JavaBeans, resource bundles, and XML.
UNIT - V
JAVA SERVER PAGES
JSP Application Development: The Anatomy of a JSP Page, JSP Processing. JSP Application
Design and JSP Environment, JSP Declarations, Directives, Expressions, Scripting Elements, implicit
objects. Java Beans: Introduction to Beans, Deploying java Beans in a JSP page.
The Servlet technology and JavaServer Pages (JSP) are the two main technologies for
developing java Web applications. When first introduced by Sun Microsystems in 1996, the
Servlet technology was considered superior to the reigning Common Gateway Interface
(CGI) because servlets stay in memory after they service the first requests. Subsequent
requests for the same servlet do not require instantiation of the servlet‘s class therefore
enabling better responsetime.
Servlets are Java classes that implement the javax.servlet.Servlet interface. They are
compiled and deployed in the web server. The problem with servlets is that you embed
HTML in Java code. If you want to modify the cosmetic look of the page or you want to
modify the structure of the page, you have to change code. Generally speaking, this
is left to the better hands (and brains) of a web page designer and not to a Javadeveloper.
PrintWriter pw = response.getWriter();
pw.println("<html><head><title>Testing</title></head>"); pw.println("<body
bgcolor=\"# ffdddd\">");
As seen from the example above this method presents several difficulties to the web
developer:
1. The code for a servlet becomes difficult to understand for theprogrammer.
2. The HTML content of such a page is difficult if not impossible for a web designer to
understand ordesign.
3. This is hard to program and even small changes in the presentation, such as the page‘s
background color, will require the servlet to be recompiled. Any changes in the
HTMLcontentrequiretherebuildingofthewholeservlet.
4. It's hard to take advantage of web-page development tools when designing the
application interface. If such tools are used to develop the web page layout, the
generated HTML must then be manually embedded into the servlet code, a process
which is time consuming, error prone, and extremelyboring.
5. In many Java servlet-based applications, processing the request and generating the
response are both handled by a single servletclass.
6. The servlet contains request processing and business logic (implemented by methods ),
and also generates the response HTML code, are embedded directly in the servletcode.
JSP solves these problems by giving a way to include java code into an HTML page using
scriptlets. This way the HTML code remains intact and easily accessible to web designers,
but the page can sill perform itstask.
In late 1999, Sun Microsystems added a new element to the collection of Enterprise Java
tools:JavaServer Pages(JSP).JavaServerPagesarebuiltontopofJavaservletsand
designed to increase the efficiency in which programmers, and even nonprogrammers, can
create web content.
Instead of embedding HTML in the code, you place all static HTML in a JSP page, just as in
a regular web page, and add a few JSP elements to generate the dynamic parts of the page.
The request processing can remain the domain of the servlet, and the business logic can be
handled by JavaBeans and EJB components.
A JSP page is handled differently compared to a servlet by the web server. When a servlet is
deployed into a web server in compiled (bytecode) form, then a JSP page is deployed in its
original, human-readable form.
When a user requests the specific page, the web server compiles the page into a servlet and
from there on handles it as a standard servlet.
This accounts for a small delay, when a JSP page is first requested, but any subsequent
requests benefit from the same speed effects that are associated with servlets.
The Problem with Servlet
• Servlets are difficult to code which are overcome in JSP. Other way, we can say, JSP is
almost a replacement of Servlets, (by large, the better word is extension of Servlets),
where coding decreases more thanhalf.
• In Servlets, both static code and dynamic code are put together. In JSP, they are
separated. For example,In Servlets:
out.println(―Hello Mr.‖ + str + ‖ you are great man‖);
where str is the name of the client which changes for each client and is known as dynamic
content. The strings, ―Hello Mr.‖ and ―you are great man‖ are static content which is the
same irrespective of client. In Servlets, in println(), both are put together.
• In JSP, the static content and dynamic content is separated. Static content is written in
HTML and dynamic content in JSP. As much of the response comprises of static content
(nearly 70%) only, the JSP file more looks as a HTMLfile.
• Programmer inserts, here and there, chunks of JSP code in a running HTML developed
by Designer. As much of the response delivered to cleint by server comprises of static
content (nearly 70%), the JSP file more looks like a HTML file. Other way we can say,
JSP is nothting but Java in HTML (servlets areHTML
• in Java); java code embedded inHTML.
• When the roles of Designer and Programmer are nicely separated, the product
development becomes cleaner and fast. Cost of developing Web site becomes cheaper as
Designers are much paid less than Programmers, especially should be thought in the
present competitiveworld.
• Both presentation layer and business logic layer put together in Servlets. In JSP, they can
be separated with the usage ofJavaBeans.
• The objects of PrintWriter, ServletConfig, ServletContext, HttpSession and
RequestDispatcher etc. are created by the Programmer in Servlets and used. But in JSP,
they are builtin and are known as "implicit objects". That is, in JSP, Programmer never
creates these objects and straightaway use them as they are implicitly created and given
by JSP container. This decreases lot ofcoding.
• JSP can easily be integrated withJavaBeans.
• JSP is much used in frameworks like Sturtsetc.
• With JSP, Programmer can build custom tags that can be called in JavaBeans directly.
Servlets do not have this advantage. Reusability increases with tag libraries and JavaBean
etc.
• Writing alias name in <url-pattern> tag of web.xml is optional in JSP but mandatory in
Servlets.
• A Servlet is simply a Java class with extension .java written in normal Javacode.
• A Servlet is a Java class. It is written like a normal Java. JSP is comes with some
elements that are easy towrite.
• JSP needs no compilation by the Programmer. Programmer deploys directly a JSP
source code file in server where as incase of Servlets, the Programmer compiles
manually a Servlet file and deploys a .class file inserver.
• JSP is so easy even a Web Designer can put small interactive code (not knowing much
of Java) in static Webpages.
• First time when JSP is called it is compiled to a Servlet. Subsequent calls to the same
JSP will call the same compiled servlet (instead of converting the JSP to servlet),
Ofcourse, the JSP code would have not modified. This increasesperformance.
Anatomy of JSP
JSP Processing
Once you have a JSP capable web-server or application server, you need to know the
following information about it:
• Where to place thefiles
• How to access the files from your browser (with an http: prefix, not asfile:)
You should be able to create a simple file, such as
<HTML>
<BODY>
Hello, world
</BODY></HTML>
Know where to place this file and how to see it in your browser with an http:// prefix.
Since this step is different for each web-server, you would need to see the web-server
documentation to find out how this is done. Once you have completed this step, proceed to
the next.
Your first JSP
JSP simply puts Java inside HTML pages. You can take any existing HTML page and change
its extension to ".jsp" instead of ".html". In fact, this is the perfect exercise for your first JSP.
Take the HTML file you used in the previous exercise. Change its extension from ".html" to
".jsp". Now load the new file, with the ".jsp" extension, in your browser.
You will see the same output, but it will take longer! But only the first time. If you
reload it again, it will load normally.
What is happening behind the scenes is that your JSP is being turned into a Java file,
compiled and loaded. This compilation only happens once, so after the first load, the file
doesn't take long to load anymore. (But everytime you change the JSP file, it will be re-
compiledagain.)
Of course, it is not very useful to just write HTML pages with a .jsp extension! We now
proceed to see what makes JSP souseful
Adding dynamic content viaexpressions
As we saw in the previous section, any HTML file can be turned into a JSP file by changing
its extension to .jsp. Of course, what makes JSP useful is the ability to embed Java. Put the
following text in a file with .jsp extension (let us call it hello.jsp), place it in your JSP
directory, and view it in a browser.
<HTML>
<BODY>
Hello! The time is now <%= new java.util.Date() %>
</BODY>
</HTML>
Notice that each time you reload the page in the browser, it comes up with the current time.
The character sequences
<%= and %> enclose Java expressions, which are evaluated at run time.
This is what makes it possible to use JSP to generate dyamic HTML pages that change in
response to user actions or vary from user to user.
3. Directives
A JSP "directive" starts with <%@ characters. In the directives we can import packages,
define error handling pages or the session information of the JSP page.
Syntax of JSP directives is:
<%@directive attribute="value" %>
a. page: page is used to provide the information about it. Example: <%@page
language="java"%>
b. include: include is used to include a file in the JSP page. Example: <%@ include
file="/header.jsp"%>
c. taglib: taglib is used to use the custom tags in the JSP pages (custom tags allows us to
defined our own tags). Example: <%@ taglib uri="tlds/taglib.tld" prefix="mytag"%>
Page tag attributes are:
a. language="java"
This tells the server that the page is using the java language. Current JSP specification
supports only java language. Example: <%@page language="java"%>
b. extends="mypackage.myclass"
This attribute is used when we want to extend any class. We can use comma(,) to import
morethan one packages. Example: %@page language="java" import="java.sql.*"%
c. session="true"
When this value is true session data is available to the JSP page otherwise not. By default this
value is true.
Example: <%@page language="java" session="true" %>
d. errorPage="error.jsp"
errorPage is used to handlethe un-handled exceptions in the
page. Example: <%@page session="true" errorPage="error.jsp"%>
e. contentType="text/html;charset=ISO-8859-1"
Use this attribute to set the mime type and character set
of the JSP. Example: <%@page contentType="text/html;charset=ISO-8859-1"%>
4. Declarations
This tag is used for defining the functions and variables
to be used in theJSP. Syntax of JSP Declarativesare:
<%!
//java codes
%>
JSP Declaratives begins with <%! and ends %> with .We can embed any amount of java code
in the JSP Declaratives. Variables and functions defined in the declaratives are class level and
can be used anywhere in the JSP page.
Example
<%@ page import="java.util.*" %>
<HTML>
<BODY>
<%!
Date theDate = new Date(); Date getDate()
{
System.out.println( "In getDate() method" ); return theDate;
}
%>
Hello! The time is now <%= getDate() %>
</BODY>
</HTML>
Using a Literal
<HTML>
<HEAD>
<TITLE>Using a Literal</TITLE>
</HEAD>
<BODY>
<H1>Using a Literal</H1>
<%
out.println("Number of days = "); out.println(365);
%>
</BODY>
</html>
Declaration Tag Example
<%!
String name = "Joe";
String date = "8th April, 2002";
%>
<HTML>
<TITLE>Declaration Tag Example</TITLE>
<BODY>
This page was last modified on <%= date %> by <%= name %>.
</BODY>
</HTML>
Embedding Code
<%!
String[] names = {"A", "B", "C", "D"};
%>
<HTML>
<HEAD><TITLE>Embedding Code</TITLE></HEAD>
<BODY>
<H1>List ofpeople</H1>
<TABLEBORDER="1">
<TH>Name</TH>
<% for (int i=0; i<names.length; i++) {%>
<TR><TD><%=names[i]%></TD></TR>
<% } %>
</TABLE>
</BODY>
</HTML>
Use out
<%@ page language="java" %>
<HTML>
<HEAD><TITLE>JSP Example</TITLE></HEAD>
<BODY>
<H1>Quadratic Equation: y = x^2</H1>
<TABLE BORDER="1">
<TH>x</TH><TH>y</TH>
<%
for (int i=0; i<10; i++)
out.print("<TR><TD WIDTH='100'>" + i + "</TD><TD WIDTH='100'>" + (i*i) +
"</TD></TR>");
%>
</TABLE>
</BODY>
</HTML>
Casting to a New Type
<HTML>
<HEAD>
<TITLE>Casting to a New Type</TITLE>
</HEAD>
<BODY>
<H1>Casting to a New Type</H1>
<%
float float1;
double double1 = 1;
float1 = (float) double1;
Creating a String
<HTML>
<HEAD>
<TITLE>Creating a String</TITLE>
</HEAD>
<BODY>
<H1>Creating a String</H1>
<%
String greeting = "Hello from JSP!";
out.println(greeting);
%>
</BODY>
</HTML>
Creating an Array
<HTML>
<HEAD>
<TITLE>Creating an Array</TITLE>
</HEAD>
<BODY>
<H1>Creating an Array</H1>
<%
double accounts[];
accounts = new double[100]; accounts[3] = 119.63;
out.println("Account 3 holds $" + accounts[3]);
%>
</BODY>
</HTML>
Finding a Factorial
<HTML>
<HEAD>
<TITLE>Finding a Factorial</TITLE>
</HEAD>
<BODY>
<H1>Finding a Factorial</H1>
<%
int value = 6, factorial = 1, temporaryValue = value;
while (temporaryValue > 0) { factorial *= temporaryValue; temporaryValue--;
}
out.println("The factorial of " + value + " is " + factorial + ".");
%>
</BODY>
</HTML>
basic.jsp
<HTML>
<HEAD>
<TITLE>Determining Which Button Was Clicked</TITLE>
</HEAD>
<BODY>
<H1>Determining Which Button Was Clicked</H1> You clicked
<%= request.getParameter("buttonName") %>
</BODY>
</HTML>
basic.jsp
<HTML>
<HEAD>
<TITLE>Reading Checkboxes</TITLE>
</HEAD>
<BODY>
<H1>Reading Checkboxes</H1>
<%
if(request.getParameter("check1") != null) { out.println("Checkbox 1 was checked.<BR>");
}
else {
out.println("Checkbox 1 was not checked.<BR>");
}
if(request.getParameter("check2") != null) { out.println("Checkbox 2 was checked.<BR>");
}
else {
out.println("Checkbox 2 was not checked.<BR>");
}
if(request.getParameter("check3") != null) { out.println("Checkbox 3 was checked.<BR>");
}
else {
out.println("Checkbox 3 was not checked.<BR>");
}
%>
</BODY>
</HTML>
cookies:
• A cookie is a small piece of information created by a JSP program that is stored in theclient‘s
hard disk by the browser. Cookies are used to store various kind of information such as
username, password, and user preferences,etc.
• Different methods in cookie class are:
1. String getName()- Returns a name ofcookie
2. String getValue()-Returns a value ofcookie
3. int getMaxAge()-Returns a maximum age of cookie inmillisecond
4. String getDomain()-Returns adomain
5. boolean getSecure()-Returns true if cookie is secure otherwisefalse
6. String getPath()-Returns a path ofcookie
7. void setPath(Sting)- set the path ofcookie
8. void setDomain(String)-set the domain of cookie
9. void setMaxAge(int)-set the maximum age of cookie
10. void setSecure(Boolean)-set the secure ofcookie.
Creating cookie:
Cookie are created using cookie class constructor.
Content of cookies are added the browser using addCookies() method.
Reading cookies:
Reading the cookie information from the browser using getCookies() method.
Find the length of cookie class.
Retrive the information using different method belongs the cookie class
PROGRAM: To create and read the cookie for the given cookie name as “EMPID” and
its value as”AN2356”.
Program:
<%!
HttpSession h=req.getSesssion(true);
Date d=(Date) h.getAttribute(“Date”);
out.println(―last date and time‖+d);
Date d1=new Date();
d1=h.setAttribute(“date”,d1);
out.println(―current date and time=‖+d1);
%>