Web Twchnologies
Web Twchnologies
ENGINEERING COLLEGE
DEPARTMENT OF COMPUTER SCIENCE AND
ENGINEERING
REGULATION R2021
III YEAR - V SEMESTER
COURSE OBJECTIVES:
To understand different Internet Technologies
To learn java-specific web services architecture
To Develop web applications using frameworks
COURSE OUTCOMES:
CO1: Construct a basic website using HTML and Cascading Style Sheets
CO2: Build dynamic web page with validation using Java Script objects and by applying
different event handling mechanisms.
CO3: Develop server side programs using Servlets and JSP.
CO4: Construct simple web pages in PHP and to represent data in XML format.
CO5: Develop interactive web applications.
TEXTBOOKS
1. Deitel and Deitel and Nieto, Internet and World Wide Web - How to Program, Prentice
Hall, 5th Edition, 2011.
2. Jeffrey C and Jackson, Web Technologies A Computer Science Perspective, Pearson
Education, 2011.
3. Angular 6 for Enterprise-Ready Web Applications, Doguhan Uluca, 1st edition, Packt
Publishing
REFERENCES:
1. Stephen Wynkoop and John Burke “Running a Perfect Website”, QUE, 2nd Edition,1999.
2. Chris Bates, Web Programming – Building Intranet Applications, 3rd Edition, Wiley
Publications, 2009.
CCS375 WEB TECHNOLOGIES
UNIT I WEBSITE BASICS, HTML 5, CSS 3, WEB 2.0 9
Web Essentials: Clients, Servers and Communication – The Internet – Basic Internet protocols –
World wide web – HTTP Request Message – HTTP Response Message – Web Clients – Web Servers – HTML5
– Tables – Lists – Image – HTML5 control elements – Semantic elements – Drag and Drop – Audio – Video controls
- CSS3 – Inline, embedded and external style sheets – Rule cascading – Inheritance – Backgrounds – Border
Images – Colors – Shadows – Text – Transformations – Transitions – Animations.
WEB ESSENTIALS
Web Essentials:
Server:
The software that distributes the information and the machine where the
information and software reside is called the server.
• provides requested service to client
• e.g., Web server sends requested Web page
Client:
The software that resides on the remote machine, communicates with the
server, fetches the information, processes it, and then displays it on the remote
machine is called the client.
• initiates contact with server (―speaks first‖)
• typically requests service from server
• Web: client implemented in browser
Web server:
Software that delivers Web pages and other documents to browsers using the HTTP protocol
Web Page:
A web page is a document or resource of information that is suitable for the World
Wide Web and can be accessed through a web browser.
Website:
A collection of pages on the World Wide Web that is accessible from the same URL
and typically residing on the same server.
URL:
Uniform Resource Locator, the unique address which identifies a resource on
the Internet for routing purposes.
Client-server paradigm:
IThe Client-Server paradigm is the most prevalent model for distributed computing protocols. It
is
the basis of all distributed computing paradigms at a higher level of abstraction. It is
service-oriented, and employs a request-response protocol.
A server process, running on a server host, provides access to a service. A client
process, running on a client host, accesses the service via the server process.The
interaction of the process proceeds according to a protocol.
The primary idea of a client/server system is that you have a central repository of
information—some kind of data, often in a database—that you want to distribute on
demand to some set of people or machines.
The Internet:
• Medium for communication and interaction in inter connected network.
• Makes information constantly and instantly available to anyone with a connection.
Web Browsers:
• User agent for Web is called a
browser: o Internet Explorer
o Firefox
Web Server:
• Server for Web is called Web server:
o Apache (public domain)
o MS Internet Information Server
Protocol:
Protocols are agreed formats for transmitting data
between devices. The protocol determines:
i. The error checking required
ii. Data compression method used
iii. The way the end of a message is signalled
iv. The way the device indicates that it has received the message
Internet Protocol:
There are many protocols used by the Internet and the WWW:
o TCP/IP
o HTTP
o FTP
o Electronic mail protocols IMAP
o POP
TCP/IP
The Internet uses two main protocols (developed by Vincent Cerf and Robert
Kahn) Transmission control protocol (TCP):Controls disassembly of message into
packets at the origin reassembles at the destination
Internet protocol (IP):Specifies the addressing details for each packet Each packet
is labelled with its origin and destination.
Hypertext Transfer Protocol (HTTP)
• The hypertext transfer protocol (HTTP) was developed by Tim Berners-Lee in 1991
• HTTP was designed to transfer pages between machines
• The client (or Web browser) makes a request for a given page and the Server is
responsible for finding it and returning it to the client
• The browser connects and requests a page from the server
• The server reads the page from the file system, sends it to the
client and terminates the connection.
the page from the file system and sends it to the client
and then terminates the connection
HTTP Transactions
HTTP Message:
HTTP message is the information transaction between the client and server.
Two types of HTTP Message:
1. Requests
a. Client to server
2. Responses
a. Server to client
Fields
· Request line or Response line
· General header
· Request header or Response header
· Entity header
· Entity body
.10 Request Message:
Request Line:
• A request line has three parts, separated by
spaces o a method name
o the local path of the requested resource
o the version of HTTP being used
• A typical request line is:
o GET /path/to/file/index.html HTTP/1.1
• Notes:
o GET is the most common HTTP method; it says "give me this
resource". Other methods include POST and HEAD. Method names
are always uppercase
o The path is the part of the URL after the host name, also called the request URI
o The HTTP version always takes the form "HTTP/x.x", uppercase.
Request Header:
.11 Response Message:
Response Line:
• A request line has three parts, separated by
spaces o the HTTP version,
o a response status code that gives the result of the request, and
o an English reason phrase describing the status code
• Typical status lines are:
o HTTP/1.0 200 OK or
o HTTP/1.0 404 Not Found
• Notes:
o The HTTP version is in the same format as in the request line, "HTTP/x.x".
o The status code is meant to be computer-readable; the reason phrase is
meant to be human-readable, and may vary.
HTTP Request Header:
EXAMPLE
HTTP Method:
• HTTP method is supplied in the request line and specifies the operation that
the client has requested.
Some common methods:
• Options
• Get
• Head
• Post
• Put
• Move
• Delete
Two methods that are mostly used are the GET and POST:
o GET for queries that can be safely repeated
o POST for operations that may have side effects (e.g. ordering a book from an on-line store).
The GET Method
• It is used to retrieve information from a specified URI and is assumed to be a
safe, repeatable operation by browsers, caches and other HTTP aware
components
• Operations have no side effects and GET requests can be re-issued.
• For example, displaying the balance of a bank account has no effect on the
account and can be safely repeated.
• Most browsers will allow a user to refresh a page that resulted from a GET,
without displaying any kind of warning
• Proxies may automatically retry GET requests if they encounter a temporary
network connection problem.
• GET requests is that they can only supply data in the form of parameters
encoded in the URI (known as a Query String) – [downside]
• Cannot be unused for uploading files or other operations that require large
amounts of data to be sent to the server.
The POST Method
• Used for operations that have side effects and cannot be safely repeated.
• For example, transferring money from one bank account to another has side
effects and should not be repeated without explicit approval by the user.
• If you try to refresh a page in Internet Explorer that resulted from a POST,
it displays the following message to warn you that there may
HTML5 IMAGE:
Inserting Images into Web Pages
Images enhance visual appearance of the web pages by making them more interesting and
colorful.
The <img> tag is used to insert images in the HTML documents. It is an empty element and
contains attributes only. The syntax of the <img> tag can be given with:
<img src="url" alt="some_text">
Attributes Description
src Specifes the path to the image
alt Specifies an alternate text
height Specifies the height of an image
width Specifies the width
ismap Specifies an image as a server-side
image map
usemap Define a valid map name
The following example inserts three images on the web page:
Example:
<html><head></head>
<body>
<img src="c.jpg" height=="160" width="130"alt="C++ how to Program">
<img src="java.jpg" height="150" width="130"alt="Java how to program">
</body></html>
OUTPUT:
Each image must carry at least two attributes: the src attribute, and an alt attribute.
The src attribute tells the browser where to find the image. Its value is the URL of the image file.
Whereas, the alt attribute provides an alternative text for the image, if it is unavailable or
cannot be displayed for some reason. Its value should be a meaningful substitute for the
image.
Using Image as Hyperlink:
By using image as hyperlinks, web developers can create graphical web pages that link to
other resources.
Tag <a> anchor-We can use hyperlinks by using attributes.
Href specifies the URL.By default links will appear as follows in all browser.
<html> <head > </head>
<body>
<a href ="link.html">
<img src="c.jpg" height=="160" width="130"alt="C++ how to Program">
</a> </body> </html>
Link.html
<html> <head> </head>
<body> <h1> Using Image as hyperlink....</h1>
</body> </html>
Output:
Hyperlink
Link act as a pointer to some web page or documents and image. Both text and image can be
acts as hyperlinks.
Links are created using the (a) anchor element. Attribute used is href specifies the URL.
An unvisited link is blue.
A visited link is purple.
An active link is red.
Example:
<html>
<head></head>
<body>
<a href ="http://www.yahoo.com">Yahoo!!!</a>  
<a href="http://www.google.com">GOOGLE !!!</a>
</body></html>
Output:
Hyperlink to an E-Mail address:Anchor can link to e-mail address using a mailto:url
Format : <a href ="mailto:deitel@deitel.com">deitel@deitel.com</a>
HTML Lists
HTML lists are used to present list of information in well formed and semantic way.
There are three different types of list in HTML and each one has a specific purpose and
meaning.
Unordered list — Used to create a list of related items, in no particular order.
Ordered list — Used to create a list of related items, in a specific order.
Description list — Used to create a list of terms and their descriptions.
Chocolate Cake
Black Forest Cake
Pineapple Cake
HTML Ordered Lists
An ordered list created using the <ol> element, and each list item starts with the <li>
element. Ordered lists are used when the order of the list's items is important.
The list items in an ordered list are marked with numbers.
<ol>… </ol> Specifies an ordered list
<li>…</li> Specifies list item
Specifically used for lists in which each element is labeled with a word rather than a bullet
or number.
Tag Description
<dl>..</dl> Specifies a description list
<dt>…</dt> Specifies the term in a description list
<dd>..</dd> Specifies description of term a
description list
Ex:
<h1> Abbrevation</h1>
<dl>
<dt>HTML </dt>
<dd> Hypertext Markup Language….</dd>
<dt>CSS </dt>
<dd> Cascading Style sheet</dd>
</dl>
Output:
Abbrevation
HTML
Hypertext Markup language
CSS
Cascading Style sheet.
HTML Tables
Creating Tables in HTML
HTML table allows you to arrange data into rows and columns. They are commonly used to
displaytabular data like product listings, customer's details, financial reports, and so on.
You can create a table using the <table> element. Inside the <table> element, you can use
the <tr> elements to create rows, and to create columns inside a row you can use the <td>
elements. You can also define a cell as a header for a group of table cells using the <th>
element.
The following example demonstrates the most basic structure of a
table.
Example
<table>
<tr>
<th>No.</th>
<th>Name</th>
<th>Age</th>
</tr>
<tr>
<td>1</td>
<td>Peter Parker</td>
<td>16</td>
</tr>
<tr>
<td>2</td>
<td>Clark Kent</td>
<td>34</td>
</tr>
</table>
Tables do not have any borders by default. You can use the CSS border property to add
borders to the tables. Also, table cells are sized just large enough to fit the contents by
default. To add more space around the content in the table cells you can use the CSS
padding property.
OUTPUT:
Example
<table>
<thead>
<tr>
<th>Items</th>
<th>Expenditure</th>
</tr>
</thead
>
<tbody>
<tr>
<td>Stationary</td>
<td>2,000</td>
</tr>
<tr>
<td>Furniture</td>
<td>10,000</td>
</tr>
</tbody
>
<tfoot>
<tr>
<th>Total</th>
<td>12,000</td>
</tr>
</tfoot>
</table>
HTML5 Image
The <img> tag is empty, it contains attributes only, and does not have a closing tag.
The src attribute specifies the URL (web address) of the image:
<img src="url">
EXAMPLE
<!DOCTYPE html>
<html>
<body>
<h2>HTML Image</h2>
<img src="html5.gif" alt="HTML5 Icon" style="width:128px;height:128px;">
</body>
</html>
OUTPUT
HTML Image
HTML Form
HTML Forms are required to collect different kinds of user inputs, such as contact
details like name, email address, phone numbers, or details like credit card information,
etc.
Forms contain special elements called controls like inputbox, checkboxes, radio-buttons,
submit buttons, etc. Users generally complete a form by modifying its controls e.g. entering
text, selecting items, etc. and submitting this form to a web server for further processing.
The <form> tag is used to create an HTML form. Here's a simple example of a login form:
Example
<form>
<label>Username: <input type="text"></label>
<label>Password: <input type="password"></label>
<input type="submit" value="Submit">
</form>
The following section describes different types of controls that you can use in your form.
Input Element
This is the most commonly used element within HTML forms.
It allows you to specify various types of user input fields, depending on the type attribute.
An input element can be of type text field, password field, checkbox, radio button, submit
button, reset button, file select box, as well as several new input types introduced in
HTML5.
The most frequently used input types are described below.
Text Fields
Text fields are one line areas that allow the user to input text.
Single-line text input controls are created using an <input> element, whose type attribute
has a value of text. Here's an example of a single-line text input used to take username:
Example
<form>
<label for="username">Username:</label>
<input type="text" name="username" id="username">
</form>
— The output of the above example will look something like this:
Password Field
Password fields are similar to text fields. The only difference is; characters in a password
field are masked, i.e. they are shown as asterisks or dots. This is to prevent someone else
from reading the password on the screen. This is also a single-line text input controls
created using
an <input> element whose type attribute has a value of password.
Example
<form>
<label for="user-pwd">Password:</label>
<input type="password" name="user-password" id="user-pwd">
</form>
— The output of the above example will look something like this:
Radio Buttons
Radio buttons are used to let the user select exactly one option from a pre-defined set of
options. It is created using an <input> element whose type attribute has a value of radio.
Example
Try this code »
<form>
<input type="radio" name="gender" id="male">
<label for="male">Male</label>
<input type="radio" name="gender" id="female">
<label for="female">Female</label>
</form>
— The output of the above example will look something like this:
Checkboxes
Checkboxes allows the user to select one or more option from a pre-defined set of
options. It is created using an <input> element whose type attribute has a value of
checkbox.
Example
<form>
<input type="checkbox" name="sports" id="soccer">
<label for="soccer">Soccer</label>
<input type="checkbox" name="sports" id="cricket">
<label for="cricket">Cricket</label>
<input type="checkbox" name="sports" id="baseball">
<label for="baseball">Baseball</label>
</form>
— The output of the above example will look something like this:
Example
<form>
<label for="file-select">Upload:</label>
<input type="file" name="upload" id="file-select">
</form>
— The output of the above example will look something like this:
Textarea
Textarea is a multiple-line text input control that allows a user to enter more than one line
of text. Multi-line text input controls are created using an <textarea> element.
Example
<form>
<label for="address">Address:</label>
<textarea rows="3" cols="30" name="address" id="address"></textarea>
</form>
— The output of the above example will look something like this:
Select Boxes
A select box is a dropdown list of options that allows user to select one or more option from
a pull-down list of options. Select box is created using the <select> element and <option>
element.The <option> elements within the <select> element define each list item.
Example
<form>
<label for="city">City:</label>
<select name="city" id="city">
<option value="sydney">Sydney</option>
<option value="melbourne">Melbourne</option>
<option value="cromwell">Cromwell</option>
</select>
</form>
— The output of the above example will look something like this:
Example
</form>
HTML5 Colors
<!DOCTYPE html> <html>
<body>
<h1 style="background-color:Tomato;">Tomato</h1>
<h1 style="background-color:Orange;">Orange</h1>
<h1 style="background-color:DodgerBlue;">DodgerBlue</h1>
<h1 style="background-color:MediumSeaGreen;">MediumSeaGreen</h1>
<h1 style="background-color:Gray;">Gray</h1>
<h1 style="background-color:SlateBlue;">SlateBlue</h1>
<h1 style="background-color:Violet;">Violet</h1>
<h1 style="background-color:LightGray;">LightGray</h1>
</body>
</html>
OUTPUT
Tomato
Orange
DodgerBlue
MediumSeaGreen
Gray
SlateBlue
Violet
LightGray
HTML5 Audio
Embedding Audio in HTML Document
Inserting audio onto a web page was not easy before, because web browsers did not have a
uniformstandard for defining embedded media files like audio.
An audio, using the browser default set of controls, with alternative sources.
Example
<audio controls="controls">
<source src="media/birds.mp3" type="audio/mpeg">
<source src="media/birds.ogg" type="audio/ogg">
Your browser does not support the HTML5 Audio element.
</audio>
HTML5 Video
Embedding Video in HTML Document
Inserting video onto a web page was not relatively easy, because web browsers did not
have a uniform standard for defining embedded media files like video.
Example
Example
<video controls="controls">
<source src="media/shuttle.mp4" type="video/mp4">
<source src="media/shuttle.ogv" type="video/ogg">
Your browser does not support the HTML5 Video element.
</video>
Examples of non-semantic elements: <div> and <span> - Tells nothing about its content.
Examples of semantic elements: <form>, <table>, and <article> - Clearly defines its content.
HTML5 offers new semantic elements to define different parts of a web page:
<article>
<aside>
<details>
<figcaption>
<figure>
<footer>
<header>
<main>
<mark>
<nav>
<section>
<summary>
<time>
HTML5 <section> Element
A home page could normally be split into sections for introduction, content, and contact
information.
Example
<section>
<h1>WWF</h1>
<p>The World Wide Fund for Nature (WWF) is </p>
</section>
HTML5 <article> Element
An article should make sense on its own, and it should be possible to read it independently
from the rest of the web site.
Forum post
Blog post
Newspaper article
Example
<article>
<h1>What Does WWF Do?</h1>
<p>WWF's mission is to stop the degradation of our planet's
natural environment, and build a future in which humans live in
harmony with nature.</p>
</article>
HTML5 <header> Element
The <header> element specifies a header for a document or section.
A footer typically contains the author of the document, copyright information, links to terms of
use, contact information, etc.
Example
<footer>
<p>Posted by: Hege Refsnes</p>
<p>Contact information: <a
href="mailto:someone@example.com">
someone@example.com</a>.</p>
</footer>
Tag Description
Example
<!DOCTYPE HTML>
<html>
<head>
<script>
function
allowDrop(ev) {
ev.preventDefault()
;
}
function drag(ev) {
ev.dataTransfer.setData("text",
ev.target.id);
}
function drop(ev)
{
ev.preventDefau
lt();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
</body>
</html>
OUTPUT
Drag the W3Schools image into the rectangle:
HTML5 <nav> Element
Example
<nav>
<a href="/html/">HTML</a> |
<a href="/css/">CSS</a> |
<a href="/js/">JavaScript</a> |
<a href="/jquery/">jQuery</a>
</nav>
To help build highly interactive online pages, CSS3 is invariably used due to its importance
in providing greater options in the design process. When marketing products and services,
web design plays a vital part; a site should be created in a manner that will draw potential
customers to explore and revisit a website more often. Many web design firms are
developing and enhancing websites through the use of CSS3 as this is a great form of web
development. This article will help define CSS3 and will point out its advantages.
Definition
The acronym CSS stands for Cascading Style Sheets which is used to augment the
functionality, versatility. and efficient performance of site content. It allows for the creation
of content-rich websites that do not require much weight or codes; this translates into more
interactive graphics and animation, superior user- interface, and significantly more
organization and rapid download time.
It is used with HTML to create content structure, with CSS3 being used to format structured
content. It is responsible for font properties, colors, text alignments, graphics, background
images, tables and other components. This tool provides extra capabilities such as absolute,
fixed and relative positioning of various elements. The increasing popularity of CSS3 when
used by web design firms stimulates major browsers such as Google Chrome, Firefox, Safari,
and IE9 to adopt and embrace this programming language.
Advantages
Although CSS3 is not the only web development solution, it does allow provide greater
advantages for several reasons.
Cascading Style Sheets (CSS) are files with styling rules that govern how your website
is presented on screen. CSS rules can be applied to your website’s HTML files in
various ways. You can use
an external stylesheet, an internal stylesheet, or an inline style. Each method has
advantages that suit particular uses.
An external stylesheet is a standalone .css file that is linked from a web page. The
advantage of external stylesheets is that it can be created once and the rules applied to
multiple web pages. Should you need to make widespread changes to your site design, you
can make a single change in the stylesheet and it will be applied to all linked pages, saving
time and effort.
An internal stylesheet holds CSS rules for the page in the head section of the HTML file.
The rules only apply to that page, but you can configure CSS classes and IDs that can be
used to style multiple elements in the page code. Again, a single change to the CSS rule will
apply to all tagged elements on the page.
Inline styles relate to a specific HTML tag, using a style attribute with a CSS rule to style
a specific page element. They’re useful for quick, permanent changes, but are less flexible
than external and internal stylesheets as each inline style you create must be separately
edited should you decide to make a design change.
An HTML page styled by an external CSS stylesheet must reference the .css file in the
document head. Once created, the CSS file must be uploaded to your server and linked in the
HTML file with code such as:
Rather than linking an external .css file, HTML files using an internal stylesheet include a
set of rules in their head section. CSS rules are wrapped in <style> tags, like this:
<head>
<style type="text/css">
h1 {
color:#fff
margin-left: 20px;
}
p{
font-family: Arial, Helvetica, Sans Serif;
}
</style>
</head>
Inline styles are applied directly to an element in your HTML code. They use the style
attribute, followed by regular CSS properties.
For example:
Rule Cascading
The cascade
Stylesheets cascade — at a very simple level this means that the order of CSS rules matter;
when two rules apply that have equal specificity the one that comes last in the CSS is the one
that will be used.
EXAMPLE
In the below example, we have two rules that could apply to the h1. The h1 ends up being
colored blue — these rules have an identical selector and therefore carry the same
specificity, so the last one in the source order wins.
h1 {
color: red;
}
h1 {
color: blue;
}
<h1>This is my heading.</h1>
OUTPUT
This is my heading.
Specificity
Specificity is how the browser decides which rule applies if multiple rules have different
selectors, but could still apply to the same element. It is basically a measure of how specific a
selector's selection will be:
An element selector is less specific — it will select all elements of that type that appear
on a page — so will get a lower score.
A class selector is more specific — it will select only the elements on a page that have a
specific class attribute value — so will get a higher score.
Example time! Below we again have two rules that could apply to the h1. The below h1 ends
up being colored red — the class selector gives its rule a higher specificity, and so it will be
applied even though the rule with the element selector appears further down in the source
order.
EXAMPLE
main-heading {
color: red;
h1 {
color: blue;
This is my heading.
Inheritance
Inheritance also needs to be understood in this context — some CSS property values set on
parent elements are inherited by their child elements, and some aren't.
For example, if you set a color and font-family on an element, every element inside it will
also be styled with that color and font, unless you've applied different color and font values
directly to them.
Some properties do not inherit — for example if you set a width of 50% on an element, all
of its descendants do not get a width of 50% of their parent's width. If this was the case, CSS
would be very frustrating to use!
body {
color: blue;
}
span {
color: black;
}
<p>As the body has been set to have a color of blue this is inherited through the
descendants.</p>
<p>We can change the color by targetting the element with a selector,
such as this
<span>span</span>.</p>
OUTPUT
As the body has been set to have a color of blue this is inherited through
the descendants.
We can change the color by targetting the element with a selector, such as
this span.
BACKGROUND:
CSS provides control over the backgrounds of block-level elements. CSS can set a back- ground color
or add background images to HTML5 elements.
background-image Property
The background-image property specifies the image URL for the image flower.png in the
format url(fileLocation).
background-position Property
The background-position property places the image on the page. The keywords top, bottom,
center, left and right are used individually or in combination for vertical and horizontal positioning. You
can position an image using lengths by specifying the hor- izontal length followed by the vertical length.
For example, to position the image as hori- zontally centered (positioned at 50 percent of the distance
across the screen) and 30 pixels from the top, use
background-position: 50% 30px;
background-repeat Property
The background-repeat proper controls background image tiling, which place- es multiple copies
of the image next to each other to fill the background. Here, we set the tiling to no-repeat to display
only one copy of the background image.
Other values in- clude repeat (the default) to tile the image vertically and horizontally,
repeat-x to tile the image only horizontally or
repeat-y to tile the image only vertically.
background-attachment: fixed Property
The next property setting, background-attachment: fixed fixes the image in the position specified
by background-position.
Example:
<html>
<head>
<style type="text/css">
body
{
background-image:url(yellowflowers.png);
background-position:left;
background-attachment:fixed;
background-repeat:repeat-y;
}
</style>
</head>
<body>
</body>
</html>
Output:
BORDER IMAGES:
The CSS3 border-image property uses images to place a border around any block-level element.
Stretching an Image Border
The border-image property has six values:
border-image-source—the URL of the image to use in the border (in this case,
url(border.png)).
border-image-slice—expressed with four space-separated values in pixels (in this case, 80 80 80 80).
These values are the inward offsets from the top, right, bot tom and left sides of the image. Since our
original image is square, we used the same value for each.
The border-image-slice divides the image into nine regions: four corners, four sides and middle,
which is transparent unless other- wise specified. These regions may overlap.
If you use values that are larger than the actual image size, the border-image-slice values will be
interpreted as 100%. You may not use negative values.
We could express the border-image-slice in two values—80 80—in which case the first value would
represent the top and bottom, and the second value the left and right.
The border-image-slice may also be ex- pressed in percentages.
border-image-repeat—specifies how the regions of the border image are scaled and tiled (repeated).
By indicating stretch just once, we create a border that will stretch the top, right, bottom and left regions to
fit the area.
You may specify two values for the border-image-repeat property.
Stretch ,repeat, the top and bottom regions of the image border would be stretched, and the right and
left regions of the border would be repeated (i.e., tiled) to fit the area.
Other possible values for the border-image-repeat property in- clude round and space.
If you specify round, the regions are repeated using only whole tiles, and the border image is scaled
to fit the area. If you specify space, the regions are repeated to fill the area using only whole tiles,
and any excess space is distributed evenly around the tiles.
Example:
<html>
<head>
<style>
#borderimg1 {
border: 10px solid transparent;
border-image-source: url(border.png);
border-image-repeat: round;
border-image-slice: 30;
border-image-width: 10px;
}
#borderimg2 {
border: 10px solid transparent;
border-image-source: url(border.png);
border-image-repeat: stretch;
border-image-slice: 20;
border-image-width:10px;
}
#borderimg3 {
border: 10px solid transparent;
border-image-source: url(border.png);
border-image-repeat: space;
border-image-slice: 30;
border-image-width: 10px;
}
</style>
</head>
<body>
<br> <p id = "borderimg1">This is image boarder with borderimage1 style .</p> <br>
<br><p id = "borderimg2">This is image boarder with borderimage2 style</p><br>
<br><p id = "borderimg3">This is image boarder with borderimage3 style</p><br>
</body>
</html>
Output:
COLORS:
CSS3 allows you to express color in several ways in addition to standard color names (such as Aqua) or
hexadecimal RGB values (such as #00FFFF for Aqua).
RGB (Red, Green, Blue) or RGBA (Red, Green, Blue, Alpha) gives you greater control over the
exact colors in your web pages.
The value for each color—red, green and blue—can range from 0 to 255. The alpha value—
which represents opacity—can be any value in the range 0.0 (fully transparent) through 1.0 (fully
opaque). For example, if you were to set the background color as follows:
background: rgba(255, 0, 0, 0.5);
the resulting color would be a half-opaque red.
Using RGBA colors gives you far more op- tions than using only the existing HTML color
names—there are over 140 HTML color names, whereas there are 16,777,216 different
RGB colors (256 x 256 x 256) and varying opacities of each.
CSS3 also allows you to express color using HSL (hue, saturation, lightness) or HSLA (hue,
saturation, lightness, alpha) values.
The hue is a color or shade expressed as a value from 0 to 359 representing the degrees on a
color wheel (a wheel is 360 degrees).
The colors on the wheel progress in the order of the colors of the rainbow—red, orange,
yellow, green, blue, indigo and violet.
The value for red, which is at the beginning of the wheel, is 0. Green hues have values
around 120 and blue hues have values around 240. A hue value of 359, which is just left of 0
on the wheel, would result in a red hue.
The satu ration—the intensity of the hue—is expressed as a percentage, where 100% is fully
saturated (the full color) and 0% is gray. Lightness—the intensity of light or luminance of
the hue— is also expressed as a percentage.
A lightness of 50% is the actual hue. If you decrease the amount of light to 0%, the color
appears completely dark (black). If you increase the amount of light to 100%, the color
appears completely light (white).
For example, if you wanted to use an hsla value to get the same color red as in our example of an rgba
value, you would set the background property as follows:
background: hsla(0, 100%, 50%, 0.5);
Example:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
h5{color:red;}
h2{color:FF0000;}
h3{color:rgb(255,0,0);}
h4{color:rgba(255,0,0,0.5);}
h1{color:hsla(0,100%,50%,1.5);}
</style>
</head>
<body>
<h5> color name</h5>
<h2 style="font-size:20pt"> hexa </h2>
<h3>RGB </h3>
<h4 style="font-size:20pt">RGBA </h4>
<h1> HSLA</h1>
</body>
</html>
Output:
SHADOWS:
Text shadow:
The CSS3 text-shadow property makes it easy to add a text shadow effect to any text . First we
add a text-shadow property to our styles . The property has four values: -4px, 4px, 6px and
DimGrey, which represent:
Horizontal offset of the shadow—the number of pixels that the text-shadow will appear to the left
or the right of the text. In this example, the horizontal offset of the shadow is -4px. A negative value
moves the text-shadow to the left; a positive value moves it to the right.
Vertical offset of the shadow—the number of pixels that the text-shadow will be shifted up or
down from the text. In this example, the vertical offset of the shadow is 4px. A negative value moves
the shadow up, whereas a positive value moves it down.
blur radius—the blur (in pixels) of the shadow. A blur-radius of 0px would result in a shadow with
a sharp edge (no blur). The greater the value, the greater the blurring of the edges. We used a
blur radius of 6px.
color—determines the color of the text-shadow. We used dimgrey.
Example:
<!DOCTYPE html>
<html>
<head>CSS3 Shadow
<style type="text/css">
h1
{
Example:
<!DOCTYPE html>
<html>
<head>
<style>
#bs1
{
width:400px;
height:150px;
background-color:pink;
box-shadow:10px 20px 5px blue;
}
#bs2
{
width:400px;
height:150px;
background-color:yellow;
box-shadow:-10px -20px 5px red;
}
</style>
</head>
<body>
<div id="bs1"> BOX-SHADOW</div><br><br><br>
<div id="bs2">BOX-SHADOW</div>
</body>
</html>
Output:
TRANSFORMATION:
It is a property by which the object can be rotated, scaled or skewed.
The 2D transformation:
Translate Property:
translate () : It moves an element from its current position.
Syntax : transform: translate (30px,100px);
rotate () : It is used to rotate the element in clockwise or anticlockwise manner to given
degree.
Syntax : transform : rotate(45deg);
scale () : It used to increment or decrement the size of the element.
scaleX () : Method increases or decreases the width of element.
Syntax : scaleX(3);
scaleY () : Method increases or decreases the height of element.
Syntax : scaleY (4);
skew () :Method skew the element along X and Y axis.
Syntax : transform: skew (30deg,45deg);
Example:
<!DOCTYPE html>
<html>
<head>
<style>
div
{
width:170px;
height:30px;
background-color:pink;
}
div:hover
{
transform:translate(30px,100px);
}
</style>
</head>
<body>
<div> Transformation...</div>
</body>
</html>
Output:
- div is hover 30px along the x-axis and 170px along the y-axis.
Example: scale()
<!DOCTYPE html>
<html>
<head>
<style>
div
{
width:100px;
height:30px;
background-color:pink;
}
div:hover
{
transform:scale(4,5); /* scaled to x=4 and y=5 */
}
</style>
</head>
<body>
<br> <br> <br><center>
<div> Transformation...</div></center>
</body>
</html>
Output:
TRANSITIONS:
CSS Transitions is a module of CSS that lets you create gradual transitions between the
values of specific CSS properties. The behavior of these transitions can be controlled by
specifying their timing function, duration, and other attributes.
Properties
transition
transition-delay
transition-duration
transition-property
transition-timing-function
transition –timing-function Specifies the speed curve of the transition effect.
ease – Specifies the transition effect slow start, then fast end slowly.
linear – same speed from start to end.
ease-in – slow start.
ease-out – slow end.
ease-in-out –slow start and end.
Example:
#div1
{ transition-timing-function: linear;}
#div2
{ transition-timing-function: ease;}
Example:
<! DOCTYPE html>
<html>
<head>
<style>
div
{
width:100px;
height:30px;
background-color:red;
transition:width 2s;
}
div:hover
{
width 300px;
}
</style>
</head>
<body>
<br> <br> <br><center>
<div> Transition...</div></center>
</body>
</html>
OUTPUT:
ANIMATION:
CSS allows animation of HTML elements without using JavaScript or Flash!
What are CSS Animations?
An animation lets an element gradually change from one style to another. You can change as
many CSS properties you want, as many times you want.
To use CSS animation, you must first specify some keyframes for the animation. Keyframes
hold what styles the element will have at certain times.
The @keyframes Rule
When you specify CSS styles inside the @keyframes rule, the animation will
gradually change from the current style to the new style at certain times.
To get an animation to work, you must bind the animation to an element.
CSS Animation Properties
The following table lists the @keyframes rule and all the CSS animation properties:
Property Description
@keyframes Specifies the animation code
animation A shorthand property for setting all the animation
properties
animation-delay Specifies a delay for the start of an animation
animation-direction Specifies whether an animation should be played
forwards, backwards or in alternate cycles
animation-duration Specifies how long time an animation should take to
complete one cycle
animation-fill-mode Specifies a style for the element when the
animation is not playing (before it starts, after it
ends, or both)
animation-iteration-count Specifies the number of times an animation should be
played
animation-name Specifies the name of the @keyframes animation
animation-play-state Specifies whether the animation is running or paused
animation-timing-function Specifies the speed curve of the animation
Example:
/* The animation
code */ @keyframes
example {
from {background-
color:red;} to {background-
color: yellow;}
}
Note: The animation-duration property defines how long time an animation should take to
complete. If
the animation-duration property is not specified, no animation will occur, because the
default value is 0s (0 seconds).
In the example above we have specified when the style will change by using the keywords
"from" and "to" (which represents 0% (start) and 100% (complete)).
It is also possible to use percent. By using percent, you can add as many style changes as you
like.
The following example will change the background-color of the <div> element when the
animation is 25% complete, 50% complete, and again when the animation is 100%
complete:
Example
/* The animation
code */ @keyframes
example {
0% {background-color: red;}
25% {background-color: yellow;}
50% {background-color: blue;}
100% {background-color: green;}
}
/* The element to apply the
animation to */ div {
width:
100px;
height:
100px;
background-color:
red; animation-name:
example; animation-
duration: 4s;
}
Example: Create the following time table using HTML tags.
TIME TABLE:
<html>
<head>
<title> TIME TABLE </title>
</head>
<body>
<table border="2" align=center>
<caption align=bottom>
<b>Class Time Table</b>
</caption>
<tr algin=center>
<th rowspan=2>Day</th>
<th colspan=9>Lecture Timings</th>
</tr>
<tr>
<th> 8.30 - 9.20</th>
<th> 9.20 - 10.10</th>
<th rowspan=6>T<br>e <br>a<br> <br>T<br> i<br>m<br> e<br>
</th>
<th>10.20 -11.10</th>
<th>11.10 -12.00</th>
<th>12.00 -12.50</th>
<th rowspan=6>L<br> u<br>n<br>c<br>h<br><br><br> T<br>i<br>m<br>e<br></th>
<th>1.35-2.25</th>
<th>2.25-3.15</th>
</tr>
<tr align=center>
<th>Monday </th>
<th>CD</th>
<th>IP </th>
<th>MC </th>
<th>DS</th>
<th>AI</th>
<th colspan=2> Activity hours
</tr>
<tr align=center>
<th>Tuesday </th>
<th> MC</th>
<th>ST </th>
<th>CD</th>
<th>AI</th>
<th>IP -</th>
<th colspan=2>-Lab </th>
</tr>
<tr align=center>
<th>Wednesday </th>
<th> DS</th>
<th>CD </th>
<th colspan=2>PC-Lab</th>
<th>IP</th>
<th>AI</th>
<th>MC</th>
</tr>
<tr align=center>
<th>Thrusday </th>
<th> IP</th>
<th>MC </th>
<th>DS</th>
<th>ST</th>
<th>CD</th>
<th colspan=2>MINI PROJECT</th>
</tr>
<tr align=center>
<th>Friday </th>
<th> AI</th>
<th> MAD</th>
<th colspan=2>-Lab </th>
<th>IP</th>
<th>ST</th>
<th>DS</th>
</tr>
</body>
</html>
UNIT-II CLIENT SIDE PROGRAMMING
JavaScript was first known as LiveScript, but Netscape changed its name to
JavaScript, possibly because of the excitement being generated by Java.
JavaScript made its first appearance in Netscape 2.0 in 1995 with the
name LiveScript. The general-purpose core of the language has been embedded
in Netscape, Internet Explorer, and other web browsers.
Client-side JavaScript
Client-side JavaScript is the most common form of the language. The script
should be included in or referenced by an HTML document for the code to be
interpreted by the browser.
It means that a web page need not be a static HTML, but can include programs
that interact with the user, control the browser, and dynamically create HTML
content.
The JavaScript client-side mechanism provides many advantages over traditional
CGI server-side scripts. For example, you might use JavaScript to check if the
user has entered a valid e-mail address in a form field.
The JavaScript code is executed when the user submits the form, and only if all
the entries are valid, they would be submitted to the Web Server.
JavaScript can be used to trap user-initiated events such as button clicks, link
navigation, and other actions that the user initiates explicitly or implicitly.
Advantages of JavaScript
Less server interaction − You can validate user input before sending the page
off to the server. This saves server traffic, which means less load on your server.
Immediate feedback to the visitors − They don't have to wait for a page reload
to see if they have forgotten to enter something.
Increased interactivity − You can create interfaces that react when the user
hovers over them with a mouse or activates them via the keyboard.
Richer interfaces − You can use JavaScript to include such items as drag-and-
drop components and sliders to give a Rich Interface to your site visitors.
Limitations of JavaScript
Client-side JavaScript does not allow the reading or writing of files. This has
been kept for security reason.
JavaScript cannot be used for networking applications because there is no such
support available.
JavaScript doesn't have any multithreading or multiprocessor capabilities.
JavaScript can be implemented using JavaScript statements that are placed
within the<script>... </script> HTML tags in a web page.
You can place the <script> tags, containing your JavaScript, anywhere within
you web page, but it is normally recommended that you should keep it within
the <head> tags.
The <script> tag alerts the browser program to start interpreting all the text
between these tags as a script. A simple syntax of your JavaScript will appear as
follows.
The script tag takes two important attributes –
Language − This attribute specifies what scripting language you are using.
Typically, its value will be javascript. Although recent versions of HTML (and
XHTML, its successor) have phased out the use of this attribute.
Type − This attribute is what is now recommended to indicate the scripting
language in use and its value should be set to "text/javascript".
So your JavaScript segment will look like −
<scriptlanguage="javascript"type="text/javascript">
JavaScript code
</script>
INCLUDING JAVASCRIPT IN HTML FILE
There is a flexibility given to include JavaScript code anywhere in an HTML
document. However the most preferred ways to include JavaScript in an HTML
file are as follows −
Script in <head>...</head> section.
Script in <body>...</body> section.
Script in <body>...</body> and <head>...</head> sections.
Script in an external file and then include in <head>...</head> section.
In the following section, we will see how we can place JavaScript in an HTML
file in different ways.
JavaScript in <head>...</head> section
If you want to have a script run on some event, such as when a user clicks
somewhere, then you will place that script in the head as follows –
<html><head><script type="text/javascript">
<!--
FunctionsayHello() {
alert("Hello World")
}
//-->
</script>
</head>
<body>
<input type="button" onclick="sayHello()" value="Say Hello" />
</body>
</html>
This code will produce the following results −
JavaScript in <body>...</body> section
If you need a script to run as the page loads so that the script generates content in
the page, then the script goes in the <body> portion of the document. In this
case, you would not have any function defined using JavaScript. Take a look at
the following code.
<html>
<head>
</head>
<body>
<script type="text/javascript">
<!--
document.write("Hello World")
//-->
</script>
<p>This is web page body </p>
</body>
</html>
This code will produce the following results −
JavaScript in <body> and <head> Sections
You can put your JavaScript code in <head> and <body> section altogether as
follows −
<html>
<head>
<script type="text/javascript">
<!--
FunctionsayHello() {
alert("Hello World")
}
//-->
</script>
</head>
<body>
<script type="text/javascript">
<!--
document.write("Hello World")
//-->
</script>
</body>
</html>
This code will produce the following result −
JavaScript in External File
As you begin to work more extensively with JavaScript, you will be likely to
find that there are cases where you are reusing identical JavaScript code on
multiple pages of a site.
You are not restricted to be maintaining identical code in multiple HTML files.
The script tag provides a mechanism to allow you to store JavaScript in an
external file and then include it into your HTML files.
Here is an example to show how you can include an external JavaScript file in
your HTML code using script tag and its src attribute.
<html>
<head>
<script type="text/javascript" src="filename.js" ></script>
</head>
<body>
.......
</body>
</html>
To use JavaScript from an external file source, you need to write all your
JavaScript source code in a simple text file with the extension ".js" and then
include that file as shown above.
For example, you can keep the following content in filename.js file and then
you can usesayHello function in your HTML file after including the filename.js
file.
FunctionsayHello() {
alert("Hello World")
}
JAVASCRIPT OUTPUT
JavaScript does NOT have any built-in print or display functions.
JavaScript Display Possibilities
JavaScript can "display" data in different ways:
Writing into an alert box, using window.alert().
Writing into the HTML output using document.write().
Writing into an HTML element, using innerHTML.
Writing into the browser console, using console.log().
Using window.alert()
You can use an alert box to display data:
<!DOCTYPE html>
<html>
<body>
<h1>My First Web Page</h1>
<p>My first paragraph.</p>
<script>
window.alert(5 + 6);
</script>
</body></html>
Using document.write()
For testing purposes, it is convenient to use document.write():
<!DOCTYPE html>
<html>
<body>
<script>
document.write(5 + 6);
</script>
</body>
</html>
Using document.write() after an HTML document is fully loaded, will delete all
existing HTML:
<!DOCTYPE html>
<html>
<body>
</body>
</html>
Using innerHTML
To access an HTML element, JavaScript can use
the document.getElementById(id) method.
The id attribute defines the HTML element. The innerHTML property defines
the HTML content:
<!DOCTYPE html>
<html>
<body>
</body>
</html>
Using console.log()
In your browser, you can use the console.log() method to display data.
Activate the browser console with F12, and select "Console" in the menu.
Example
<!DOCTYPE html>
<html>
<body>
<script>
console.log(5 + 6);
</script>
</body>
</html>
SYNTAX OF JAVASCRIPT
JavaScript syntax is the set of rules, how JavaScript programs are constructed.
A computer program is a list of "instructions" to be "executed" by the
computer.
In a programming language, these program instructions are
called statements.JavaScript is a programming language.
JavaScript statements are separated by semicolons.
var x = 5;
var y = 6;
var z = x + y;
Statements
JavaScript statements are composed of:
Values, Operators, Expressions, Keywords, and Comments.
Values
The JavaScript syntax defines two types of values: Fixed values and variable
values.
Fixed values are called literals. Variable values are called variables.
Variables
In a programming language, variables are used to store data values.
JavaScript uses the var keyword to define variables.
An equal sign is used to assign values to variables.
In this example, x is defined as a variable. Then, x is assigned (given) the value
6:
var x;
x = 6;
Operators
JavaScript uses an assignment operator ( = ) to assign values to variables:
var x = 5;
var y = 6;
Expressions
An expression is a combination of values, variables, and operators, which
computes to a value.
The computation is called an evaluation.
For example, 5 * 10 evaluates to 50:
5 * 10
Expressions can also contain variable values:
x * 10
The values can be of various types, such as numbers and strings.
For example, "John" + " " + "Doe", evaluates to "John Doe":
"John" + " " + "Doe"
Keywords
Keywords are used to identify actions to be performed.The var keyword tells
the browser to create a new variable:
var x = 5 + 6;
var y = x * 10;
Comments in JavaScript
JavaScript supports both C-style and C++-style comments, Thus −
Any text between a // and the end of a line is treated as a comment and is
ignored by JavaScript.
Any text between the characters /* and */ is treated as a comment. This may
span multiple lines.
JavaScript also recognizes the HTML comment opening sequence <!--.
JavaScript treats this as a single-line comment, just as it does the // comment.
The HTML comment closing sequence --> is not recognized by JavaScript so it
should be written as //-->.
Identifiers
Identifiers are names.
In JavaScript, identifiers are used to name variables (and keywords, and
functions, and labels).
The rules for legal names are much the same in most programming languages.
In JavaScript, the first character must be a letter, an underscore (_), or a dollar
sign ($).
Subsequent characters may be letters, digits, underscores, or dollar signs.
FUNCTIONS
A function is a block of code designed to perform a particular task.
A function is a group of reusable code which can be called anywhere in your
program. This eliminates the need of writing the same code again and again. It
helps programmers in writing modular codes. Functions allow a programmer to
divide a big program into a number of small and manageable functions.
A JavaScript function is executed when "something" invokes it (calls it).
Syntax
A JavaScript function is defined with the function keyword, followed by
a name, followed by parentheses ().
function name(parameter1, parameter2, parameter3) {
code to be executed
}
Function parameters are the names listed in the function
definition.Function arguments are the real values received by the function when
it is invoked.Inside the function, the arguments are used as local variables.
function myFunction(p1, p2) {
return p1 * p2; // The function returns the product of p1 and p2
}
Function Invocation
The code inside the function will execute when "something" invokes (calls) the
function:
When an event occurs (when a user clicks a button)
When it is invoked (called) from JavaScript code
Automatically (self invoked)
<html><head>
<script type="text/javascript">
FunctionsayHello(name, age)
{
document.write (name + " is " + age + " years old.");
}
</script>
</head>
<body>
<p>Click the following button to call the function</p>
<form>
<input type="button" onclick="sayHello('Zara', 7)" value="Say Hello">
</form>
<p>Use different parameters inside the function and then try...</p>
</body>
</html>
return Statement
A JavaScript function can have an optional return statement. This is required if
you want to return a value from a function. This statement should be the last
statement in a function.
<html>
<head>
<script type="text/javascript">
function concatenate(first, last)
{
var full;
full = first + last;
return full;
}
functionsecondFunction()
{
var result;
result = concatenate('Zara', 'Ali');
document.write (result );
}
</script>
</head>
<body>
<p>Click the following button to call the function</p>
<form>
<input type="button" onclick="secondFunction()" value="Call Function">
<form>
</body>
</html>
Nested Functions
Function inside another function is known as Nested Functions.
<html>
<head>
<script type="text/javascript">
<!--
function hypotenuse(a, b) {
function square(x) { return x*x; }
returnMath.sqrt(square(a) + square(b));
}
functionsecondFunction(){
var result;
result = hypotenuse(1,2);
document.write( result );
}
//-->
</script>
</head>
<body>
<form>
<input type="button" onclick="secondFunction()" value="Call Function">
</form>
</body>
</html>
Function Constructors
The function statement is not the only way to define a new function; you can
define your function dynamically using Function() constructor along with
the new operator.
Note − Constructor is a terminology from Object Oriented Programming. You
may not feel comfortable for the first time, which is OK.
Syntax
Following is the syntax to create a function using Function( ) constructor along
with thenew operator.
<script type="text/javascript">
varvariablename = new Function(Arg1, Arg2..., "Function Body");
</script>
The Function() constructor expects any number of string arguments. The last
argument is the body of the function – it can contain arbitrary JavaScript
statements, separated from each other by semicolons.
Notice that the Function() constructor is not passed any argument that specifies
a name for the function it creates. The unnamed functions created with
the Function() constructor are called anonymous functions.
<html>
<head>
<script type="text/javascript">
<!--
varfunc = new Function("x", "y", "return x*y;");
functionsecondFunction(){
var result;
result = func(10,20);
document.write( result );
}
//-->
</script>
</head>
<body>
<form>
<input type="button" onclick="secondFunction()" value="Call Function">
</form></body></html>
Function literals
Function literals which is another new way of defining functions. A function
literal is an expression that defines an unnamed function.
Syntax
The syntax for a function literal is much like a function statement, except that it
is used as an expression rather than a statement and no function name is
required.
<script type="text/javascript">
varvariablename = function(Argument List){
Function Body
};
</script>
Syntactically, you can specify a function name while creating a literal function
as follows.
<script type="text/javascript">
varvariablename = function FunctionName(Argument List){
Function Body
};
</script>
But this name does not have any significance, so it is not worthwhile.
<html>
<head>
<script type="text/javascript">
varfunc = function(x,y){ return x*y };
functionsecondFunction(){
var result;
result = func(10,20);
document.write( result );
}
</script>
</head>
<body>
<p>Click the following button to call the function</p>
<form>
<input type="button" onclick="secondFunction()" value="Call Function">
</form>
</body></html>
OBJECTS
Objects are composed of attributes. If an attribute contains a function, it is
considered to be a method of the object, otherwise the attribute is considered a
property.
In real life, a car is an object.
A car has properties like weight and color, and methods like start and stop:
All cars have the same properties, but the property values differ from car to car.
All cars have the same methods, but the methods are performed at different
times.
var car = "Fiat";
Objects are variables too. But objects can contain many values.
var car = {type:"Fiat", model:500, color:"white"};
Properties
The name:values pairs (in JavaScript objects) are called properties.
var person = {firstName:"XYZ", lastName:"ABC", age:20};
Example
<!DOCTYPE html><html>
<body>
<p id="demo"></p>
<script>
var person = {firstName:"XYZ", lastName:"ABC", age:20};
document.getElementById("demo").innerHTML =
person.firstName + " is " + person.age + " years old.";
</script>
</body></html>
Accessing Object Properties
You can access object properties in two ways:
objectName.propertyName
or
objectName[propertyName]
<!DOCTYPE html>
<html><body>
<p id="demo1"></p>
<p id="demo"></p>
<script>
var person = {
firstName: "XYZ", OUTPUT
lastName : "ABC",
id : 5566 XYZ ABC
}; XYZ ABC
document.getElementById("demo").innerHTML =person.firstName + " " +
person.lastName;
document.getElementById("demo1").innerHTML =person["firstName"] + " "
+ person.lastName;
</script>
</body></html>
Methods
Methods are actions that can be performed on objects.
Methods are stored in properties as function definitions.
Methods are the functions that let the object do something or let something be
done to it. There is a small difference between a function and a method – at a
function is a standalone unit of statements and a method is attached to an object
and can be referenced by the thiskeyword.
Methods are useful for everything from displaying the contents of the object to
the screen to performing complex mathematical operations on a group of local
properties and parameters.
User-Defined Objects
All user-defined objects and built-in objects are descendants of an object
called Object.
The new Operator
The new operator is used to create an instance of an object. To create an object,
the newoperator is followed by the constructor method.
In the following example, the constructor methods are Object(), Array(), and
Date(). These constructors are built-in JavaScript functions.
var employee = new Object();
var books = new Array("C++", "Perl", "Java");
var day = new Date("August 15, 1947");
The Object() Constructor
A constructor is a function that creates and initializes an object. JavaScript
provides a special constructor function called Object() to build the object. The
return value of theObject() constructor is assigned to a variable.
The variable contains a reference to the new object. The properties assigned to
the object are not variables and are not defined with the var keyword.
<html><head>
<title>User-defined objects</title>
<script type="text/javascript">
var book = new Object(); // Create the object
book.subject = "C++"; // Assign properties to the object
book.author = "Ira Pohl"; OUTPUT:
</script>
</head> Book name is : C++
<body>
Book author is : Ira Pohl
<script type="text/javascript">
document.write("Book name is : " + book.subject + "<br>");
document.write("Book author is : " + book.author + "<br>");
</script>
</body></html>
Example 2:
<html><head>
<title>User-defined objects</title>
<script type="text/javascript">
function book(title, author){
this.title = title;
this.author = author;
}
</script> OUTPUT:
</head>
Book name is : C++
<body>
<script type="text/javascript"> Book author is : Ira Pohl
varmyBook = new book("C++", "Ira Pohl");
document.write("Book title is : " + myBook.title + "<br>");
document.write("Book author is : " + myBook.author + "<br>");
</script>
</body></html>
Defining Methods for an Object
<html>
<head>
<title>User-defined objects</title>
<script type="text/javascript">
// Define a function which will work as a method
FunctionaddPrice(amount){
this.price = amount;
}
function book(title, author){
this.title = title;
this.author = author;
this.addPrice = addPrice; // Assign that method as property.
}
</script> OUTPUT:
</head> Book name is : C++
<body>
<script type="text/javascript"> Book author is : Ira Pohl
varmyBook = new book("C++", "Ira Pohl"); Book priceis : 100
myBook.addPrice(100);
document.write("Book title is : " + myBook.title + "<br>");
document.write("Book author is : " + myBook.author + "<br>");
document.write("Book price is : " + myBook.price + "<br>");
</script></body></html>
NUMBER OBJECT
The Number object represents numerical date, either integers or floating-point
numbers. In general, you do not need to worry about Number objects because
the browser automatically converts number literals to instances of the number
class.
Syntax
The syntax for creating a number object is as follows −
varval = new Number(number);
In the place of number, if you provide any non-number argument, then the
argument cannot be converted into a number, it returns NaN (Not-a-Number).
Converting Variables to Numbers
There are 3 JavaScript functions that can be used to convert variables to
numbers:
The Number() method
The parseInt() method
The parseFloat() method
These methods are not number methods, but global JavaScript methods.
The Number() Method - can be used to convert JavaScript variables to
numbers:
x = true;
Number(x); // returns 1
x = false;
Number(x); // returns 0
x = new Date();
Number(x); // returns 1404568027739
x = "10"
Number(x); // returns 10
x = "10 20"
Number(x); // returns NaN
The parseInt() Method - parses a string and returns a whole number. Spaces
are allowed. Only the first number is returned:
parseInt("10"); // returns 10
parseInt("10.33"); // returns 10
parseInt("10 20 30"); // returns 10
parseInt("10 years"); // returns 10
parseInt("years 10"); // returns NaN
The parseFloat() Method - parses a string and returns a number. Spaces are
allowed. Only the first number is returned:
parseFloat("10"); // returns 10
parseFloat("10.33"); // returns 10.33
parseFloat("10 20 30"); // returns 10
parseFloat("10 years"); // returns 10
parseFloat("years 10"); // returns NaN
The valueOf() Method - returns a number as a number.
var x = 123;
x.valueOf(); // returns 123 from variable x
(123).valueOf(); // returns 123 from literal 123
(100 + 23).valueOf(); // returns 123 from expression 100 + 23
Global Methods
JavaScript global functions can be used on all JavaScript data types.
These are the most relevant methods, when working with numbers:
Method Description
Number() Returns a number, converted from its
argument.
parseFloat() Parses its argument and returns a floating point
number
parseInt() Parses its argument and returns an integer
Number Methods
JavaScript number methods are methods that can be used on numbers:
Method Description
toString() Returns a number as a string
toExponential() Returns a string, with a number rounded and written using
exponential notation.
toFixed() Returns a string, with a number rounded and written with a specified
number of decimals.
Example:
<!DOCTYPE html><html>
<body>
<button onclick="myNumber()">Sorting of Numbers</button>
<p id="demo"></p>
<p id="demo1"></p>
<button onclick="myFruits()">Sorting of Alphabets</button>
<p id="demo2"></p>
<button onclick="myList()">Listing Fruits</button>
<p id="demo3"></p>
<script>
functionmyFruits() {
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Lemon"); //to add an element to the array
fruits[fruits.length] = "Pomegranate"
fruits[6]="Grapes"
document.getElementById("demo2").innerHTML = fruits;
fruits.sort();
fruits.reverse();
document.getElementById("demo2").innerHTML = fruits;
}
functionmyNumber() {
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a-b});
document.getElementById("demo").innerHTML = points;
points.sort(function(a, b){return b-a});
document.getElementById("demo1").innerHTML = points;
functionmyList()
{
var index;
var text = "<ul>";
var fruits = ["Banana", "Orange", "Apple", "Mango"];
for (index = 0; index <fruits.length; index++) {
text += "<li>" + fruits[index] + "</li>";
}
text += "</ul>";
document.getElementById("demo3").innerHTML = text;
}
</script>
</body></html>
DATE OBJECT
Method Description
getDate() Returns the day of the month (from 1-31)
getDay() Returns the day of the week (from 0-6)
getFullYear() Returns the year (four digits)
getHours() Returns the hour (from 0-23)
getMilliseconds() Returns the milliseconds (from 0-999)
getMinutes() Returns the minutes (from 0-59)
getMonth() Returns the month (from 0-11)
getSeconds() Returns the seconds (from 0-59)
getTime() Returns the number of milliseconds since midnight Jan
1, 1970
getTimezoneOffset() Returns the time difference between UTC time and local
time, in minutes
getUTCDate() Returns the day of the month, according to universal
time (from 1-31)
getUTCDay() Returns the day of the week, according to universal time
(from 0-6)
parse() Parses a date string and returns the number of
milliseconds since January 1, 1970
setDate() Sets the day of the month of a date object
setFullYear() Sets the year (four digits) of a date object
setHours() Sets the hour of a date object
setMilliseconds() Sets the milliseconds of a date object
setMinutes() Set the minutes of a date object
setMonth() Sets the month of a date object
setSeconds() Sets the seconds of a date object
setTime() Sets a date to a specified number of milliseconds
after/before January 1, 1970
<!DOCTYPE html><html>
<body>
<button onclick="myFunction()">Print Date</button>
<script>
FunctionmyFunction() {
var d = new Date();
var m = d.getMonth();
var day = d.getDay();
document.write(d + "<br> ");
document.write("The Day is :"+ day + "<br>");
document.write(d.getHours()+":" +d.getMinutes()+":"+d.getSeconds()+"<br>");
document.write(d.getDate() +"/" +d.getMonth()+"/"+d.getFullYear()+"<br>");
d.setDate(23);
document.write(d.getDate() +"/" +d.getMonth()+"/"+d.getFullYear()+"<br>");
}
</script></body></html>
MATH OBJECT
The Math object allows you to perform mathematical tasks on numbers.
Constants
Math.E // returns Euler's number
Math.PI // returns PI
Math.SQRT2 // returns the square root of 2
Math.SQRT1_2 // returns the square root of 1/2
Math.LN2 // returns the natural logarithm of 2
Math.LN10 // returns the natural logarithm of 10
Math.LOG2E // returns base 2 logarithm of E
Math.LOG10E // returns base 10 logarithm of E
Method Description
abs(x) Returns the absolute value of x
acos(x) Returns the arccosine of x, in radians
asin(x) Returns the arcsine of x, in radians
atan(x) Returns the arctangent of x as a numeric value between -PI/2 and
PI/2 radians
atan2(y,x) Returns the arctangent of the quotient of its arguments
ceil(x) Returns x, rounded upwards to the nearest integer
cos(x) Returns the cosine of x (x is in radians)
exp(x) Returns the value of Ex
floor(x) Returns x, rounded downwards to the nearest integer
log(x) Returns the natural logarithm (base E) of x
max(x,y,z,...,n) Returns the number with the highest value
min(x,y,z,...,n) Returns the number with the lowest value
pow(x,y) Returns the value of x to the power of y
random() Returns a random number between 0 and 1
round(x) Rounds x to the nearest integer
sin(x) Returns the sine of x (x is in radians)
sqrt(x) Returns the square root of x
tan(x) Returns the tangent of an angle
<!DOCTYPE html>
<html>
<body>
<script>
FunctionmyFunction() {
document.write(Math.min(0, 150, 30, 20, -8, -200));
document.write("<br>");
document.write(Math.max(0, 150, 30, 20, -8, -200));
document.write("<br>");
document.write(Math.random());
document.write("<br>");
document.write(Math.round(4.7888));
document.write("<br>");
document.write(Math.SQRT2);
document.write("<br>");
document.write(Math.SQRT1_2);
document.write("<br>");
}
</script>
</body></html>
STRING OBJECTS
A JavaScript string simply stores a series of characters like "John Doe".
A string can be any text inside quotes. You can use single or double quotes:
var answer = "It's alright";
var answer = "He is called 'Johnny'";
var answer = 'He is called "Johnny"';
String Length
The length of a string is found in the built in property length:
var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;
Special Characters
Because strings must be written within quotes, JavaScript will misunderstand
this string:
var y = "We are the so-called "Vikings" from the north."
The string will be chopped to "We are the so-called ".
The solution to avoid this problem, is to use the \ escape character.
The backslash escape character turns special characters into string characters:
var x = 'It\'s alright';
var y = "We are the so-called \"Vikings\" from the north."
The escape character (\) can also be used to insert other special characters in a
string.
This is the list of special characters that can be added to a text string with the
backslash sign:
Code Outputs
\' single quote
\" double quote
\\ backslash
\n new line
\r carriage return
\t tab
\b backspace
\f form feed
String Methods
Method Description
charAt() Returns the character at the specified index (position)
charCodeAt() Returns the Unicode of the character at the specified index
concat() Joins two or more strings, and returns a copy of the joined strings
fromCharCode Converts Unicode values to characters
()
indexOf() Returns the position of the first found occurrence of a specified
value in a string
lastIndexOf() Returns the position of the last found occurrence of a specified value
in a string
localeCompar Compares two strings in the current locale
e()
match() Searches a string for a match against a regular expression, and
returns matches
replace() Searches a string for a value and returns a new string with the value
replaced
search() Searches a string for a value and returns the position of the match
slice() Extracts a part of a string and returns a new string
split() Splits a string into an array of substrings
substr() Extracts a part of a string from a start position through a number of
characters
substring() Extracts a part of a string between two specified positions
toLocaleLowe Converts a string to lowercase letters, according to the host's locale
rCase()
toLocaleUpper Converts a string to uppercase letters, according to the host's locale
Case()
toLowerCase() Converts a string to lowercase letters
toString() Returns the value of a String object
toUpperCase() Converts a string to uppercase letters
trim() Removes whitespace from both ends of a string
valueOf() Returns the primitive value of a String object
<html>
<head>
<title>Strings</title>
</head>
<body>
<script type="text/javascript">
varstr = "Apples are round, and apples are juicy.";
varsplitted = str.split(" ", 3);
var y = "We are the so-called \"Vikings\" from the north.";
document.write(splitted );
document.write("<br>");
document.write(y);
document.write("<br>");
document.write(y.toUpperCase());
document.write("<br>");
document.write(y.search('V'));
document.write("<br>");
document.write(y.slice(22,-2));
document.write("<br>");
document.write(y.substring(22,29));
</script></body></html>
REGULAR EXPRESSIONS
A regular expression is a sequence of characters that forms a search pattern.
When you search for data in a text, you can use this search pattern to describe
what you are searching for.
A regular expression can be a single character, or a more complicated pattern.
Regular expressions can be used to perform all types of text search and text
replace operations.
Syntax
A regular expression could be defined with the RegExp () constructor, as
follows −
var pattern = /pattern/attibutes;
OR
var pattern = new RegExp(pattern, attributes);
Here is the description of the parameters –
pattern − A string that specifies the pattern of the regular expression or another
regular expression.
attributes − An optional string containing any of the "g", "i", and "m" attributes
that specify global, case-insensitive, and multiline matches, respectively.
Brackets
Brackets ([]) have a special meaning when used in the context of regular
expressions. They are used to find a range of characters.
Expression Description
[...] Any one character between the brackets.
[^...] Any one character not between the brackets.
[0-9] It matches any decimal digit from 0 through 9.
[a-z] It matches any character from lowercase a through lowercase z.
[A-Z] It matches any character from uppercase A through uppercase Z.
[a-Z] It matches any character from lowercase a through uppercase Z.
The ranges shown above are general; you could also use the range [0-3] to match
any decimal digit ranging from 0 through 3, or the range [b-v] to match any
lowercase character ranging from b through v.
Quantifiers
The frequency or position of bracketed character sequences and single characters
can be denoted by a special character. Each special character has a specific
connotation. The +, *, ?, and $ flags all follow a character sequence.
Expression Description
p+ It matches any string containing at least one p.
p* It matches any string containing zero or more p's.
p? It matches any string containing one or more p's.
p{N} It matches any string containing a sequence of N p's
p{2,3} It matches any string containing a sequence of two or three p's.
p{2, } It matches any string containing a sequence of at least two p's.
p$ It matches any string with p at the end of it.
^p It matches any string with p at the beginning of it.
Examples
Following examples explain more about matching characters.
Expression Description
[^a-zA-Z] It matches any string not containing any of the characters
ranging from athrough z and A through Z.
Literal characters
Character Description
Alphanumeric Itself
\0 The NUL character (\u0000)
\t Tab (\u0009)
\n Newline (\u000A)
\v Vertical tab (\u000B)
\f Form feed (\u000C)
\r Carriage return (\u000D)
\xnn The Latin character specified by the hexadecimal number nn;
for example, \x0A is the same as \n
With the object model, JavaScript gets all the power it needs to create dynamic
HTML:
JavaScript can change all the HTML elements in the page
JavaScript can change all the HTML attributes in the page
JavaScript can change all the CSS styles in the page
JavaScript can remove existing HTML elements and attributes
JavaScript can add new HTML elements and attributes
JavaScript can react to all existing HTML events in the page
JavaScript can create new HTML events in the page
What is the DOM?
The DOM is a W3C (World Wide Web Consortium) standard.
The DOM defines a standard for accessing documents:
"The W3C Document Object Model (DOM) is a platform and language-neutral
interface that allows programs and scripts to dynamically access and update the
content, structure, and style of a document."
The W3C DOM standard is separated into 3 different parts:
Core DOM - standard model for all document types
XML DOM - standard model for XML documents
HTML DOM - standard model for HTML documents
What is the HTML DOM?
The HTML DOM is a standard object model and programming interface for
HTML. It defines:
The HTML elements as objects
The properties of all HTML elements
The methods to access all HTML elements
The events for all HTML elements
In other words: The HTML DOM is a standard for how to get, change, add,
or delete HTML elements.
HTML DOM methods are actions you can perform (on HTML Elements)
HTML DOM properties are values (of HTML Elements) that you can set or
change
Example
The following example changes the content (the innerHTML) of the <p>
element with id="demo":
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hello World!";
</script>
</body>
</html>
In the example above, getElementById is a method, while innerHTML is
a property.
The getElementById Method
The most common way to access an HTML element is to use the id of the
element.
In the example above the getElementById method used id="demo" to find the
element.
The innerHTML Property
The easiest way to get the content of an element is by using
the innerHTML property.
The innerHTML property is useful for getting or replacing the content of HTML
elements.
The HTML DOM Document
In the HTML DOM object model, the document object represents your web
page.
The document object is the owner of all other objects in your web page.
If you want to access objects in an HTML page, you always start with accessing
the document object.
Below are some examples of how you can use the document object to access and
manipulate HTML.
Finding HTML Elements
Method Description
document.getElementById() Find an element by element id
document.getElementsByTagName() Find elements by tag name
document.getElementsByClassName() Find elements by class name
Changing HTML Elements
Method Description
element.innerHTML= Change the inner HTML of an element
element.attribute= Change the attribute of an HTML element
element.setAttribute(attribute,value) Change the attribute of an HTML element
element.style.property= Change the style of an HTML element
Adding and Deleting Elements
Method Description
document.createElement() Create an HTML element
document.removeChild() Remove an HTML element
document.appendChild() Add an HTML element
document.replaceChild() Replace an HTML element
document.write(text) Write into the HTML output
Adding Events Handlers stream
Method Description
document.getElementById(id).onclick=function(){code} Adding event handler
Finding HTML Objects code to an onclick
event object
The first HTML DOM Level 1 (1998), defined 11 HTML objects,
collections, and properties. These are still valid in HTML5.
Later, in HTML DOM Level 3, more objects, collections, and properties were
added.
Property Description DOM
</body>
</html>
In this example, a function is called from the event handler:
<!DOCTYPE html>
<html>
<body>
<script>
function changeText(id) {
id.innerHTML = "Ooops!";
}
</script>
</body>
</html>
Assign Events Using the HTML DOM
The HTML DOM allows you to assign events to HTML elements using
JavaScript:
Assign an onclick event to a button element:
<script>
document.getElementById("myBtn").onclick = displayDate;
</script>
In the example above, a function named displayDate is assigned to an HTML
element with the id="myBtn".
The function will be executed when the button is clicked.
The onload and onunload Events
The onload and onunload events are triggered when the user enters or leaves the
page.
The onload event can be used to check the visitor's browser type and browser
version, and load the proper version of the web page based on the information.
The onload and onunload events can be used to deal with cookies.
<body onload="checkCookies()">
The onchange Event
The onchangeevent are often used in combination with validation of input fields.
Below is an example of how to use the onchange. The upperCase() function will
be called when a user changes the content of an input field.
<input type="text" id="fname" onchange="upperCase()">
<!DOCTYPE html>
<html>
<head>
<script>
FunctionmyFunction() {
var x = document.getElementById("fname");
x.value = x.value.toUpperCase();
}
</script>
</head>
<body>
Enter your name: <input type="text" id="fname" onchange="myFunction()">
<p>When you leave the input field, a function is triggered which transforms the
input text to upper case.</p>
</body>
</html>
The onmouseover and onmouseout Events
The onmouseover and onmouseout events can be used to trigger a function when
the user mouses over, or out of, an HTML element.
<!DOCTYPE html>
<html>
<body>
<div onmouseover="mOver(this)" onmouseout="mOut(this)"
style="background-color:#D94A38;width:120px;height:20px;padding:40px;">
Mouse Over Me</div>
<script>
FunctionmOver(obj) {
obj.innerHTML = "Thank You"
}
FunctionmOut(obj) {
obj.innerHTML = "Mouse Over Me"
}
</script>
</body></html>
The onmousedown, onmouseup and onclick Events
The onmousedown, onmouseup, and onclick events are all parts of a mouse-
click. First when a mouse-button is clicked, the onmousedown event is triggered,
then, when the mouse-button is released, the onmouseup event is triggered,
finally, when the mouse-click is completed, the onclick event is triggered.
<!DOCTYPE html>
<html>
<body>
FunctionmUp(obj) {
obj.style.backgroundColor="#D94A38";
obj.innerHTML="Thank You";
}
</script>
</body>
</html>
The onfocus()
Change the background-color of an input field when it gets focus.
<!DOCTYPE html>
<html>
<head>
<script>
FunctionmyFunction(x) {
x.style.background = "yellow";
}
</script>
</head>
<body>
Enter your name: <input type="text" onfocus="myFunction(this)">
<p>When the input field gets focus, a function is triggered which changes the
background-color.</p>
</body>
</html>
Create a web page using two image files, which switch between one another
as the mouse pointer moves over the images. Use the on Mouse Over and on
Mouse Out
<!DOCTYPE html>
<html>
<head>
<script>
Functionlighton() {
document.getElementById('myimage').src = "bulbon.gif";
}
Functionlightoff() {
document.getElementById('myimage').src = "bulboff.gif";
}
</script>
</head>
<body>
</body>
</html>
EXCEPTION HANDLING
There are three types of errors in programming: (a) Syntax Errors, (b) Runtime
Errors, and (c) Logical Errors.
Syntax Errors
Syntax errors, also called parsing errors, occur at compile time in traditional
programming languages and at interpret time in JavaScript.
Runtime Errors
Runtime errors, also called exceptions, occur during execution (after
compilation/interpretation).
Logical Errors
Logic errors can be the most difficult type of errors to track down. These errors
are not the result of a syntax or runtime error. Instead, they occur when you
make a mistake in the logic that drives your script and you do not get the result
you expected.
The try...catch...finally Statement
The try statement lets you test a block of code for errors.
The catch statement lets you handle the error.
The throw statement lets you create custom errors.
The finally statement lets you execute code, after try and catch, regardless of the
result.
JavaScript implements the try...catch...finally construct as well as
the throw operator to handle exceptions.
You can catch programmer-generated and runtime exceptions, but you
cannot catchJavaScript syntax errors.
Here is the try...catch...finally block syntax −
<scripttype="text/javascript">
<!--
try{
// Code to run
[break;]
}
catch( e ){
// Code to run if an exception occurs
[break;]
}
[ finally{
// Code that is always executed regardless of
// an exception occurring
}]
//-->
</script>
The try block must be followed by either exactly one catch block or
one finally block (or one of both). When an exception occurs in the try block,
the exception is placed in e and the catch block is executed. The
optional finally block executes unconditionally after try/catch.
<!DOCTYPE html>
<html>
<body>
<p id="message"></p>
<script>
FunctionmyFunction() {
var message, x;
message = document.getElementById("message");
message.innerHTML = "";
x = document.getElementById("demo").value;
try {
if(x == "") throw "is empty";
if(isNaN(x)) throw "is not a number";
x = Number(x);
if(x > 10) throw "is too high";
if(x < 5) throw "is too low";
}
catch(err) {
message.innerHTML = "Input " + err;
}
finally {
document.getElementById("demo").value = "";
}
}
</script>
</body></html>
UNIT III SERVER SIDE PROGRAMMING
Servlets: Java Servlet Architecture- Servlet Life Cycle- Form GET and POST actions-
Session Handling- Understanding Cookies- Installing and Configuring Apache Tomcat Web
Server; DATABASE CONNECTIVITY: JDBC perspectives, JDBC program example – JSP:
Understanding Java Server Pages-JSP Standard Tag Library(JSTL)-Creating HTML forms by
embedding JSP code.
SERVLETS
Servlet technology is used to create web application (resides at server side and generates dynamic
web page).
Servlet technology is robust and scalable because of java language. Before Servlet, CGI
(Common Gateway Interface) scripting language was popular as a server-side programming
language. But there were many disadvantages of this technology.
1
Servlet is a web component that is deployed on the server to create dynamic web page.
CGI(Common Gateway Interface) programming was used to create web applications. Here's how a
CGI program works :
User clicks a link that has URL to a dynamic page instead of a static page.
The URL decides which CGI program to execute.
Web Servers run the CGI program in separate OS shell. The shell includes OS environment and
the process to execute code of the CGI program.
The CGI response is sent back to the Web Server, which wraps the response in an HTTP response
and send it back to the web browser.
High response time because CGI programs execute in their own OS shell.
CGI is not scalable.
CGI programs are not always secure or object-oriented.
It is Platform dependent.
Because of these disadvantages, developers started looking for better CGI solutions. And then Sun
Microsystems developed Servlet as a solution over traditional CGI technology.
2
Less response time because each request runs in a separate thread.
Servlets are scalable.
Servlets are robust and object oriented.
Servlets are platform independent.
1. Http is the protocol that allows web servers and browsers to exchange data over the web.
2. It is a request response protocol.
3. Http uses reliable TCP connections bydefault on TCP port 80.
4. It is stateless means each request is considered as the new request. In other words, server doesn't
recognize the user bydefault.
Every request has a header that tells the status of the client. There are many request methods. Get
and Post requests are mostly used.
HTTP
Description
Request
3
Asks the server to accept the body info attached. It is like GET request with extra
POST
info sent with the request.
Asks for only the header part of whatever a GET would return. Just like GET but
HEAD
with no body.
TRACE Asks for the loopback of the request message, for testing or troubleshooting.
PUT Says to put the enclosed info (the body) at the requested URL.
Asks for a list of the HTTP methods to which the thing at the request URL can
OPTIONS
respond
Container
Operations of Container:
Communication Support
Multithreaded support
Security etc.
1. Life cycle management: Servlet and JSP are dynamic resources of java based web
application. The Servlet or JSP will run on a server and at server side. A container will take care
about life and death of a Servlet or JSP.
A container will instantiate, Initialize, Service and destroy of a Servlet or JSP. It means life cycle
will be managed by a container.
4
2. Communication Support: If Servlet or JSP wants to communicate with server than its need
some communication logic like socket programming. Designing communication logic is increase
the burden on programmers, but container act as a mediator between a server and a Servlet or JSP
and provides communication between them.
3. Multithreading: A container creates a thread for each request, maintains the thread and finally
destroys it whenever its work is finished.
4. Security: A programmer is not required to write security code in a Servlet/JSP. A container
will automatically provide security for a Servlet/JSP.
Server
1. Web Server
2. Application Server
Web Server
Web server contains only web or servlet container. It can be used for servlet, jsp, struts, jsf etc. It
can't be used for EJB.
Application Server
Application server contains Web and EJB containers. It can be used for servlet, jsp, struts, jsf, ejb
etc.
5
4. Websphere provided by IBM.
Content Type
Content Type is also known as MIME (Multipurpose internet Mail Extension) Type. It is a HTTP
header that provides the description about what are you sending to the browser.
text/html application/pdf
text/plain application/octet-stream
application/msword application/x-zip
application/vnd.ms-excel images/jpeg
application/jar video/quicktime etc.
Web container is responsible for managing execution of servlets and JSP pages for Java EE
application.
When a request comes in for a servlet, the server hands the request to the Web Container.
Web Container is responsible for instantiating the servlet or creating a new thread to handle the
request. Its the job of Web Container to get the request and response to the servlet. The container
creates multiple threads to process multiple requests to a single servlet.
Servlets don't have a main() method. Web Container manages the life cycle of a Servlet
instance.
1. User sends request for a servlet by clicking a link that has URL to a servlet.
6
2. The container finds the servlet using deployment descriptor and creates two objects :
a. HttpServletRequest
b. HttpServletResponse
3. Then the container creates or allocates a thread for that request and calls the Servlet's service()
method and passes the request, response objects as arguments.
4. The service() method, then decides which servlet method, doGet() or doPost() to call, based on
HTTP Request Method(Get, Post etc) sent by the client. Suppose the client sent an HTTP GET
request, so the service() will call Servlet's doGet() method.
7
5. Then the Servlet uses response object to write the response back to the client.
6. After the service() method is completed the thread dies. And the request and response objects
are ready for garbage collection.
Applets
Applets are applications designed to be transmitted over the network and executed by Java
compatible web browsers.
An Applet is a client side java program that runs within a Web browser on the client
machine.
An applet can use the user interface classes like AWT or Swing.
8
Applet Life Cycle Methods: init(), stop(), paint(), start(), destroy()
Servlets
Servlets are Java based analog to CGI programs, implemented by means of servlet container
associated with an HTTP server.
Servlet is a server side component which runs on the web server.
The servlet does not have a user interface.
Servlet Methods: doGet(), doPost()
The servlet is normally created when a user first invokes a URL corresponding to the servlet, but
you can also specify that the servlet be loaded when the server is first started.
When a user invokes a servlet, a single instance of each servlet gets created, with each user
request resulting in a new thread that is handed off to doGet or doPost as appropriate. The init()
method simply creates or loads some data that will be used throughout the life of the servlet.
9
publicvoidinit()throwsServletException{// Initialization code...}
Each time the server receives a request for a servlet, the server spawns a new thread and calls
service. The service() method checks the HTTP request type (GET, POST, PUT, DELETE, etc.)
and calls doGet, doPost, doPut, doDelete, etc. methods as appropriate.
throwsServletException,IOException{
The service () method is called by the container and service method invokes doGe, doPost, doPut,
doDelete, etc. methods as appropriate. So you have nothing to do with service() method but you
override either doGet() or doPost() depending on what type of request you receive from the client.
The doGet() and doPost() are most frequently used methods with in each service request. Here is
the signature of these two methods.
publicvoiddoGet(HttpServletRequest request,
HttpServletResponse response)
throwsServletException,IOException{
// Servlet code}
10
The doPost() Method
A POST request results from an HTML form that specifically lists POST as the METHOD and it
should be handled by doPost() method.
publicvoiddoPost(HttpServletRequest request,
HttpServletResponse response)
throwsServletException,IOException{
// Servlet code
After the destroy() method is called, the servlet object is marked for garbage collection. The
destroy method definition looks like this:
publicvoid destroy(){
// Finalization code...
SERVLET ARCHITECTURE
Architecture Diagram:
The following figure depicts a typical servlet life-cycle scenario.
First the HTTP requests coming to the server are delegated to the servlet container.
The servlet container loads the servlet before invoking the service() method.
11
Then the servlet container handles multiple requests by spawning multiple threads, each thread
executing the service() method of a single instance of the servlet.
A servlet is a Java class that can be loaded dynamically into and run by a special web server. This
servlet-aware web server is called servlet container, which is also called a servlet engine in the early
days of the servlet technology.
Servlets interact with clients via request-response model based on HTTP. Because servlet
technology works on top of HTTP, a servlet container must support HTTP as the protocol for client
requests and server responses. However, a servlet container also supports similar protocols such as
HTTPS for secure transaction.
12
is an open source web server for testing servlets and JSP technology. Download latest version
of Tomcat Server and install it on your machine.
After installing Tomcat Server on your machine follow the below mentioned steps :
All these 5 steps are explained in details below, lets create our first Servlet Application.
1. Creating the Directory Structure
Sun Microsystem defines a unique directory structure that must be followed to create a servlet
application.
Create the above directory structure inside Apache-Tomcat\webapps directory. All HTML, static
files(images, cssetc) are kept directly under Web application folder. While all the Servlet classes
are kept inside classes folder.
Creating a Servlet
13
By implementing Servlet interface
By extending GenericServlet class
By extending HttpServlet class
When a request comes in for the servlet, the Web Container calls the servlet's service() method and
depending on the type of request the service() method calls either
the doGet() or doPost() method.
importjavax.servlet.http.*;
import java.io.*;
publicMyServletextendsHttpServlet
throwsServletException
response.setContentType("text/html");
PrintWriterout = response.getWriter();
out.println("<html><body>");
out.println("<h1>Hello Readers</h1>");
out.println("</body></html>"); }}
Write above code in a notepad file and save it as MyServlet.java anywhere on your PC. Compile
it(explained in next step) from there and paste the class file into WEB-INF/classes/ directory that
you have to create inside Tomcat/webapps directory.
14
Compiling a Servlet
To compile a Servlet a JAR file is required. Different servers require different JAR files. In Apache
Tomcat server servlet-api.jar file is required to compile a servlet class.
15
NOTE: After compiling your Servlet class you will have to paste the class file into WEB-
INF/classes/ directory.
Deployment Descriptor(DD) is an XML document that is used by Web Container to run Servlets
and JSP pages. DD is used for several important purposes such as:
We will discuss about all these in details later. Now we will see how to create a simple web.xml file
for our web application.
16
Start the Server
Double click on the startup.bat file to start your Apache Tomcat Server.
Or, execute the following command on your windows machine using RUN prompt.
C:\apache-tomcat-7.0.14\bin\startup.bat
Starting Tomcat Server for the first time
If you are starting Tomcat Server for the first time you need to set JAVA_HOME in the Enviroment
variable. The following steps will show you how to set it.
17
Go to Advanced Tab and Click on Environment Variables... button.
Click on New button, and enter JAVA_HOME inside Variable name text field and path of JDK
inside Variable value text field. Click OK to save.
18
Run Servlet Application
SERVLET API
There are two packages used to implement the Servlet. These packages are:
o javax.servlet
o javax.servlet.http
19
The javax.servlet package
Interface Description
Servlet This interface defines all the lifecycle methods
ServletConfig This interface obtains the initialization parameters
ServletContext Using this interface the events can be logged
ServletRequest This interface is useful in reading the data from the client
request.
ServletResponse This interface is useful in writing the data to the client request.
Servlets Interface
Servlet interface provides common behavior to all the servlets.Servlet interface needs to be
implemented for creating any servlet (either directly or indirectly). It provides 3 life cycle methods
20
that are used to initialize the servlet, to service the requests, and to destroy the servlet and 2 non-life
cycle methods.
There are 5 methods in Servlet interface. The init, service and destroy are the life cycle methods of
servlet. These are invoked by the web container.
Method Description
An object of ServletConfig is created by the web container for each servlet using its initialization
phase. This object can be used to get configuration information from web.xml file.
Method Description
Enumeration getInitParameterNames() Returns an enumeration of all the initialization
parameter names.
String getServletName() Returns the name of the Servlet
String getInitParameter(String name) Returns the parameter value for the
specified parameter name.
21
ServletContextgetServletContext() Returns an object of ServletContext.
Method Description
Object getAttribute(String attribute_name) The value of the attribute attribute_name in the
current session is returned.
void setAttribute(String attribute_name, The attribute_name is passed to the object
object value) value.
String getServerInfo( ) This method returns the information about the
server
String log(String str) Writes the str to the servlet log.
String getMimeType(String file) It returns the MIME type of the file.
22
The ServletResponse Interface
Method Description
String getCharacterEncoding( ) Returns the character encoding
ServletOutputStreamgetOutputStream( ) Returns the output stream which is used to
write the data for responding
PrintWritergetWriter( ) Write the character data to the response
void setContentLength(int size) Sets the length of the content equal to the size.
void setContentLength(String Type) Sets the type of the content
Class Description
ServletInputStream Provides the input stream for reading the client’s request
ServletOutputStream Provides the output stream for reading the client’s request
The javax.servlet.http
The javax.servlet.http package contains interfaces and classes that are responsible for http requests
only.
Interface Description
HttpSession Session data can be read or written using this interface
HttpServletRequest Servlet can read the information from the HTTP request using
this information
23
HttpServletResponse Servlet can write the information to HTTP response using this
interface
HttpSessionBindingListener Tells the object about its binding with the particular session
HttpSession
Method Description
String getId() Returns the session ID
ObjectgetAttribute(String attribute_name) The value of the attribute attribute_name in
the current session is returned
Enumeration getAttributeNames() Returns the attribute names
Method Description
String getMethod( ) Returns the HTTP method for the client
request
String getPathInfo( ) Returns the path information about the servlet
path
HttpSessiongetSession() Returns the current session
String getHeader(string fields) Returns the value of header field
Cookie[ ] getCookies() Returns the information in the cookies in the
request made
String getAuth Type() Returns the type of authentication
24
HttpSessionbindinglistener
Method Description
Object getValue() This function returns the value of
bounded or unbounded attribute.
String getName() This function returns the name being bound or
unbound.
HttpSessiongetSession() This function returns the session to which the
listener can be bound or unbound.
Classes
Class Description
Cookie This class is used to write the cookies.
Http Servlet It is used when developing servlet that
receive and process the HTTP request.
HttpSessionEvent This class is used to handle the session
event.
HttpSessionBindingEvent When a listener is bound to a value.
Class Description
String getValue() This function returns a value of the cookie.
Void setValue(String s) This function sets the value to the cookie.
String getName() This function returns the name.
2.TheHttpServlet class
Class Description
Void doGet(HttpServletRequestreq, This method performs HTTP get request.
HttpServletResponse res )
Void doPost(HttpServletRequestreq, This method performs HTTP post request.
HttpServletResponse res )
Void doPut(HttpServletRequestreq, This method performs HTTP put request.
HttpServletResponse res )
Void service(HttpServletRequestreq, This method is invoked for processing
HttpServletResponse res ) HTTP request and response.
3.TheHttpSessionEvent:
25
4.HttpSessionBindingEvent:
Let's see the simple example of servlet by implementing the servlet interface.
File: First.java
import java.io.*;
import javax.servlet.*;
res.setContentType("text/html");
PrintWriter out=res.getWriter();
out.print("<html><body>");
out.print("<b>hello simple servlet</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";}
26
FORM GET AND POSTACTIONS
The browser uses two methods to pass this information to web server. These methods are GET
Method and POST Method.
GET method:
The GET method sends the encoded user information appended to the page request. The page and
the encoded information are separated by the ?character as follows:
http://www.test.com/hello?key1=value1&key2=value2
The GET method is the default method to pass information from browser to web server and it
produces a long string that appears in your browser's Location:box. Never use the GET method if
you have password or other sensitive information to pass to the server. The GET method has size
limitation: only 1024 characters can be in a request string.
This information is passed using QUERY_STRING header and will be accessible through
QUERY_STRING environment variable and Servlet handles this type of requests using
doGet() method.
As we know that data is sent in request header in case of get request. It is the default request type.
Let's see what informations are sent to the server.
POST method:
A generally more reliable method of passing information to a backend program is the POST
method. This packages the information in exactly the same way as GET methods, but instead of
27
sending it as a text string after a ?in the URL it sends it as a separate message. This message comes
to the backend program in the form of the standard input which you can parse and use for your
processing. Servlet handles this type of requests using doPost()method.
getParameterValues(): Call this method if the parameter appears more than once and
returns multiple values, for example checkbox.
getParameterNames(): Call this method if you want a complete list of all parameters in the
current request.
As we know, in case of post request original data is sent in message body. Let's see how informations
are passed to the server in case of post request.
28
Here is a simple URL which will pass two values to HelloForm program using GET method.
http://localhost:8080/HelloForm?first_name=ZARA&last_name=ALI
Below is HelloForm.java servlet program to handle input given by web browser. We are going to
use getParameter() method which makes it very easy to access passed information:
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
response.setContentType("text/html");
+ "</title></head><body>"
+ "<p>Hi "
+ request.getParameter("name")
+ "</p>"
Web.xml
This web.xml defines the Servlet mapping for the form data servlet.
<web-app xmlns=http://java.sun.com/xml/ns/j2ee
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
29
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-
app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>HelloFormData</servlet-name>
<servlet-class>HelloFormData</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloFormData</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
index.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
30
<form action="./hello" method="GET">
</form>
</body>
</html>
In the above HTML page in form tag instead of GET use as POST. Then in the servlet to read the
form data add a doPost method as below,
HttpServletResponse response)
throwsServletException, IOException {
doGet(request, response); }
31
There are many differences between the Get and Post request. Let's see these differences:
GET POST
1) In case of Get request, only limited amount of In case of post request, large amount of data can be
data can be sent because data is sent in header. sent because data is sent in body.
2) Get request is not secured because data is Post request is secured because data is not exposed
exposed in URL bar. in URL bar.
3) Get request can be bookmarked Post request cannot be bookmarked
4) Get request is idempotent. It means second
request will be ignored until response of first request Post request is non-idempotent
is delivered.
5) Get request is more efficient and used more than
Post request is less efficient and used less than get.
Post
SESSION HANDLING
Session Tracking is a mechanism used by Webcontainer to maintain state (data) of a user. It is also
known as session management in servlet.
HTTP protocol is a stateless so we need to maintain state using session tracking techniques. 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 particular user.
HTTP is stateless that means each request is considered as the new request. It is shown in the figure
given below:
32
Http protocol is stateless, to make stateful between client and server we need Session
Tracking.
The basic concept behind session is, whenever a user starts using our application, we can save a
unique identification information about him, in an object which is available throughout the
application, until its destroyed. So wherever the user goes, we will always have his information and
we can always manage which user is doing what. Whenever a user wants to exit from your
application, destroy the object with his information.
33
There are four techniques used in Session tracking:
1. Cookies
2. Hidden Form Field
3. URL Rewriting
4. HttpSession
1. COOKIES
A cookie is a small piece of information that is persisted between the multiple client requests.
A cookie has a name, a single value, and optional attributes such as a comment, path and domain
qualifiers, a maximum age, and a version number.
By default, each request is considered as a new request. In cookies technique, we add cookie with
response from the servlet. So cookie is stored in the cache of the browser. After that if request is sent
by the user, cookie is added with request by default. Thus, we recognize the user as the old user.
Types of Cookie
34
There are 2 types of cookies in servlets.
1. Non-persistent cookie
2. Persistent cookie
Non-persistent cookie
It is valid for single session only. It is removed each time when user closes the browser.
Persistent cookie
It is valid for multiple session . It is not removed each time when user closes the browser. It is
removed only if user logout or signout.
Advantage of Cookies
Disadvantage of Cookies
Cookie class
Constructor Description
Cookie(String name, String value) constructs a cookie with a specified name and
value.
There are given some commonly used methods of the Cookie class.
35
Method Description
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.
For adding cookie or getting the value from the cookie, we need some methods provided by other
interfaces. They are:
1. public void addCookie(Cookie ck):method of HttpServletResponse interface is used to
add cookie in response object.
2. public Cookie[] getCookies():method of HttpServletRequest interface is used to return
all the cookies from the browser.
Let's see the simple code to delete cookie. It is mainly used to logout or signout the user.
36
Cookie ck[]=request.getCookies();
for(int i=0;i<ck.length;i++){
out.print("<br>"+ck[i].getName()+" "+ck[i].getValue());//printing name an
d value of cookie
}
37
Output
38
2. Hidden Form Field
Hidden form field can also be used to store session information for a particular client. In case of
hidden form field a hidden field is used to store client state. In this case user information is stored in
hidden field value and retrieved from another servlet.
In case of Hidden Form Field a hidden (invisible) textfield is used for maintaining the state of an
user.
In such case, we store the information in the hidden field and get it from another servlet. This
approach is better if we have to submit form in all the pages and we don't want to depend on the
browser.
Here, uname is the hidden field name and Vimal Jaiswal is the hidden field value.
39
3. Only textual information can be used.
In this example, we are storing the name of the user in a hidden textfield and getting that value from
another servlet.
index.html
<form action="servlet1">
Name:<input type="text" name="userName"/><br/>
<input type="submit" value="go"/>
</form>
FirstServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String n=request.getParameter("userName");
out.print("Welcome "+n);
40
out.close();
}catch(Exception e){System.out.println(e);}
}
SecondServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SecondServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
try{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.close();
}catch(Exception e){System.out.println(e);}
}
}
web.xml
<web-app>
<servlet>
<servlet-name>s1</servlet-name>
<servlet-class>FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>s2</servlet-name>
<servlet-class>SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s2</servlet-name>
<url-pattern>/servlet2</url-pattern>
</servlet-mapping>
41
</web-app>
3. URL Rewriting
In URL rewriting, we append a token or identifier to the URL of the next Servlet or the next
resource. We can send parameter name/value pairs using the following format:
url?name1=value1&name2=value2&??
A name and a value is separated using an equal = sign, a parameter name/value pair is separated
from another parameter using the ampersand(&). When the user clicks the hyperlink, the parameter
name/value pairs will be passed to the server. From a Servlet, we can use getParameter() method to
obtain a parameter value.
In this example, we are maintaining the state of the user using link. For this purpose, we are
appending the name of the user in the query string and getting the value from the query string in
another page.
42
index.html
<form action="servlet1">
Name:<input type="text" name="userName"/><br/>
<input type="submit" value="go"/>
</form>
FirstServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String n=request.getParameter("userName");
out.print("Welcome "+n);
out.close();
}catch(Exception e){System.out.println(e);}
}
SecondServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
response.setContentType("text/html");
PrintWriter out = response.getWriter();
43
out.print("Hello "+n);
out.close();
}catch(Exception e){System.out.println(e);}
}
web.xml
<web-app>
<servlet>
<servlet-name>s1</servlet-name>
<servlet-class>FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>s2</servlet-name>
<servlet-class>SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s2</servlet-name>
<url-pattern>/servlet2</url-pattern>
</servlet-mapping>
</web-app>
4.HttpSession
HttpSession object is used to store entire session with a specific client. We can store, retrieve and
remove attribute from HttpSession object. Any servlet can have access to HttpSession object
throughout the getSession() method of the HttpServletRequest object.
44
How HttpSession works
1. 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 web container.
2. The client sends back the session ID with each request. Making it easier for the web container to
identify where the request is coming from.
3. The Web Container uses this ID, finds the matching session with the ID and associates the
session with the request.
The HttpServletRequest interface provides two methods to get the object of HttpSession:
45
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 to it.
In this example, we are setting the attribute in the session scope in one servlet and getting that value
from the session scope in another servlet. To set the attribute in the session scope, we have used the
setAttribute() method of HttpSession interface and to get the attribute, we have used the getAttribute
method.
index.html
<form action="servlet1">
Name:<input type="text" name="userName"/><br/>
<input type="submit" value="go"/>
</form>
FirstServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String n=request.getParameter("userName");
out.print("Welcome "+n);
HttpSession session=request.getSession();
session.setAttribute("uname",n);
out.print("<a href='servlet2'>visit</a>");
out.close();
}catch(Exception e){System.out.println(e);}
}
46
}
SecondServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpSession session=request.getSession(false);
String n=(String)session.getAttribute("uname");
out.print("Hello "+n);
out.close();
}catch(Exception e){System.out.println(e);}
}
web.xml
<web-app>
<servlet>
<servlet-name>s1</servlet-name>
<servlet-class>FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>s2</servlet-name>
<servlet-class>SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s2</servlet-name>
<url-pattern>/servlet2</url-pattern>
47
</servlet-mapping>
</web-app>
This section will show the process to install and configure Tomcat 6 on your computer system.
Step 1:
Installation of JDK:
Before beginning the process of installing Tomcat on your system, ensure first the availability of
JDK on your system program directory. Install it on your system if not already installed (because
any version of tomcat requires the Java 1.6 or higher versions) and then set the class path
(environment variable) of JDK. To set the JAVA_HOME Variable: you need to specify the
location of the java run time environment to support the Tomcat else Tomcat server cannot run.
Note: it should not contain the path up to bin folder. Here, we have taken the URL path according to
our installation convention.
For Windows OS, go through the following steps:
Now click on all the subsequent ok buttons one by one. It will set the JDK path.
Step 2:
For setting the class path variable for JDK, do like this:
48
First, right click on the
My Computer->properties->advance->Environment Variables->path.
Now, set bin directory path of JDK in the path variable
Step 3:
The process of installing Tomcat 6.0 begins here from now. It takes various steps for installing and
configuring the Tomcat 6.0.
For Windows OS, Tomcat comes in two forms: .zip file and .exe file (the Windows installer file).
Here we are exploring the installation process by using the .exe file. First unpack the zipped file and
simply execute the '.exe' file.
A Welcome screen shot appears that shows the beginning of installation process. Just click on the
'Next' button to precede the installation process.
Steps 4:
49
Click on the 'I Agree' button.
Step 5:
Step 6:
A screen shot of 'Configuration Options' displays on the screen. Choose the location for the Tomcat
files as per your convenience. You can also select the default Location
50
The port number will be your choice on which you want to run the tomcat server. The port number
8080 is the default port value for tomcat server to proceed the HTTP requests. The user can also
change the 'port number' after completing the process of installation; for this, users have to follow
the following tips.
Go to the specified location as " Tomcat 6.0 \conf \server.xml ". Within the server.xml file choose
"Connector" tag and change the port number.
Now, click on the 'Next' button to further proceed the installation process.
Step 7:
51
This window asks for the location of the installed Java Virtual Machine. Browse the location of the
JRE folder and click on the Install button. This will install the Apache tomcat at the specified
location.
Step 8:
To get the information about installer click on the "Show details" button
Step 9:
52
Step 10:
A window of Apache Service Manager appears with displaying the running process.
Step 11:
After completing the installation process, the Apache Tomcat Manager appears on the toolbar panel
like shown in the below picture.
To Configure the Tomcat Manager, there are two ways; either user can configure Tomcat directly
from the toolbar panel or can configure it from Control Panel Section.
To Configure Apache Tomcat web server from the toolbar panel, you have to press 'double click' on
the appeared icon.
53
A configured window appears on the desktop. Now, just click on the Startup button. The installation
process will be completed.
To configure the Apache Tomcat Manager, Users will have to follow the follwing steps:
Click on the Startup button -- select Control Panel -- Administrator Tool -- Services -- select Apache
Tomcat.
Double click on the Apache Tomcat. The window of Apache Tomcat Properties appears on the
screen.
54
Now, Click on the start up button. The Apache Tomcat is now ready to function.
1.Start the tomcat server from the bin folder of Tomcat 6.0 directory by double clicking the
"tomcat6.exe" file.
OR create a shortcut of this .exe file at your desktop.
2. Now Open web browser and type URL http://localhost:8080 in the address bar to test the server
3. To Stop the Tomcat Server: Stop the server by pressing the "Ctrl + c" keys.
55
DATABASE CONNECTIVITY: JDBC perspectives, JDBC program example
JDBC is a java API to connect and execute query with the database. JDBC API uses jdbc drivers to
connect with the database.
Before JDBC, ODBC API was the database API to connect and execute query with the database.
But, ODBC API uses ODBC driver which is written in C language (i.e. platform dependent and
unsecured). That is why Java has defined its own API (JDBC API) that uses JDBC drivers (written
in Java language).
56
What is API?
API (Application programming interface) is a document that contains description of all the features
of a product or software. It represents classes and interfaces that software programs can follow to
communicate with each other. An API can be created for applications, libraries, operating systems,
etc
JDBC Architecture
The JDBC API supports both two-tier and three-tier processing models for database access but in
general, JDBC Architecture consists of two layers −
The JDBC API uses a driver manager and database-specific drivers to provide transparent
connectivity to heterogeneous databases.
The JDBC driver manager ensures that the correct driver is used to access each data source. The
driver manager is capable of supporting multiple concurrent drivers connected to multiple
heterogeneous databases.
Following is the architectural diagram, which shows the location of the driver manager with respect
to the JDBC drivers and the Java application −
57
Common JDBC Components
The JDBC API provides the following interfaces and classes −
DriverManager: This class manages a list of database drivers. Matches connection requests
from the java application with the proper database driver using communication sub protocol.
The first driver that recognizes a certain subprotocol under JDBC will be used to establish a
database Connection.
Driver: This interface handles the communications with the database server. You will
interact directly with Driver objects very rarely. Instead, you use DriverManager objects,
which manage objects of this type. It also abstracts the details associated with working with
Driver objects.
Connection: This interface with all methods for contacting a database. The connection
object represents communication context, i.e., all communication with database is through
connection object only.
Statement: You use objects created from this interface to submit the SQL statements to the
database. Some derived interfaces accept parameters in addition to executing stored
procedures.
ResultSet: These objects hold data retrieved from a database after you execute an SQL
query using Statement objects. It acts as an iterator to allow you to move through its data.
SQLException: This class handles any errors that occur in a database application.
JDBC Driver is a software component that enables java application to interact with the
database.There are 4 types of JDBC drivers:
1. JDBC-ODBC bridge driver
2. Native-API driver (partially java driver)
3. Network Protocol driver (fully java driver)
4. Thin driver (fully java driver)
The JDBC-ODBC bridge driver uses ODBC driver to connect to the database. The JDBC-ODBC
bridge driver converts JDBC method calls into the ODBC function calls. This is now discouraged
because of thin driver.
58
Advantages:
easy to use.
can be easily connected to any database.
Disadvantages:
Performance degraded because JDBC method call is converted into the ODBC function calls.
The ODBC driver needs to be installed on the client machine.
2) Native-API driver
The Native API driver uses the client-side libraries of the database. The driver converts JDBC
method calls into native calls of the database API. It is not written entirely in java.
Advantage:
59
performance upgraded than JDBC-ODBC bridge driver.
Disadvantage:
The Network Protocol driver uses middleware (application server) that converts JDBC calls directly
or indirectly into the vendor-specific database protocol. It is fully written in java.
Advantage:
No client side library is required because of application server that can perform many tasks
like auditing, load balancing, logging etc.
Disadvantages:
4) Thin driver
The thin driver converts JDBC calls directly into the vendor-specific database protocol. That is
why it is known as thin driver. It is fully written in Java language.
60
Advantage:
Disadvantage:
FieldName Type
61
Sname varchar2(20)
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","adars
h","patel");
Statement st=con.createStatement();
pw.println("connection established successfully...!!");
ResultSetrs=st.executeQuery("Select * from "+tb);
pw.println("<table border=1>");
while(rs.next())
{
pw.println("<tr><td>"+rs.getInt(1)+"</td><td>"+rs.getString(2)+"</td>"+"<
/tr>");
}
pw.println("</table>");
pw.close();
62
}
catch (Exception e)
{
pw.println("The error is:" + e.getMessage());
} }}
web.xml
63
UNIT III
SERVER SIDE PROGRAMMING
JSP: Understanding Java Server Pages-JSP Standard Tag Library(JSTL)-Creating HTML forms by
embedding JSP code.
JSP DEFINITION:
Java Server Pages (JSP) is a server-side programming technology that enables the creation
of dynamic, platform-independent method for building Web-based applications.
JSP technology is used to create web application just like Servlet technology. It can be
thought of as an extension to servlet because it provides more functionality than servlet such
as expression language, JSTL, etc.
A JSP page consists of HTML tags and JSP tags. The jsp pages are easier to maintain than
servlet because we can separate designing and development. It provides some additional
features such as Expression Language, Custom Tag etc.
There are many advantages of JSP over servlet. They are as follows:
1) Extension to Servlet
JSP technology is the extension to servlet technology. We can use all the features of servlet in
JSP. In addition to, we can use implicit objects, predefined tags, expression language and
Custom tags in JSP which makes JSP development easy.
2) Easy to maintain
JSP can be easily managed because we can easily separate our business logic with presentation
logic. In servlet technology, we mix our business logic with the presentation logic.
A JSP container works with the Web server to provide the runtime environment and other services
a JSP needs. It knows how to understand the special elements that are part of JSPs.
Following diagram shows the position of JSP container and JSP files in a Web Application.
PROCESSING OF JSP
The following steps explain how the web server creates the web page using JSP:
As with a normal page, your browser sends an HTTP request to the web server.
The web server recognizes that the HTTP request is for a JSP page and forwards it to a JSP
engine. This is done by using the URL or JSP page which ends with .jspinstead of .html.
The JSP engine loads the JSP page from disk and converts it into a servlet content. This
conversion is very simple in which all template text is converted to println( ) statements
and all JSP elements are converted to Java code that implements the corresponding
dynamic behavior of the page.
The JSP engine compiles the servlet into an executable class and forwards the original
request to a servlet engine.
A part of the web server called the servlet engine loads the Servlet class and executes it.
During execution, the servlet produces an output in HTML format, which the servlet
engine passes to the web server inside an HTTP response.
The web server forwards the HTTP response to your browser in terms of static HTML
content.
Finally web browser handles the dynamically generated HTML page inside the HTTP
response exactly as if it were a static page.
All the above mentioned steps can be shown below in the following diagram:
Typically, the JSP engine checks to see whether a servlet for a JSP file already exists and
whether the modification date on the JSP is older than the servlet.
If the JSP is older than its generated servlet, the JSP container assumes that the JSP hasn't
changed and that the generated servlet still matches the JSP's contents.
This makes the process more efficient than with other scripting languages (such as PHP)
and therefore faster.
So in a way, a JSP page is really just another way to write a servlet without having to be a
Java programming wiz.
Except for the translation phase, a JSP page is handled exactly like a regular servlet.
LIFECYCLE OF JSP
A JSP life cycle can be defined as the entire process from its creation till the destruction which is
similar to a servlet life cycle with an additional step which is required to compile a JSP into
servlet.
Compilation
Initialization
Execution
Cleanup
The four major phases of JSP life cycle are very similar to Servlet Life Cycle and they are as
follows:
JSP Compilation:
When a browser asks for a JSP, the JSP engine first checks to see whether it needs to compile the
page. If the page has never been compiled, or if the JSP has been modified since it was last
compiled, the JSP engine compiles the page.
JSP Initialization:
When a container loads a JSP it invokes the jspInit() method before servicing any requests. If you
need to perform JSP-specific initialization, override the jspInit() method:
publicvoid jspInit(){
// Initialization code...
}
Typically initialization is performed only once and as with the servlet init method, you generally
initialize database connections, open files, and create lookup tables in the jspInit method.
JSP Execution:
This phase of the JSP life cycle represents all interactions with requests until the JSP is destroyed.
Whenever a browser requests a JSP and the page has been loaded and initialized, the JSP engine
invokes the _jspService() method in the JSP.
The _jspService() method of a JSP is invoked once per a request and is responsible for generating
the response for that request and this method is also responsible for generating responses to all
seven of the HTTP methods ie. GET, POST, DELETE etc.
JSP Cleanup:
The destruction phase of the JSP life cycle represents when a JSP is being removed from use by a
container.
The jspDestroy() method is the JSP equivalent of the destroy method for servlets. Override
jspDestroy when you need to perform any cleanup, such as releasing database connections or
closing open files.
publicvoid jspDestroy()
{
// Your cleanup code goes here.
}
CONTROL-FLOW STATEMENTS:
JSP provides full power of Java to be embedded in your web application.
You can use all the APIs and building blocks of Java in your JSP programming including decision making
statements, loops etc.
Decision-Making Statements:
The if...else block starts out like an ordinary Scriptlet, but the Scriptlet is closed at each line with HTML text
included between Scriptlet tags.
<%!int day =3; %>
<html>
<head><title>IF...ELSE Example</title></head>
<body>
<%if(day ==1| day ==7){ %>
<p> Today is weekend</p>
<%}else{ %>
<p> Today is not weekend</p>
<%} %>
</body>
</html>
This would produce following result:
Today is not weekend
Switch Case:
Now look at the following switch...case block which has been written a bit differentlty
usingout.println() and inside Scriptletas:
Loop Statements:
You can also use three basic types of looping blocks in Java: for, while,and
do…whileblocks in your JSP programming.
JSP Tutorial
JSP Tutorial
JSP Tutorial
JSP Tutorial
JSP Tutorial
JSP Tutorial
JSP Operators:
JSP supports all the logical and arithmetic operators supported by Java.
Following table give a list of all the operators with the highest precedence appear at the top
of the table, those with the lowest appear at the bottom.
Within an expression, higher precedence operators will be evaluated first.
JSP Literals:
SCRIPTLET:
A scriptlet can contain any number of JAVA language statements, variable or method declarations,
or expressions that are valid in the page scripting language.
<jsp:scriptlet>
code fragment
</jsp:scriptlet>
In JSP, java code can be written inside the jsp page using the scriptlet tag.
The scripting elements provide the ability to insert java code inside the jsp. There are three types of
scripting elements:
o scriptlet tag
o expression tag
o declaration tag
File: index.html
<html>
<body>
<form action="welcome.jsp">
<input type="text" name="uname">
<input type="submit" value="go"><br/>
</form>
</body>
</html>
File: welcome.jsp
<html>
<body>
<%
String name=request.getParameter("uname");
out.print("welcome "+name);
%>
</form>
</body>
</html>
JSP expression tag
The code placed within JSP expression tag is written to the output stream of the response.
So you need not write out.print() to write data.
It is mainly used to print the values of variable or method.
In this example of jsp expression tag, we are simply displaying a welcome message.
<html>
<body>
<%= "welcome to jsp" %>
</body>
</html>
Note: Do not end your statement with semicolon in case of expression tag.
To display the current time, we have used the getTime() method of Calendar class. The getTime() is
an instance method of Calendar class, so we have called it after getting the instance of Calendar
class by the getInstance() method.
index.jsp
<html>
<body>
Current Time: <%= java.util.Calendar.getInstance().getTime() %>
</body>
</html>
In this example, we are printing the username using the expression tag. The index.html file gets the
username and sends the request to the welcome.jsp file, which displays the username.
File: index.jsp
<html>
<body>
<form action="welcome.jsp">
<input type="text" name="uname"><br/>
<input type="submit" value="go">
</form>
</body>
</html>
File: welcome.jsp
<html>
<body>
<%= "Welcome "+request.getParameter("uname") %>
</body>
</html>
JSP Declaration Tag
In this example of JSP declaration tag, we are declaring the field and printing the value of the
declared field using the jsp expression tag.
index.jsp
<html>
<body>
<%! int data=50; %>
<%= "Value of the variable is:"+data %>
</body>
</html>
In this example of JSP declaration tag, we are defining the method which returns the cube of
given number and calling this method from the jsp expression tag.
But we can also use jsp scriptlet tag to call the declared method.
index.jsp
<html>
<body>
<%!
int cube(int n){
return n*n*n*;
}
%>
<%= "Cube of 3 is:"+cube(3) %>
</body>
</html>
JSP Comments:
JSP comment marks text or statements that the JSP container should ignore. A JSP comment is
useful when you want to hide or "comment out" part of your JSP page.
There are a small number of special constructs you can use in various cases to insert comments or
characters that would otherwise be treated specially. Here's a summary:
Syntax Purpose
JSP DIRECTIVES:
The jsp directives are messages that tells the web container how to translate a JSP page into the
corresponding servlet.
page directive
include directive
taglib directive
<%@ page ... %> Defines page-dependent attributes, such as scripting language,
error page, and buffering requirements.
<%@ include ... %> Includes a file during the translation phase.
<%@ taglib ... %> Declares a tag library, containing custom actions, used in the
page
1. page directive
The page directive defines attributes that apply to an entire JSP page.
This directive tells the container to merge the content of other external files with the
current JSP during the translation phase.
The filename in the include directive is actually a relative URL. If you just specify a filename with
no associated path, the JSP compiler assumes that the file is in the same directory as your JSP.
3. taglib Directive:
The JavaServer Pages API allows you to define custom JSP tags that look like HTML or
XML tags and a tag library is a set of user-defined tags that implement custom behavior.
The taglib directive declares that your JSP page uses a set of custom tags, identifies the
location of the library, and provides a means for identifying the custom tags in your JSP
page.
Where the uri attribute value resolves to a location the container understands and
the prefix attribute informs a container what bits of markup are custom actions.
JSP ACTIONS:
JSP actions use constructs in XML syntax to control the behavior of the servlet engine. You can
dynamically insert a file, reuse JavaBeans components, forward the user to another page, or
generate HTML for the Java plugin.
There is only one syntax for the Action element, as it conforms to the XML standard:
Action elements are basically predefined functions and there are following JSP actions available:
Syntax Purpose
Objects Description
response This is the HttpServletResponse object associated with the response to the
client.
out This is the PrintWriter object used to send output to the client.
JSTL has support for common, structural tasks such as iteration and conditionals, tags for
manipulating XML documents, internationalization tags, and SQL tags. It also provides a
framework for integrating existing custom tags with JSTL tags.
The JSTL tags can be classified, according to their functions, into following JSTL tag library
groups that can be used when creating a JSP page:
Core Tags
Formatting tags
SQL tags
XML tags
JSTL Functions
Core Tags:
The core group of tags are the most frequently used JSTL tags. Following is the syntax to include
JSTL Core library in your JSP:
Tag Description
<c:catch> Catches any Throwable that occurs in its body and optionally
exposes it.
<c:if> Simple conditional tag which evalutes its body if the supplied
condition is true.
<c:otherwise > Subtag of <choose> that follows <when> tags and runs only if
all of the prior conditions evaluated to 'false'.
<c:forEach > The basic iteration tag, accepting many different collection
types and supporting subsetting and other functionality .
<c:forTokens> Iterates over tokens, separated by the supplied delimeters.
<html>
<head>
</head>
<body>
</html>
<tag> , &
<body>
<c:setvar="salary"scope="session"value="${2000*2}"/>
<c:outvalue="${salary}"/>
</body>
4000
<body>
<c:setvar="salary"scope="session"value="${2000*2}"/>
<p>Before Remove Value: <c:outvalue="${salary}"/></p>
<c:removevar="salary"/>
<p>After Remove Value: <c:outvalue="${salary}"/></p>
</body>
This would produce following result:
<body>
<c:setvar="salary"scope="session"value="${2000*2}"/>
<c:iftest="${salary > 2000}">
<p>My salary is: <c:outvalue="${salary}"/><p>
</c:if>
</body>
Formatting tags:
The JSTL formatting tags are used to format and display text, the date, the time, and numbers for
internationalized Web sites. Following is the syntax to include Formatting library in your JSP:
Tag Description
<html>
<head>
</head>
<body>
<h3>Number Format:</h3>
<c:setvar="balance"value="120000.2309"/>
<p>Formatted Number (1): <fmt:formatNumbervalue="${balance}"
type="currency"/></p>
<p>Formatted Number (2): <fmt:formatNumbertype="number"
maxIntegerDigits="3"value="${balance}"/></p>
</body>
</html>
Number Format:
SQL tags:
The JSTL SQL tag library provides tags for interacting with relational databases (RDBMSs) such
as Oracle, mySQL, or Microsoft SQL Server.
Tag Description
<html>
<head>
</head>
<body>
<sql:setDataSourcevar="snapshot"driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/TEST"
user="user_id"password="mypassword"/>
<sql:querydataSource="${snapshot}"sql="..."var="result"/>
</body>
</html>
XML tags:
The JSTL XML tags provide a JSP-centric way of creating and manipulating XML documents.
Following is the syntax to include JSTL XML library in your JSP.
The JSTL XML tag library has custom tags for interacting with XML data. This includes parsing
XML, transforming XML data, and flow control based on XPath expressions.
Before you proceed with the examples, you would need to copy following two XML and XPath
related libraries into your <Tomcat Installation Directory>\lib:
Tag Description
<x:when > Subtag of <choose> that includes its body if its expression
evalutes to 'true'
<x:otherwise > Subtag of <choose> that follows <when> tags and runs only if
all of the prior conditions evaluated to 'false'
<x:param > Use along with the transform tag to set a parameter in the
XSLT stylesheet
JSTL Functions:
JSTL includes a number of standard functions, most of which are common string manipulation
functions. Following is the syntax to include JSTL Functions library in your JSP:
Function Description
<html>
<head>
<body>
</body>
</html>
<body>
</body>
<body>
<body>
JSP handles form data parsing automatically using the following methods depending on the
situation:
getParameterValues(): Call this method if the parameter appears more than once and
returns multiple values, for example checkbox.
getParameterNames(): Call this method if you want a complete list of all parameters in
the current request.
getInputStream(): Call this method to read binary data stream coming from the client.
<html>
<body>
<formaction="main.jsp"method="GET">
First Name: <inputtype="text"name="first_name">
<br/>
Last Name: <inputtype="text"name="last_name"/>
<inputtype="submit"value="Submit"/>
</form>
</body>
</html>
First Name:
Last Name:
Try to enter First Name and Last Name and then click submit button to see the result on your local
machine where tomcat is running. Based on the input provided, it will generate similar result as
mentioned in the above example.
http://localhost:8080/main.jsp?first_name=ZARA&last_name=ALI
Below is main.jsp JSP program to handle input given by web browser. We are going to
use getParameter() method which makes it very easy to access passed information:
<html>
<head>
<title>Using GET Method to Read Form Data</title>
</head>
<body>
<center>
<h1>Using GET Method to Read Form Data</h1>
<ul>
<li><p><b>First Name:</b>
<%= request.getParameter("first_name")%>
</p></li>
<li><p><b>Last Name:</b>
<%= request.getParameter("last_name")%>
</p></li>
</ul>
</body>
</html>
Now type http://localhost:8080/main.jsp?first_name=ZARA&last_name=ALI in your browser's
Location:box. This would generate following result:
<html>
<head>
<title>Using GET and POST Method to Read Form Data</title>
</head>
<body>
<center>
<h1>Using GET Method to Read Form Data</h1>
<ul>
<li><p><b>First Name:</b>
<%= request.getParameter("first_name")%>
</p></li>
<li><p><b>Last Name:</b>
<%= request.getParameter("last_name")%>
</p></li>
</ul>
</body>
</html>
<html>
<body>
<formaction="main.jsp"method="POST">
First Name: <inputtype="text"name="first_name">
<br/>
Last Name: <inputtype="text"name="last_name"/>
<inputtype="submit"value="Submit"/>
</form>
</body>
</html>
First Name:
Last Name:
Here is example HTML code, CheckBox.htm, for a form with two checkboxes
<html>
<body>
<formaction="main.jsp"method="POST"target="_blank">
<inputtype="checkbox"name="maths"checked="checked"/> Maths
<inputtype="checkbox"name="physics"/> Physics
<inputtype="checkbox"name="chemistry"checked="checked"/> Chemistry
<inputtype="submit"value="Select Subject"/>
</form>
</body>
</html>
Below is main.jsp JSP program to handle input given by web browser for checkbox button.
<html>
<head>
<title>Reading Checkbox Data</title>
</head>
<body>
<center>
<h1>Reading Checkbox Data</h1>
<ul>
<li><p><b>Maths Flag:</b>
<%= request.getParameter("maths")%>
</p></li>
<li><p><b>Physics Flag:</b>
<%= request.getParameter("physics")%>
</p></li>
<li><p><b>Chemistry Flag:</b>
<%= request.getParameter("chemistry")%>
</p></li>
</ul>
</body>
</html>
Maths Flag : : on
Chemistry Flag: : on
This method returns an Enumeration that contains the parameter names in an unspecified
order.
Once we have an Enumeration, we can loop down the Enumeration in the standard manner,
using hasMoreElements() method to determine when to stop and using nextElement() method to
get each parameter name.
while(paramNames.hasMoreElements()){
String paramName =(String)paramNames.nextElement();
out.print("<tr><td>"+ paramName +"</td>\n");
String paramValue = request.getHeader(paramName);
out.println("<td> "+ paramValue +"</td></tr>\n");
}
%>
</table>
</center>
</body>
</html>
<html>
<body>
<formaction="main.jsp"method="POST"target="_blank">
<inputtype="checkbox"name="maths"checked="checked"/> Maths
<inputtype="checkbox"name="physics"/> Physics
<inputtype="checkbox"name="chemistry"checked="checked"/> Chem
<inputtype="submit"value="Select Subject"/>
</form>
</body>
</html>
Now try calling JSP using above Hello.htm, this would generate a result something like as below
based on the provided input:
maths on
chemistry on
PHP and XML 8
4
4.1 INTRODUCTION TO PHP
❖ PHP can handle forms, i.e. gather data from files, save data to a file, through email
the user can send data, return data to the user.
❖ The user can add, delete, and modify elements within the database through PHP.
❖ They can access cookies variables and set cookies.
❖ Using PHP, the user can restrict users to access some pages of the website.
❖ It can encrypt data.
Working of PHP
When the client requests a PHP page residing on the server, the server first performs
the operations mentioned by the PHP code of the page. Then is sends the output of the PHP
page in HTML format. So when the user views the source code of the page, it will be full of
HTML tags. All the work is done at the server side.
Variables used before they are assigned have default values. PHP automatically
converts types from one to another when necessary. PHP has a total of eight data
types:
• The first five are simple types, and the arrays and objects are compound
types.
use define() function and retrieve the value of a constant. The function constant() is used to
read a constant's value .
define(name, value, case-insensitive)
The name specifies the name of the constant, value: Specifies the value of the constant
and case-insensitive: Specifies whether the constant name should be case-insensitive. Default
is false
Differences between constants and variables in PHP
Constants are defined using define(). Variables are defined using assignment
statement.
Pre-defined constants
Name Description
__FILE__ The full path and filename of the file. If used inside an include,
the name of the included file is returned. Since PHP 4.0.2,
__FILE__ always contains an absolute path whereas in older
versions it contained relative path under some circumstances
__METHOD__ The class method name. (Added in PHP 5.0.0) The method
name is returned as it was declared (case-sensitive).
Internet Programming 4.5
echo print
This does not have return value. This has a return value of 1.
This can take multiple parameters. This can take only one parameter.
➢ Operators
Operators are used to perform operations on variables and values.PHP divides the
operators in the following groups: Arithmetic operators, Assignment operators,
Comparison operators, Increment/Decrement operators, Logical operators, String
operators and Array operators.
PHP CONTROL STATMENTS
Decision Making Statements
The if, else if ...else and switch statements are used to take decision based on the
different condition.
• if statement - executes some code only if a specified condition is true.
• if...else statement - executes some code if a condition is true and another code if the
condition is false.
• if...else if....else statement - specifies a new condition to test, if the first condition is
false
• switch statement - selects one of many blocks of code to be executed
➢ if statement
if statement
<?php
$t = date("H");
if ($t < "20") //This program outputs the echo statement if the hour is <20
{
echo "Have a good day!";
}
?>
4.6 PHP and XML 8
➢ if-else statement
Use the if....else statement to execute some code if a condition is true and another code
if the condition is false.
if else statement
<?php
$t = date("H");
if ($t < "20") {
echo "Have a good day!";
} else {
echo "Have a good night!";
}
?>
➢ if-else ladder
Use the if....else if...else statement to specify a new condition to test, if the first condition
is false.
if-else ladder
<?php
$t = date("H");
if ($t < "10") {
echo "Have a good morning!";
} elseif ($t < "20") {
echo "Have a good day!";
} else {
echo "Have a good night!";
}
?>
➢ switch statement
To select one of many blocks of code to be executed, use the Switch statement. The switch
statement is used to avoid long blocks of if..elseif..else code. The switch statement works
in an unusual way. First it evaluates given expression then seeks a label to match the
resulting value. If a matching value is found then the code associated with the matching
Internet Programming 4.7
label will be executed or if none of the labels match then statement will execute any
specified default code.
Switch statement
<html>
<body>
<?php $d=date("D");
switch ($d)
{
case "Mon":
echo "Today is Monday";
break;
case "Tue":
echo "Today is Tuesday";
break;
case "Wed":
echo "Today is Wednesday";
break;
case "Thu":
echo "Today is Thursday";
break;
case "Fri":
echo "Today is Friday";
break;
case "Sat":
echo "Today is Saturday";
break;
case "Sun":
echo "Today is Sunday";
break;
default:
echo "Wonder which day is this ?";
4.8 PHP and XML 8
}
?>
</body></html>
Looping Statements
Loops in PHP are used to execute the same block of code a specified number of times.
PHP supports following four loop types
<html>
<body>
<?php
$a = 0;
$b = 0;
for( $i=0; $i<5; $i++ )
{
$a += 10;
$b += 5;
}
echo ("At the end of the loop a=$a and b=$b" );
?>
</body></html>
At the end of the loop a=50 and b=25
➢ While loop
The while statement will execute a block of code as long as a test expression is true. If the
test expression is true then the code block will be executed. After the code has executed
the test expression will again be evaluated and the loop will continue until the test
expression is found to be false.
Internet Programming 4.9
While loop
<html> <body>
<?php
$i = 0;
$num = 50;
while( $i < 10)
{
$num--;
$i++;
}
echo ("Loop stopped at i = $i and num = $num" );
?> </body></html>
Loop stopped at i = 1 and num = 40
➢ Do…while loop
<html> <body>
<?php
$i = 0;
$num = 0;
do {
$i++;
}while( $i < 10 );
echo ("Loop stopped at i = $i" );
?></body></html>
Loop stopped at i = 10
The for each statement is used to loop through arrays. For each pass the value of the
current array element is assigned to $value and the array pointer is moved by one and in
the next pass next element will be processed.
<html> <body>
<?
php $array = array( 11, 12, 13,14, 15);
4.10 PHP and XML 8
➢ Break statement
The PHP break keyword is used to terminate the execution of a loop prematurely.
The break statement is situated inside the statement blockAfter coming out of a
loop immediate statement to the loop will be executed.
➢ Continue statement
The PHP continue keyword is used to halt the current iteration of a loop but it
does not terminate the loop. Just like the break statement the continue statement is
situated inside the statement block containing the code that the loop executes,
preceded by a conditional test. For the pass encountering continue statement, rest
of the loop code is skipped and next pass starts.
FUNCTIONS
A function is a block of statements that can be used repeatedly in a program. A
function will not execute immediately when a page loads. A function will be executed by a
call to the function. There are two types of functions: Built-in functions and User defined
functions
User defined Functions
A user defined function declaration starts with the word function. Information can be
passed to functions through arguments. An argument is just like a variable. Arguments are
specified after the function name, inside the parentheses.
<?php
function sum($x, $y) {
$z = $x + $y;
return $z; }
echo "5 + 10 = " . sum(5, 10) . "<br>";
Internet Programming 4.11
Built-in functions
Array functions
Function Description
array() Creates an array
array_chunk() Splits an array into chunks of arrays
array_column() Returns the values from a single column in the input array
array_combine() Creates an array by using the elements from one "keys" array and
one "values" array
array_count_values( Counts all the values of an array
)
array_diff() Compare arrays, and returns the differences (compare values only)
array_diff_key() Compare arrays, and returns the differences (compare keys only)
array_fill() Fills an array with values
array_fill_keys() Fills an array with values, specifying keys
array_filter() Filters the values of an array using a callback function
array_flip() Flips/Exchanges all keys with their associated values in an array
array_intersect() Compare arrays, and returns the matches (compare values only)
array_key_exists() Checks if the specified key exists in the array
array_keys() Returns all the keys of an array
array_map() Sends each value of an array to a user-made function, which returns
new values
array_merge() Merges one or more arrays into one array
array_multisort() Sorts multiple or multi-dimensional arrays
4.12 PHP and XML 8
➢ Calendar Functions
The calendar extension contains functions that simplify converting between different
calendar formats. It is based on the Julian Day Count, which is a count of days starting
from January 1st, 4713 B.C. To convert between calendar formats, first convert to Julian
Day Count, then to the calendar of the user’s choice.
Function Description
cal_days_in_month() Returns the number of days in a month for a specified year and
calendar
cal_from_jd() Converts a Julian Day Count into a date of a specified calendar
4.14 PHP and XML 8
➢ Date Functions
The date/time functions allow to get the date and time from the server on which PHP
script runs. These functions depend on the locale settings of the server. Remember to
take daylight saving time and leap years into consideration when working with these
functions.
Function Description
checkdate() Validates a Gregorian date
date_add() Adds days, months, years, hours, minutes, and
seconds to a date
date_create_from_format() Returns a new DateTime object formatted
according to a specified format
date_create() Returns a new DateTime object
date_date_set() Sets a new date
date_default_timezone_get() Returns the default timezone used by all date/time
functions
date_default_timezone_set() Sets the default timezone used by all date/time
functions
Internet Programming 4.15
➢ Directory functions
The directory function allows retrieving information about directories and their contents.
Function Description
Function Description
Function Description
basename() Returns the filename component of a path
chgrp() Changes the file group
chmod() Changes the file mode
chown() Changes the file owner
clearstatcache() Clears the file status cache
copy() Copies a file
dirname() Returns the directory name component of a path
disk_free_space() Returns the free space of a directory
disk_total_space() Returns the total size of a directory
4.18 PHP and XML 8
➢ Math functions
Function Description
abs() Returns the absolute (positive) value of a number
acos() Returns the arc cosine of a number
acosh() Returns the inverse hyperbolic cosine of a number
asin() Returns the arc sine of a number
asinh() Returns the inverse hyperbolic sine of a number
atan() Returns the arc tangent of a number in radians
atan2() Returns the arc tangent of two variables x and y
atanh() Returns the inverse hyperbolic tangent of a number
bindec() Converts a binary number to a decimal number
ceil() Rounds a number up to the nearest integer
cos() Returns the cosine of a number
cosh() Returns the hyperbolic cosine of a number
decbin() Converts a decimal number to a binary number
dechex() Converts a decimal number to a hexadecimal number
decoct() Converts a decimal number to an octal number
deg2rad() Converts a degree value to a radian value
Internet Programming 4.21
Function Description
bin2hex() Converts a string of ASCII characters to hexadecimal values
chop() Removes whitespace or other characters from the right end of a
string
chr() Returns a character from a specified ASCII value
chunk_split() Splits a string into a series of smaller parts
4.22 PHP and XML 8
strrpos() Finds the position of the last occurrence of a string inside another
string (case-sensitive)
strstr() Finds the first occurrence of a string inside another string (case-
sensitive)
substr_compare() Compares two strings from a specified start position (binary safe
and optionally case-sensitive)
➢ Miscellaneous Functions
Function Description
connection_aborted() Checks whether the client has disconnected
connection_status() Returns the current connection status
connection_timeout() Deprecated in PHP 4.0.5. Checks whether the script has
timed out
constant() Returns the value of a constant
Internet Programming 4.25
PHP COOKIES
Cookies are small data stored on the client computer and they are kept of use
tracking purpose.
PHP transparently supports HTTP cookies. There are three steps involved in
identifying returning users:
• Server script sends a set of cookies to the browser
• Browser stores this information on local machine for future use.
• When next time browser sends any request to web server then it sends those cookies
information to the server and server uses that information to identify the user.
4.26 PHP and XML 8
• Value: This sets the value of the named variable and is the content that the user wants to
store.
• Expiry: This specify a future time in seconds since 00:00:00 GMT on 1st Jan 1970. After
this time cookie will become inaccessible. If this parameter is not set then cookie will
automatically expire when the browser is closed.
• Path: This specifies the directories for which the cookie is valid. A single forward slash
character permits the cookie to be valid for all directories.
• Domain: This can be used to specify the domain name in very large domains and must
contain at least two periods to be valid. All cookies are only valid for the host and domain
which created them.
• Security: This can be set to 1 to specify that the cookie should only be sent by secure
transmission using HTTPS otherwise set to 0 which mean cookie can be sent by regular
HTTP.
Setting a cookie
<?php
setcookie("name", "John Watkin", time()+3600, "/","", 0);
setcookie("age", "36", time()+3600, "/", "", 0); ?>
<html><head> <title>Setting Cookies with PHP</title> </head>
<body>
<?php echo "Set Cookies"?> </body></html>
Accessing cookies
➢ Deleting Cookie
To delete a cookie users should call setcookie() with the name argument only but this
does not always work well, however, and should not be relied on. It is safest to set the
cookie with a date that has already expired
<?php
setcookie( "name", "", time()- 60, "/","", 0);
setcookie( "age", "", time()- 60, "/","", 0);
?>
<html><head> <title>Deleting Cookies with PHP</title> </head>
<body>
<?php echo "Deleted Cookies" ?> </body></html>
PHP offers functions specific to two sets of regular expression functions, each
corresponding to a certain type of regular expression: POSIX Regular Expressions and PERL
Style Regular Expressions.
POSIX Regular Expressions
• The structure of a POSIX regular expression is similar to a typical arithmetic expression:
various elements (operators) are combined to form more complex expressions.
4.28 PHP and XML 8
Expression Description
p? It matches any string containing zero or more p's. This is just an alternative
way to use p*.
PHP currently offers seven functions for searching strings using POSIX-style regular
expressions:
Function Description
The split() function will divide a string into various elements, the
split() boundaries of each element based on the occurrence of pattern in
string.
The spliti() function operates exactly in the same manner as its sibling
spliti()
split(), except that it is not case sensitive.
Metacharacters Description
. a single character
\s a whitespace character (space, tab, newline)
\S non-whitespace character
\d a digit (0-9)
\D a non-digit
4.30 PHP and XML 8
Modifiers: Several modifiers are available that can make the user work with regexps much
easier, like case sensitivity, searching in multiple lines etc.
Modifiers Description
I Makes the match case insensitive
Specifies that if the string has newline or carriage return characters, the ^
M and $ operators will now match against a newline boundary, instead of
string boundary
O Evaluates the expression only once
S Allows use of . to match a newline character
X Allows the user to use white space in the expression for clarity
G Globally finds all matches
Cg Allows a search to continue even after a global match fails
Functions Description
The preg_match() function searches string for pattern, returning true
preg_match()
if pattern exists, and false otherwise.
The preg_match_all() function matches all occurrences of pattern in
preg_match_all()
string.
The preg_replace() function operates just like ereg_replace(), except
preg_replace() that regular expressions can be used in the pattern and replacement
input parameters.
The preg_split() function operates exactly like split(), except that
preg_split()
regular expressions are accepted as input parameters for pattern.
The preg_grep() function searches all elements of input_array,
preg_grep()
returning all elements matching the regexp pattern.
preg_ quote() Quote regular expression characters
Internet Programming 4.31
DATABASE CONNECTIVITY
PHP will work with virtually all database software, including Oracle and Sybase but
most commonly used is freely available MySQL database.
Opening Database Connection:
PHP provides mysql_connect function to open a database connection. This function
takes five parameters and returns a MySQL link identifier on success, or FALSE on failure.
connection mysql_connect(server,user,password,new_link,client_flag);
• Server: The host name running database server. If not specified then default value is
localhost:3306. This is optional.
• User: The username accessing the database. If not specified then default is the name of the
user that owns the server process. This is optional.
• Password: The password of the user accessing the database. If not specified then default
is an empty password.
• new_link: If a second call is made to mysql_connect() with the same arguments, no new
connection will be established; instead, the identifier of the already opened connection will
be returned. This is optional.
• client_flags: This is optional. A combination of the following constants:
1. MYSQL_CLIENT_SSL - Use SSL encryption
2. MYSQL_CLIENT_COMPRESS - Use compression protocol
3. MYSQL_CLIENT_IGNORE_SPACE - Allow space after function names
4. MYSQL_CLIENT_INTERACTIVE - Allow interactive timeout seconds of
inactivity before closing the connection
➢ Closing Database Connection:
PHP uses mysql_close to close a database connection. This function takes connection
resource returned by mysql_connect function. It returns TRUE on success or FALSE
on failure. If a resource is not specified then last opened database is closed.
bool mysql_close ( resource $link_identifier );
➢ Creating a Database:
To create and delete a database the users should have admin privilege. PHP uses
mysql_query function to create a MySQL database. This function takes two parameters
and returns TRUE on success or FALSE on failure.
bool mysql_query( sql, connection );
4.32 PHP and XML 8
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass); //Creating a connection
if(! $conn )
{ die('Could not connect: ' . mysql_error()); }
echo 'Connected successfully';
$sql = 'CREATE TABLE employee( '. 'emp_id INT NOT NULL AUTO_INCREMENT, '.
'emp_name VARCHAR(20) NOT NULL, '. 'emp_address VARCHAR(20) NOT NULL,
'.'emp_salary INT NOT NULL, '. 'join_date timestamp(14) NOT NULL, '.
'primary key ( emp_id ))'; //Creating a table
mysql_select_db('test_db'); //Seeting a table
$retval = mysql_query( $sql, $conn );
if(! $retval )
Internet Programming 4.33
In case the user need to create many tables then it is better to create a text file first and
put all the SQL commands in that text file and then load that file into $sql variable and
execute those commands.
➢ Deleting a Database:
If a database is no longer required then it can be deleted forever. The users can use pass
an SQL command to mysql_query to delete a database.
➢ Deleting a Table:
It is again a matter of issuing one SQL command through mysql_query function to
delete any database table. But be very careful while using this command because by
doing so the users can delete some important information the user has in the table.
Deleting a table
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{ die('Could not connect: ' . mysql_error()); }
$sql = 'DROP TABLE employee'; //Deleting a table
$retval = mysql_query( $sql, $conn );
if(! $retval )
{ die('Could not delete table employee: ' . mysql_error()); }
echo "Table deleted successfully\n";
mysql_close($conn); ?>
form and then those values will be captured using PHP script and finally they will be
inserted into MySQL tables.
Inserting values
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{ die('Could not connect: ' . mysql_error()); }
$sql = 'INSERT INTO employee '. '(emp_name,emp_address, emp_salary, join_date) '.
'VALUES ( "guest", "XYZ", 2000, NOW() )';
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{ die('Could not enter data: ' . mysql_error()); }
echo "Entered data successfully\n";
mysql_close($conn); ?>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
Internet Programming 4.35
if(! $conn )
{ die('Could not connect: ' . mysql_error()); }
$sql = 'SELECT emp_id, emp_name, emp_salary FROM employee';
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{ die('Could not get data: ' . mysql_error()); }
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{ echo "EMP ID :{$row['emp_id']} <br> ".
"EMP NAME : {$row['emp_name']} <br> ".
"EMP SALARY : {$row['emp_salary']} <br> "; }
echo "Fetched data successfully\n";
mysql_close($conn); ?>
if(! $retval )
{ die('Could not delete data: ' . mysql_error()); }
echo "Deleted data successfully\n";
mysql_close($conn); }
else
{ ?>
<form method="post" action="<?php $_PHP_SELF ?>">
<table width="400" border="0" cellspacing="1" cellpadding="2"> <tr>
<td width="100">Employee ID</td>
<td><input name="emp_id" type="text" id="emp_id"></td> </tr>
<tr> <td width="100"></td>
<td></td> </tr>
<tr> <td width="100"></td>
<td> <input name="delete" type="submit" id="delete" value="Delete"> </td> </tr>
</table> </form>
<?php } ?> </body></html>
$emp_salary = $_POST['emp_salary'];
$sql = "UPDATE employee SET emp_salary = $emp_salary WHERE emp_id = $emp_id"
;
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{ die('Could not update data: ' . mysql_error()); }
echo "Updated data successfully\n";
mysql_close($conn); }
else {?>
<form method="post" action="<?php $_PHP_SELF ?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr> <td width="100">Employee ID</td>
<td><input name="emp_id" type="text" id="emp_id"></td> </tr>
<tr> <td width="100">Employee Salary</td>
<td><input name="emp_salary" type="text" id="emp_salary"></td> </tr>
<tr> <td width="100"></td> <td></td> </tr>
<tr> <td width="100"></td> <td>
<input name="update" type="submit" id="update" value="Update"> </td> </tr>
</table> </form> <?php }
?> </body></html>
XML is a markup language that defines set of rules for encoding documents in a
format that is both human-readable and machine-readable.
XML is not a programming language. It is usually stored in a simple text file and is
processed by special software that is capable of interpreting XML. XML don’t have pre -
defined tags and the tags are stricter than HTML.
4.38 PHP and XML 8
XML is extensible: XML allows the user to create user defined self-descriptive tags, or
language that suits the application.
XML carries the data, does not present it: XML allows storing the data irrespective of how
it will be presented.
XML is a public standard: XML was developed by an organization called the World Wide
Web Consortium (W3C) and is available as an open standard.
Features of XML
❖ XML simplifies the creation of HTML documents for large web sites.
❖ XML can be used to exchange the information between organizations and systems.
❖ XML can be used for offloading and reloading of databases.
❖ XML can be used to store and arrange the data, which can customize the user data
handling needs.
❖ XML can easily be merged with style sheets to create almost any desired output.
❖ Any type of data can be expressed as an XML document
❖ It has syndicated content, where content is being made available to different web
sites.
❖ It suits well for electronic commerce applications where different organizations
collaborate to serve a customer.
❖ It supports scientific applications with new markup languages for mathematical and
chemical formulas.
❖ It also supports electronic books with new markup languages to express rights and
ownership.
❖ XML could also be used in handheld devices and smart phones with new markup
languages optimized for these devices.
Syntax Rules
Syntax Rules
T
e
Tag & Elements Attributes
x
Fig 4.1 Syntax Rules of XML t
Internet Programming 4.39
➢ XML Declaration
The XML document can optionally have an XML declaration.
<?xml version="1.0" encoding="UTF-8"?>.
Version is the XML version and encoding specifies the character encoding used in the
document.
Syntax Rules for XML declaration
• The XML declaration is case sensitive and must begin with "<?xml>" where "xml"
is written in lower-case.
• If document contains XML declaration, then it strictly needs to be the first
statement of the XML document.
• The XML declaration strictly needs be the first statement in the XML document.
• An HTTP protocol can override the value of encoding that the user put in the XML
declaration.
➢ Tags and Elements
An XML file is structured by several XML-elements also called XML-nodes or XML-
tags. XML-elements' names are enclosed by angular brackets <>.
<element>....</element> or
<element/>
Nesting of elements
An XML-element can contain multiple XML-elements as its children, but the children
elements must not overlap. i.e., an end tag of an element must have the same name as that of
the most recent unmatched start tag.
<?xml version="1.0"?>
<contact-info>
<company>abc</company>
<contact-info>
• Root element: An XML document can have only one root element.
• Case sensitivity: The names of XML-elements are case-sensitive.
➢ Attributes
An attribute specifies a single property for the element, using a name/value pair. An XML-
element can have one or more attributes. It is possible to attach additional information to
elements in the form of attributes. The names follow the same rules as element names.
<tel preferred=”true”>513-555-8889</tel>
4.40 PHP and XML 8
➢ XML References
References allow the user to add or include additional text or markup in an XML
document. References always begin with the symbol "&”, which is a reserved character
and end with the symbol ";". XML has two types of references:
• Entity References: An entity reference contains a name between the start and the end
delimiters. The entity reference is replaced by the content of the entity.
The XML documents are divided into: Document prolog section and document
element sections.
Document prolog: The document prolog comes at the top of the document, before the
root element. This section contains: XML declaration and Document type declaration. The
first line in the above example belongs to prolog section.
Document element: Document Elements are the building blocks of XML. These
divide the document into a hierarchy of sections, each serving a specific purpose. The other
lines except the first line come under document element section.
Internet Programming 4.41
XML Declaration
The XML declaration is the first line of the document. The declaration identifies the
document as an XML document. The declaration also lists the version of XML used in the
document. The declaration can contain other attributes to support other features such as
character set encoding.
Syntax:
<?xml
version="version_number"
encoding="encoding_declaration"
standalone="standalone_status"
?>
❖ Version- Specifies the version of the XML standard used.
❖ Encoding declaration- It defines the character encoding used in the document. UTF-8
is the default encoding used.
❖ Standalone- It informs the parser whether the document relies on the information
from an external source, such as external document type definition (DTD), for its
content. The default value is set to no. Setting it to yes tells the processor there are no
external declarations required for parsing the document.
Rules for XML declaration
• If the XML declaration is present in the XML, it must be placed as the first line in
the XML document.
• If the XML declaration is included, it must contain version number attribute.
• The Parameter names and values are case-sensitive.
• The names are always in lower case.
• The order of placing the parameters is important. The correct order is: version,
encoding and standalone.
• Either single or double quotes may be used.
• The XML declaration has no closing tag i.e. </?xml>
Example Description
XML tags
XML tags form the foundation of XML. They define the scope of an element in the
XML. They can also be used to insert comments, declare settings required for parsing the
environment and to insert special instructions.
➢ Start Tag: The beginning of every non-empty XML element is marked by a start-tag.
Example: <address>.
➢ End Tag:Every element that has a start tag should end with an end-tag.
Example: </address>
➢ Empty Tag: The text that appears between start-tag and end-tag is called content. An
element which has no content is termed as empty. An empty element can be represented
in two ways:
(1) A start-tag immediately followed by an end-tag :<hr></hr>
(2) A complete empty-element tag : <hr />
XML Tags Rules
• XML tags must be closed in an appropriate order, i.e., an XML tag opened inside
another element must be closed before the outer element is closed.
XML Elements
XML elements can be defined as building blocks of an XML. Each XML document contains
one or more elements, the scope of which are either delimited by start and end tags, or for
empty elements, by an empty-element tag.
<element-name attribute1 attribute2>
....content
</element-name>
• An element name can contain any alphanumeric characters. The only punctuation
mark allowed in names are the hyphen (-), under-score (_) and period (.).
XML HTML
XML was designed to be a software and HTML was designed to display data with
hardware independent tool used to transport focus on how data looks.
and store data, with focus on what data is.
XML is used basically to transport data HTML is used for designing a web-page
between the application and the database. to be rendered on the client side.
In XML custom tags can be defined and the HTML has its own predefined tags
tags are invented by the author of the XML
document.
Internet Programming 4.45
XML makes it mandatory for the user the HTML is not strict if the user does not use
close each tag that has been used. the closing tags.
XML preserve white space. HTML does not preserve white space.
XML is about carrying information, hence HTML is about displaying data, hence it is
it is dynamic. static.
• The document type declaration must appear at the start of the document.
• 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 external source.
<!DOCTYPE root-element SYSTEM "file-name">
➢ Definition Types
• 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.
• Complex Type - A complex type is a container for other element definitions. This
allows the user to specify which child elements an element can contain and to provide
some structure within the user’s XML documents.
<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>
• Global Types - With global type, the user can define a single type in the user’s
document, which can be used by all other references.
<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>
Internet Programming 4.49
</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.
➢ Attributes
Attributes in XSD provide extra information within an element. Attributes have name and
type property as shown below:
<xs:attribute name="x" type="y"/>
XML DOM
The Document Object Model (DOM) is the foundation of XML. XML documents
have a hierarchy of informational units called nodes; DOM is a way of describing those nodes
and the relationships between them.
DOM
XML PARSERS
XML parser is a software library or a package that provides interface for client
applications to work with XML documents. It checks for proper format of the XML
document and may also validate the XML documents.
XML
XML Client XML
XML
Documents
Documents Application Parser
Documents
The goal of a parser is to transform XML into a readable code. To ease the process of
parsing, some commercial products are available that facilitate the breakdown of XML
document and yield more reliable results.
VALIDATION
An XML document is said to be valid if its contents match with the elements,
attributes and associated document type declaration (DTD), and if the document complies
with the constraints expressed in it. Validation is dealt in two ways by the XML parser. They
are: Well-formed XML document and Valid XML document
➢ Well-formed XML document
• Non DTD XML files must use the predefined character entities for amp(&),
apos (single quote), gt >), lt (<), quot (double quote).
• It must follow the ordering of the tag. i.e., the inner tag must be closed before
closing the outer tag.
• Each of its opening tags must have a closing tag or it must be a self- ending
tag.(<title>....</title> or <title/>).
• It must have only one attribute in a start tag, which needs to be quoted.
• Amp (&), apos (single quote), gt (>), lt (<), quot (double quote) entities other
than these must be declared.
XML concentrates on the structure of the information and not its appearance. The
W3C has published two recommendations for style sheets: CSS (Cascading Style Sheet) and
XSL(XML Style sheet Language).XSL supports transforming the document before display.
XSL would typically be used for advanced styling. XSL originally consisted of three parts:
XSL
XSLT
style sheet
• Add elements specifically for viewing, such as add the logo or the address of the
sender to an XML invoice.
Internet Programming 4.53
• Create new content from an existing one, such as create the table of contents
• Present information with the right level of details for the reader, such as using a
style sheet to present high-level information to a managerial person while using
another style sheet to present more detailed technical information to the rest of the
staff.
• Convert between different DTDs or different versions of a DTD, such as convert a
company specific DTD to an industry standard
• Transform XML documents into HTML for backward compatibility with existing
browsers.
XSLT
XML code XSLT code
<?xml version="1.0" <?xml version="1.0" ?>
encoding="UTF-8"?> <xsl:stylesheet version="1.0"
<?xml-stylesheet type="text/xsl" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
href="class.xsl"?> >
<class> <xsl:template match="teacher">
<student>Arthi</student> <p><u><xsl:value-of select="."/></u></p>
<student>Ambarish</student> </xsl:template>
<student>Anitha</student> <xsl:template match="student">
<teacher>Sharanya</teacher> <p><b><xsl:value-of select="."/></b></p>
</class> </xsl:template>
<xsl:template match="/">
<html><body>
<xsl:apply-templates/>
</body></html>
</xsl:template></xsl:stylesheet>
The XML file class.xml is linked to the XSLT code by adding the xml-stylesheet
reference. The XSLT code then applies its rules to transform the XML document.
• Before XSLT: classoriginal.xml
• After XSLT rules are applied: class.xml
XSLT Syntax
➢ XSLT - XML Declaration
The user includes an XML declaration at the top of the XSLT documents. The attribute
version defines what version of XML is used.
Example: <?xml version="1.0" ?>
4.54 PHP and XML 8
• href: the location of the file. If the user saved the user XSLT and XML file in the
same directory, the user can simply use the XSLT filename.
Make sure that both XSLT and XML file are in the same directory.
Reference
Both of these items are taken care of with the very important XSL element
xsl:template.
XSLT - xsl:template Match Attribute
To find information in an XML document use xsl:template's match attribute. It is in
this attribute the knowledge of XPath is used to find information in the XML document. In
previous example, to find student elements, we would set the match attribute to a simple
XPath expression: student.
XSLT - xsl:apply-templates
The xsl:apply-templates element to be more selective of the XML data.
➢ XSLT - Remove Unwanted Text
The following attributes are used to remove unwanted text:
• select attribute: lets the user choose specific child elements
• xsl:apply-templates: to decide when and where the xsl:template elements are
used
XSLT - Remove Unwanted Children
We could use the select attribute to select specific child elements. To do this, we need
a new xsl:template that matches our XML document's root element, class. We can then pick
the child student using the select attribute. Here's the XSLT code to get the job done.
apply templates
Found a learner!
</xsl:template></xsl:stylesheet>
The XSLT processor begins at the root element when looking for template matches.
Because we have a match for the root element, class, the code we just added is used first.
xsl:apply-templates
In our template that matched class, we use xsl:apply-templates which will check for
template matches on all the children of class. The children of class in our XML document are
student and teacher.
xsl:apply-templates select="student"
To have the teacher element, "Sharanya," ignored, we use the select attribute of
xsl:apply-templates to specify only student children.
The XSLT processor then goes searching templates that only match student elements.
xsl:template match="student"
The processor finds the only other template in our XSLT, which prints out, "Found a
learner!" for each student element in the XML document. XSLT finds three students, so
"Found a learner!" is displayed three times.
XSLT - Well-Formed Output
To obtain well formed output remove the root element in an XSLT template and
inserting a new root element for the output. To do this, we are going to need to add an <html>
(root element) tag, a <body> tag, and maybe some <p> tags.
XSLT - Replacing the Old Root Element
In the template that matches the original root element, we will insert the <html> tag to
be the output's root element. We can also put the <body> tag there. In the template that
matches the student elements, we can insert a <p> tag to make a separate paragraph for each
student.
Replacing root
<xsl:template match="student">
<p> Found a learner!</p> </xsl:template></xsl:stylesheet>
<html><body>
<p>Found a learner!</p>
<p>Found a learner!</p>
<p>Found a learner!</p>
</body></html>
4.3 NEWSFEEDS
News feeds are an example of automated syndication. News feed technologies allow
information to be automatically provided and updated on Web sites, emailed to users, etc. As
the name implies news feeds are normally used to provide news; however the technology can
be used to syndicate a wide range of information.
The BBC ticker is an example of a news feed application. A major limitation with this
approach is that the ticker can only be used with information provided by the BBC. The RSS
(Really Simple Syndication)standard was developed as an open standard for news syndication,
allowing applications to display news supplied by any RSS provider.
RSS (Really Simple Syndication)
RSS is an XML dialect used to publish frequently updated content, such as blog
posts or news headlines.
Web
Web RSS
Web
Web site11
site XML
site
site 11
files
files file
files
files
Browser
Web server
RSS
Feed
Aggregator Web
Web RSS
Web
Web site11
site XML
site 21
sitefiles
files file
Personal Computer files
files
Web server
<channel><title>MozillaZine</title>
<link>http://www.mozillazine.org</link>
<description>The user source for Mozilla news, advocacy, interviews, builds, and more!
</description>
<language>en-us</language> </channel>
The title can be treated as a headline link with the description following. The Channel
Language definition allow aggregators to filter news feeds and gives the rendering software
the information necessary to display the language properly. The </channnel> tag is used after
all the channel elements to close the channel. As RSS conforms to XML specs, the element
must be well formed; it requires the closing tag.
The image section
The image element is an optional element that is usually used to include the logo of the
channel provider. The default size for the image is 88 pixels wide by 31 pixels high, but it can
be enlarged to 144 pixels wide by 400 pixels wide.
Image element
<image><title>MozillaZine</title>
<url>http://www.mozillazine.org/image/mynetscape88.gif</url>
<link>http://www.mozillazine.org</link>
<width>88</width>
<height>31</height> </image>
The image's title, URL, link, width, and height tags allow renderers to translate the file
into HTML. The title tag is normally used for the image's ALT text.
4.60 PHP and XML 8
The items
Items form the dynamic part of an RSS file. While channel, image, and text input
elements create the channel's identity and typically stay the same over long periods of time,
channel items are rendered as news headlines, and the channel's value depends on their
changing fairly frequently.
Item element
Fifteen items are allowed in a channel. Titles should be less than 100 characters, while
descriptions should be under 500 characters. The item title is normally rendered as a headline
that links to the full article whose URL is provided by the item link. The item description is
commonly used for either a summary of the article's content or for commentary on the article.
News feed channels use the description to highlight the content of news articles,
usually on the channel owner's site, and Web log channels use the description to provide
commentary on a variety of content, often on third-party sites.
The text input
The text input area is an optional element, with only one allowed per channel. This lets
the user respond to the channel.
<textinput><title>Send</title>
<description>Comments about MozillaZine?</description>
<name>responseText</name>
<link>http://www.mozillazine.org/cgi-bin/sampleonly.cgi</link> </textinput>
The title is normally rendered as the label of the form's ssubmit button, and the
description as the text displayed before or above the input field. The text input name is
supplied along with the contents of the text field when the submit button is clicked.
4.4 ATOM
The Atom Publishing Protocol (APP) defines a hierarchy for organizing published
content (services, workspaces, collections, and resources) and uses the HTTP Get, Post, Put,
and Delete methods for retrieving, creating, deleting, and editing published content. Atom’s
use of HTTP’s built-in methods and XML as a data format is in the spirit of a RESTful web
services implementation.
Atom was designed to be a universal publishing standard for blogs and other Web sites
where content is updated frequently. Users visiting a Web site with an Atom feed can discover
a file described as "atom.xml" in the URL that can be copied and pasted into an aggregator to
subscribe to the feed.
Atom was originally developed as an alternative to RSS 2.0, the standard developed by
Dave Winer and copyrighted by Harvard University, as a means of improving perceived
shortcomings of the RSS format by the blogging community.
Features of ATOM
• Atom was developed to be vendor neutral and freely extensible by any user; it
is an open standard.
AngularJS is a structural framework for dynamic web applications. It lets you use
HTML as your template language and lets you extend HTML's syntax to express your
application components clearly and succinctly. Its data binding and dependency
injection eliminate much of the code you currently have to write. And it all happens
within the browser, making it an ideal partner with any server technology.
It was originally developed in 2009 by Misko Hevery and Adam Abrons. It is now
maintained by Google.
General Features
The most important general features of AngularJS are:
AngularJS is a efficient framework that can create Rich Internet Applications
(RIA).
AngularJS provides developers an options to write client side applications
using JavaScript in a clean Model View Controller (MVC) way.
Applications written in AngularJS are cross-browser compliant. AngularJS
automatically handles JavaScript code suitable for each browser.
AngularJS is open source, completely free, and used by thousands of
developers around the world. It is licensed under the Apache license version
2.0.
Overall, AngularJS is a framework to build large scale, high performance, and easy-
to-maintain web applications.
Core Features
The most important core features of AngularJS are:
Concepts
The following diagram depicts some important parts of AngularJS which we will
discuss in detail in the subsequent chapters.
Advantages of AngularJS
The advantages of AngularJS are:
Disadvantages of AngulaJS
Though AngularJS comes with a lot of merits, here are some points of concern:
AngularJS Directives
The AngularJS framework can be divided into three major parts:
This chapter describes how to set up AngularJS library to be used in web application
development. It also briefly describes the directory structure and its contents.
When you open the link https://angularjs.org/, you will see there are two options to
download AngularJS library:
View on GitHub- By clicking on this button, you are diverted to GitHub and
get all the latest scripts.
Download- By clicking on this button, a screen you get to see a dialog box
shown as:
This screen offers various options for selecting Angular JS as follows:
We are using the CDN versions of the library throughout this tutorial.
Example
Now let us write a simple example using AngularJS library. Let us create an HTML
filemyfirstexample.html shown as below:
<!doctype html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-
beta.17/angular.min.js"></script>
</head>
<body ng-app="myapp">
</div>
<script>
angular.module("myapp", [])
.controller("HelloController", function($scope) {
$scope.helloTo = {};
$scope.helloTo.title = "AngularJS";
});
</script>
</body>
</html>
Include AngularJS
We include the AngularJS JavaScript file in the HTML page so that we can use it:
<head>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
</head>
You can check the latest version of AngularJS on its official website.
Point to AngularJS app
Next, it is required to tell which part of HTML contains the AngularJS app. You can
do this by adding the ng-app attribute to the root HTML element of the AngularJS
app. You can either add it to html element or body element as shown below:
<body ng-app="myapp">
</body>
View
The view is this part:
</div>
ng-controller tells AngularJS which controller to use with this view. helloTo.title tells
AngularJS to write the model value named helloTo.title in HTML at this location.
Controller
The controller part is:
<script>
angular.module("myapp", [])
.controller("HelloController", function($scope) {
$scope.helloTo = {};
$scope.helloTo.title = "AngularJS";
});
</script>
This code registers a controller function named HelloController in the angular module
named myapp. We will study more about modules and controllers in their respective
chapters. The controller function is registered in angular via the
angular.module(...).controller(...) function call.
The $scope parameter model is passed to the controller function. The controller
function adds a helloTo JavaScript object, and in that object it adds a title field.
Execution
Save the above code as myfirstexample.html and open it in any browser. You get to
see the following output:
What happens when the page is loaded in the browser ? Let us see:
HTML document is loaded into the browser, and evaluated by the browser.
AngularJS JavaScript file is loaded, the angular global object is created.
The JavaScript which registers controller functions is executed.
Next, AngularJS scans through the HTML to search for AngularJS apps as well
as views.
Once the view is located, it connects that view to the corresponding controller
function.
Next, AngularJS executes the controller functions.
It then renders the views with data from the model populated by the
controller. The page is now ready.
Angular JS Tutorial
3. MVC ARCHITECTURE
Model - It is the lowest level of the pattern responsible for maintaining data.
View - It is responsible for displaying all or a portion of the data to the user.
Controller - It is a software Code that controls the interactions between the
Model and View.
MVC is popular as it isolates the application logic from the user interface layer and
supports separation of concerns. The controller receives all requests for the
application and then works with the model to prepare any data needed by the view.
The view then uses the data prepared by the controller to generate a final
presentable response. The MVC abstraction can be graphically represented as
follows.
The model
The model is responsible for managing application data. It responds to the request
from view and to the instructions from controller to update itself.
The view
A presentation of data in a particular format, triggered by the controller's decision
to present the data. They are script-based template systems such as JSP, ASP, PHP
and very easy to integrate with AJAX technology.
The controller
The controller responds to user input and performs interactions on the data model
objects. The controller receives input, validates it, and then performs business
operations that modify the state of the data model.
AngularJS is a MVC based framework. In the coming chapters, let us see how
AngularJS uses MVC methodology.
Angular JS Tutorial
4. FIRST APPLICATION
Before creating actual Hello World ! application using AngularJS, let us see the parts
of a AngularJS application. An AngularJS application consists of following three
important parts:
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
<div ng-app="">
...
</div>
Step 4: Bind the value of above model defined using ng-bind directive.
<html>
<body>
<h1>Sample Application</h1>
<div ng-app="">
</div>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
</body>
</html>
Output
Open the file testAngularJS.htm in a web browser. Enter your name and see the
result.
How AngularJS integrates with HTML
The ng-app directive indicates the start of AngularJS application.
The ng-model directive creates a model variable named name, which can be
used with the HTML page and within the div having ng-app directive.
The ng-bind then uses the name model to be displayed in the HTML <span>
tag whenever user enters input in the text box.
Closing </div> tag indicates the end of AngularJS application.
Angular JS Tutorial
5. DIRECTIVES
AngularJS directives are used to extend HTML. They are special attributes starting
with ng-prefix. Let us discuss the following directives:
ng-app directive
The ng-app directive starts an AngularJS Application. It defines the root element. It
automatically initializes or bootstraps the application when the web page containing
AngularJS Application is loaded. It is also used to load various AngularJS modules in
AngularJS Application. In the following example, we define a default AngularJS
application using ng-app attribute of a <div> element.
<div ng-app="">
...
</div>
ng-init directive
The ng-init directive initializes an AngularJS Application data. It is used to assign
values to the variables. In the following example, we initialize an array of countries.
We use JSON syntax to define the array of countries.
{locale:'en-GB',name:'United Kingdom'},
{locale:'en-FR',name:'France'}]">
...
</div>
ng-model directive
The ng-model directive defines the model/variable to be used in AngularJS
Application. In the following example, we define a model named name.
<div ng-app="">
...
</div>
ng-repeat directive
ng-repeat directive repeats HTML elements for each item in a collection. In the
following example, we iterate over the array of countries.
<div ng-app="">
...
<ol>
</li>
</ol>
</div>
Example
The following example shows the use of all the above mentioned directives.
testAngularJS.htm
<html>
<title>AngularJS Directives</title>
<body>
<h1>Sample Application</h1>
{locale:'en-GB',name:'United Kingdom'},
{locale:'en-FR',name:'France'}]">
<ol>
</li>
</ol>
</div>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
</body>
</html>
Output
Open the file testAngularJS.htm in a web browser. Enter your name and see the
result.
Angular JS Tutorial
6. EXPRESSIONS
Expressions are used to bind application data to HTML. Expressions are written inside
double curly braces such as in {{ expression}}. Expressions behave similar to ng-
bind directives. AngularJS expressions are pure JavaScript expressions and output
the data where they are used.
Using numbers
<p>Expense on Books : {{cost * quantity}} Rs</p>
Using String
<p>Hello {{student.firstname + " " + student.lastname}}!</p>
Using Object
<p>Roll No: {{student.rollno}}</p>
Using Array
<p>Marks(Math): {{marks[3]}}</p>
Example
The following example shows use of all the above mentioned expressions:
testAngularJS.htm
<html>
<title>AngularJS Expressions</title>
<body>
<h1>Sample Application</h1>
<div ng-app="" ng-init="quantity=1;cost=30;
student={firstname:'Mahesh',lastname:'Parashar',rollno:101};marks=[80,90,75
,73,60]">
<p>Marks(Math): {{marks[3]}}</p>
</div>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
</body>
</html>
Output
Open the file testAngularJS.htm in a web browser and see the result.
Angular JS Tutorial
7. CONTROLLERS
AngularJS application mainly relies on controllers to control the flow of data in the
application. A controller is defined using ng-controller directive. A controller is a
JavaScript object that contains attributes/properties, and functions. Each controller
accepts $scope as a parameter, which refers to the application/module that the
controller needs to handle.
...
</div>
<script>
function studentController($scope) {
$scope.student = {
firstName: "Mahesh",
lastName: "Parashar",
fullName: function() {
var studentObject;
studentObject = $scope.student;
};
</script>
<br>
Example
The following example shows the use of controller:
testAngularJS.htm
<html>
<head>
<title>Angular JS Controller</title>
</head>
<body>
<br>
</div>
<script>
function studentController($scope) {
$scope.student = {
firstName: "Mahesh",
lastName: "Parashar",
fullName: function() {
var studentObject;
studentObject = $scope.student;
};
</script>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
</body>
</html>
Output
Open the file testAngularJS.htm in a web browser and see the result.
Angular JS Tutorial
8. FILTERS
Filters are used to modify the data. They can be clubbed in expression or directives
using pipe (|) character. The following list shows commonly used filters.
Uppercase Filter
This adds uppercase filter to an expression using pipe character. Here, we add
uppercase filter to print student name in capital letters.
Lowercase Filter
This adds lowercase filter to an expression using pipe character. Here, we add
lowercase filter to print student name in small letters.
Currency Filter
This adds currency filter to an expression that returns a number. Here, we add
currency filter to print fees using currency format.
Enter fees: <input type="text" ng-model="student.fees">
Filter Filter
To display only required subjects, we use subjectName as filter.
Subject:
<ul>
</li>
</ul>
Orderby Filter
To order subjects by marks, we use orderBy marks.
Subject:
<ul>
</li>
</ul>
Example
The following example shows use of all the above mentioned filters.
testAngularJS.htm
<html>
<head>
<title>Angular JS Filters</title>
</head>
<body>
<table border="0">
</table>
<br/>
<table border="0">
<tr><td>Subject:</td><td>
<ul>
</li>
</ul>
</td></tr>
</table>
</div>
<script>
function studentController($scope) {
$scope.student = {
firstName: "Mahesh",
lastName: "Parashar",
fees:500,
subjects:[
{name:'Physics',marks:70},
{name:'Chemistry',marks:80},
{name:'Math',marks:65}
],
fullName: function() {
var studentObject;
studentObject = $scope.student;
};
</script>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
</body>
</html>
Output
Open the file testAngularJS.htm in a web browser. See the result.
Angular JS Tutorial
9. TABLES
Table data is generally repeatable. The ng-repeat directive can be used to draw table
easily. The following example shows the use of ng-repeat directive to draw a table:
<table>
<tr>
<th>Name</th>
<th>Marks</th>
</tr>
</tr>
</table>
<style>
table, th , td {
border-collapse: collapse;
padding: 5px;
table tr:nth-child(odd) {
background-color: #f2f2f2;
table tr:nth-child(even) {
background-color: #ffffff;
}
</style>
Example
The following example shows use of all the above mentioned directives.
testAngularJS.htm
<html>
<head>
<title>Angular JS Table</title>
<style>
table, th , td {
border-collapse: collapse;
padding: 5px;
table tr:nth-child(odd) {
background-color: #f2f2f2;
table tr:nth-child(even) {
background-color: #ffffff;
</style>
</head>
<body>
<table border="0">
<tr><td>Enter first name:</td><td><input type="text" ng-
model="student.firstName"></td></tr>
<tr><td>Name: </td><td>{{student.fullName()}}</td></tr>
<tr><td>Subject:</td><td>
<table>
<tr>
<th>Name</th>
<th>Marks</th>
</tr>
</tr>
</table>
</td></tr>
</table>
</div>
<script>
function studentController($scope) {
$scope.student = {
firstName: "Mahesh",
lastName: "Parashar",
fees:500,
subjects:[
{name:'Physics',marks:70},
{name:'Chemistry',marks:80},
{name:'Math',marks:65},
{name:'English',marks:75},
{name:'Hindi',marks:67}
],
fullName: function() {
var studentObject;
studentObject = $scope.student;
};
</script>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
</body>
</html>
Output
Open the file testAngularJS.htm in a web browser and see the result.
Angular JS Tutorial
10. HTML DOM
The following directives are used to bind application data to attributes of HTML DOM
elements:
ng-disabled Directive
Add ng-disabled attribute to an HTML button and pass it a model. Bind the model to
a checkbox and see the variation.
ng-show Directive
Add ng-show attribute to an HTML button and pass it a model. Bind the model to a
checkbox and see the variation.
ng-hide Directive
Add ng-hide attribute to an HTML button and pass it a model. Bind the model to a
checkbox and see the variation.
ng-click Directive
Add ng-click attribute to an HTML button and update a model. Bind the model to
HTML and see the variation.
Example
The following example shows use of all the above mentioned directives.
testAngularJS.htm
<html>
<head>
</head>
<body>
<div ng-app="">
<table border="0">
<tr>
</tr>
<tr>
</tr>
<tr>
</tr>
<tr>
</tr>
</table>
</div>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
</body>
</html>
Output
Open the file testAngularJS.htm in a web browser and see the result.
Angular JS Tutorial
11. MODULES
AngularJS supports modular approach. Modules are used to separate logic such as
services, controllers, application etc. from the code and maintain the code clean. We
define modules in separate js files and name them as per the module.js file. In the
following example, we are going to create two modules:
Application Module
Here is a file named mainApp.js that contains the following code:
Controller Module
studentController.js
mainApp.controller("studentController", function($scope) {
$scope.student = {
firstName: "Mahesh",
lastName: "Parashar",
fees:500,
subjects:[
{name:'Physics',marks:70},
{name:'Chemistry',marks:80},
{name:'Math',marks:65},
{name:'English',marks:75},
{name:'Hindi',marks:67}
],
fullName: function() {
var studentObject;
studentObject = $scope.student;
};
});
Use Modules
<div ng-app="mainApp" ng-controller="studentController">
..
<script src="mainApp.js"></script>
<script src="studentController.js"></script>
Here, we use application module using ng-app directive, and controller using ng-
controller directive. We import the mainApp.js and studentController.js in the main
HTML page.
Example
The following example shows use of all the above mentioned modules.
testAngularJS.htm
<html>
<head>
<title>Angular JS Modules</title>
<style>
table, th , td {
padding: 5px;
table tr:nth-child(odd) {
background-color: #f2f2f2;
table tr:nth-child(even) {
background-color: #ffffff;
</style>
</head>
<body>
<table border="0">
<tr><td>Name: </td><td>{{student.fullName()}}</td></tr>
<tr><td>Subject:</td><td>
<table>
<tr>
<th>Name</th>
<th>Marks</th>
</tr>
</tr>
</table>
</td></tr>
</table>
</div>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
<script src="mainApp.js"></script>
<script src="studentController.js"></script>
</body>
</html>
mainApp.js
studentController.js
mainApp.controller("studentController", function($scope) {
$scope.student = {
firstName: "Mahesh",
lastName: "Parashar",
fees:500,
subjects:[
{name:'Physics',marks:70},
{name:'Chemistry',marks:80},
{name:'Math',marks:65},
{name:'English',marks:75},
{name:'Hindi',marks:67}
],
fullName: function() {
var studentObject;
studentObject = $scope.student;
};
});
Output
Open the file textAngularJS.htm in a web browser. See the result.
Angular JS Tutorial
12. FORMS
AngularJS enriches form filling and validation. We can use ng-click event to handle
the click button and use $dirty and $invalid flags to do the validation in a seamless
way. Use novalidate with a form declaration to disable any browser-specific
validation. The form controls make heavy use of AngularJS events. Let us have a
look at the events first.
Events
AngularJS provides multiple events associated with the HTML controls. For example,
ng-click directive is generally associated with a button. AngularJS supports the
following events:
ng-click
ng-dbl-click
ng-mousedown
ng-mouseup
ng-mouseenter
ng-mouseleave
ng-mousemove
ng-mouseover
ng-keydown
ng-keyup
ng-keypress
ng-change
ng-click
Reset data of a form using on-click directive of a button.
<script>
function studentController($scope) {
$scope.reset = function(){
$scope.firstName = "Mahesh";
$scope.lastName = "Parashar";
$scope.email = "MaheshParashar@tutorialspoint.com";
$scope.reset();
</script>
Validate Data
The following can be used to track error.
Example
Following example will showcase all the above mentioned directives.
testAngularJS.htm
<html>
<head>
<title>Angular JS Forms</title>
<style>
table, th , td {
border-collapse: collapse;
padding: 5px;
table tr:nth-child(odd) {
background-color: #f2f2f2;
table tr:nth-child(even) {
background-color: #ffffff;
</style>
</head>
<body>
<table border="0">
</span>
</td></tr>
</span>
</td></tr>
<span ng-show="studentForm.email.$error.required">Email is
required.</span>
</span>
</td></tr>
<tr><td><button ng-click="reset()">Reset</button></td><td><button
ng-disabled="studentForm.firstname.$dirty &&
studentForm.firstname.$invalid ||
studentForm.lastname.$dirty &&
studentForm.lastname.$invalid ||
studentForm.email.$dirty &&
studentForm.email.$invalid"
ng-click="submit()">Submit</button></td></tr>
</table>
</form>
</div>
<script>
function studentController($scope) {
$scope.reset = function(){
$scope.firstName = "Mahesh";
$scope.lastName = "Parashar";
$scope.email = "MaheshParashar@tutorialspoint.com";
$scope.reset();
}
</script>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
</body>
</html>
Output
Open the file testAngularJS.htm in a web browser and see the result.
Angular JS Tutorial
17. SERVICES
AngularJS provides many inbuilt services. For example, $http, $route, $window,
$location etc. Each service is responsible for a specific task such as the $http is used
to make ajax call to get the server data, the $route is used to define the routing
information, and so on. The inbuilt services are always prefixed with $ symbol.
Factory
Service
mainApp.factory('MathService', function() {
factory.multiply = function(a, b) {
return a * b
return factory;
});
mainApp.service('CalcService', function(MathService){
this.square = function(a) {
return MathService.multiply(a,a);
});
Example
The following example shows use of all the above mentioned directives:
testAngularJS.htm
<html>
<head>
<title>Angular JS Forms</title>
</head>
<body>
<button ng-click="square()">X<sup>2</sup></button>
<p>Result: {{result}}</p>
</div>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js">
</script>
<script>
mainApp.factory('MathService', function() {
factory.multiply = function(a, b) {
return a * b
}
return factory;
});
mainApp.service('CalcService', function(MathService){
this.square = function(a) {
return MathService.multiply(a,a);
});
$scope.square = function() {
$scope.result = CalcService.square($scope.number);
});
</script>
</body>
</html>
Output
Open the file testAngularJS.htm in a web browser and see the result.
Chapter 1: Getting started with firebase
Remarks
Firebase is a Backend as a Service (Baas) very useful for mobile app development.
It provides many features like Authentication & Security, Realtime Database & File Storage,
Analytics, Push Notifications, AdMod and many others
It provides the SDK for Android, iOS, Web, NodeJS, C++ and Java Server
Versions
Examples
Add Firebase to Your Android Project
Here the steps required to create a Firebase project and to connect with an Android app.
2. Click Add Firebase to your Android app and follow the setup steps.
5. At the end, you'll download a google-services.json file. You can download this file again at
any time.
6. If you haven't done so already, copy this into your project's module folder, typically app/.
The next step is to Add the SDK to integrate the Firebase libraries in the project.
1. Add rules to your root-level build.gradle file, to include the google-services plugin:
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.0.0'
}
}
Then, in your module Gradle file (usually the app/build.gradle), add the apply plugin line at the
bottom of the file to enable the Gradle plugin:
android {
// ...
}
dependencies {
// ...
compile 'com.google.firebase:firebase-core:9.4.0'
}
The final step is to add the dependencies for the Firebase SDK using one or more libraries
available for the different Firebase features.
Gradle Dependency Line Service
com.google.firebase:firebase-core:9.4.0 Analytics
com.google.firebase:firebase-storage:9.4.0 Storage
com.google.firebase:firebase-auth:9.4.0 Authentication
com.google.firebase:firebase-ads:9.4.0 AdMob
1. Firstly, you want to go to firebase dashboard and create a new project using the 'Create New
Project' button.
2. You want to create a new project by adding the name of your app for example I put mine as
'Cool app name' then choose your region and press 'Create Project'
3. After creating project you will be directed to this page which is the dashboard and from here
you have to pick a platform which you want to install firebase to for this example we will
choose IOS.
4. After selecting IOS you should see the same pop up as the one from the image below asking
for the IOS Bundle and the app store id. You will only need to provide the IOS Bundle
because our app isn't on the app store yet.
5. Get the bundle ID from xcode after creating a xcode project anyway you usually would after
that you can get the bundle id for your application on the app Genral view in xcode it will be
the first field at the top and once you get it paste it into the Bundle field in firebase for
example mine would be 'MauginInc.KIKOO'
6. After you have done that and pressed 'Next' a 'GoogleService-Info.plist' file will download
and what you will need to do is move that into the root folder of your app within xcode
7. You will want to initialise pods and install the firebase pods you need you cam do this by
going into your terminal and navigate to your xcode project folder and follow these
instructions given by firebase.
8. Finally you want to configure you app to let swift do what it does best and that is making app
development a whole lot more easier and efficient all you need to do is edit you
AppDelegate.swift files the same the pop up shows you.
That's all you now have firebase installed in your xcode project for IOS
Getting started in Firebase with a simple Hello World web app in JavaScript
This example will demonstrate how to get started with Firebase in your web apps with JavaScript.
We are going to add a text child in our Firebase Database and display it in realtime on our web
app.
• Now create a file index.html on your computer. And add the following code to it.
<body>
<p>Getting started with Firebase</p>
<h1 id="bigOne"></h1>
<script>
// your firebase JavaScript code here
</script>
</body>
• Now go to your project on Firebase Console and you can see this
• Now click on Add Firebase to your web app. You will the following pop up, click on copy
button
• Now go to your index.html file and add the snippet to the script section as following
<body>
<script src="https://www.gstatic.com/firebasejs/3.7.4/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "apiKey",
authDomain: "authDomain",
databaseURL: "databaseURL",
storageBucket: "storageBucket",
messagingSenderId: "messagingSenderId"
};
firebase.initializeApp(config);
</script>
</body>
• Now you have completed adding Firebase initialization code. Now we need to get our text
value from the database.
• To do that add the following code (Initialize Firebase already added in last step. Don't re-
add) inside the script in index.html
<script>
// Initialize Firebase
var config = {
apiKey: "apiKey",
authDomain: "authDomain",
databaseURL: "databaseURL",
storageBucket: "storageBucket",
messagingSenderId: "messagingSenderId"
};
firebase.initializeApp(config);
</script>
• Now we are all done with the index.html file and now let's go the Database in Firebase
Console.
• You will see that its blank and empty right now. Lets add the a text child in the database
and add any value to it.
• For development purpose right now, we will right now enable all the read and write queries.
{
"rules": {
".read": "true",
".write": "true"
}
}
• Now if you go back to your database and change the text child value to something else, you
will see that the text in the browser also changes without any refresh or reload. This is how
realtime database works on Firebase.
Docker requires features present in recent linux kernels to function properly, therefore on Mac
OSX and Windows host a virtual machine running linux is required for docker to operate properly.
Currently the main method of installing and setting up this virtual machine is via Docker Toolbox
that is using VirtualBox internally, but there are plans to integrate this functionality into docker
itself, using the native virtualisation features of the operating system. On Linux systems docker run
natively on the host itself.
Versions
17.05.0 2017-05-04
17.04.0 2017-04-05
17.03.0 2017-03-01
1.13.1 2016-02-08
1.12.0 2016-07-28
1.11.2 2016-04-13
1.10.3 2016-02-04
1.9.1 2015-11-03
1.8.3 2015-08-11
1.7.1 2015-06-16
1.6.2 2015-04-07
1.5.0 2015-02-10
Examples
Installing Docker on Mac OS X
While the docker binary can run natively on Mac OS X, to build and host containers you need to
run a Linux virtual machine on the box.
1.12.0
Since version 1.12 you don't need to have a separate VM to be installed, as Docker can use the
native Hypervisor.framework functionality of OSX to start up a small Linux machine to act as
backend.
1.11.2
Until version 1.11 the best way to run this Linux VM is to install Docker Toolbox, that installs
Docker, VirtualBox and the Linux guest machine.
1. Go to Docker Toolbox
2. Click the link for Mac and run the installer.
3. Continue through installer with default options and enter your account credentials when
requested.
This will install the Docker binaries in /usr/local/bin and update any existing Virtual Box
installation. Check here for more information on the installation.
To Verify Installation:
1.12.0
1. Start Docker.app from the Applications folder, and make sure it is running. Next open up
Terminal.
1.11.2
1. Open the Docker Quickstart Terminal, which will open a terminal and prepare it for use for
Docker commands.
3. If all is well then this should print a welcome message verifying that the installation was
successful.
While the docker binary can run natively on Windows, to build and host containers you need to run
a Linux virtual machine on the box.
1.12.0
Since version 1.12 you don't need to have a separate VM to be installed, as Docker can use the
native Hyper-V functionality of Windows to start up a small Linux machine to act as backend.
1.11.2
Until version 1.11 the best way to run this Linux VM is to install Docker Toolbox, that installs
Docker, VirtualBox and the Linux guest machine.
1. Go to Docker Toolbox
2. Click the link for Windows and run the installer.
3. Continue through installer with default options and enter your account credentials when
requested.
This will install the Docker binaries in Program Files and update any existing Virtual Box
installation. Check here for more information on the installation.
To Verify Installation:
1.12.0
1. Start Docker from the Start menu if it hasn't been started yet, and make sure it is running.
Next upen up any terminal (either cmd or PowerShell)
1.11.2
1. On your Desktop, find the Docker Toolbox icon. Click the icon to launch a Docker Toolbox
terminal.
3. If all is well then this should print a welcome message verifying that the installation was
successful.
A couple of notes:
The following instructions involve installation using Docker packages only, and this
ensures obtaining the latest official release of Docker. If you need to install only using
Ubuntu-managed packages, consult the Ubuntu documentation (Not recommended
otherwise for obvious reasons).
Ubuntu Utopic 14.10 and 15.04 exist in Docker’s APT repository but are no longer
officially supported due to known security issues.
Prerequisites
Verify that the key fingerprint is 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
.
5. Find the entry in the table below which corresponds to your Ubuntu version. This determines
where APT will search for Docker packages. When possible, run a long-term support (LTS)
edition of Ubuntu.
Note: Docker does not provide packages for all architectures. Binary artifacts are built
nightly, and you can download them from https://master.dockerproject.org. To install
docker on a multi-architecture system, add an [arch=...] clause to the entry. Refer to
Debian Multiarch wiki for details.
6. Run the following command, substituting the entry for your operating system for the
placeholder <REPO>.
When you run the following command, an entry is returned for each version of Docker that is
available for you to install. Each entry should have the URL https://apt.dockerproject.org/repo/.
The version currently installed is marked with ***.See the below example's output.
docker-engine:
Installed: 1.12.2-0~trusty
Candidate: 1.12.2-0~trusty
Version table:
*** 1.12.2-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
100 /var/lib/dpkg/status
1.12.1-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.12.0-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
From now on when you run apt-get upgrade, APT pulls from the new repository.
For Ubuntu Trusty (14.04) , Wily (15.10) , and Xenial (16.04) , install the linux-image-extra-* kernel
packages, which allows you use the aufs storage driver.
2. Update your package manager with the command sudo apt-get update.
For Ubuntu Precise (12.04 LTS), Docker requires the 3.13 kernel version. If your kernel version is
older than 3.13, you must upgrade it. Refer to this table to see which packages are required for
your environment:
Package Description
linux-image- Generic Linux kernel image. This kernel has AUFS built in. This is required to
generic-lts-
trusty run Docker.
Allows packages such as ZFS and VirtualBox guest additions which depend
linux-headers- on them. If you didn’t install the headers for your existing kernel, then you
generic-lts-
trusty can skip these headers for the trusty kernel. If you’re unsure, you should
include this package for safety.
To learn more about the reasons for these packages, read the installation
ligbl1-mesa-
glx-lts-trusty instructions for backported kernels, specifically the LTS Enablement Stack.
Refer to note 5 under each version.
To upgrade your kernel and install the additional packages, do the following:
2. Update your package manager with the command sudo apt-get update.
5. Reboot your host to use the updated kernel using the command sudo reboot.
Make sure you satisfy the prerequisites, only then follow the below steps.
Note: For production systems, it is recommended that you install a specific version so
that you do not accidentally update Docker. You should plan upgrades for production
systems carefully.
1. Log into your Ubuntu installation as a user with sudo privileges. (Possibly running sudo -su).
3. Install Docker Community Edition with the command sudo apt-get install docker-ce.
4. Start the docker daemon with the command sudo service docker start.
This command downloads a test image and runs it in a container. When the container runs, it
prints an informational message and exits.
If you don’t want to use sudo when you use the docker command, create a Unix group called docker
and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket
read/writable by the docker group.
To create the docker group and add your user:
2. Create the docker group with the command sudo groupadd docker.
4. Log out and log back in so that your group membership is re-evaluated.
Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
Check whether the DOCKER_HOST environment variable is set for your shell.
If it is set, the above command will return a result. If so, unset it.
$ unset DOCKER_HOST
You may need to edit your environment in files such as ~/.bashrc or ~/.profile to prevent the
DOCKER_HOST variable from being set erroneously.
Requirements: Docker can be installed on any Linux with a kernel of at least version 3.10. Docker
is supported on the following 64-bit versions of Ubuntu Linux:
Easy Installation
Note: Installing Docker from the default Ubuntu repository will install an old version of
Docker.
To install the latest version of Docker using the Docker repository, use curl to grab and run the
installation script provided by Docker:
$ curl -sSL https://get.docker.com/ | sh
Manual Installation
If, however, running the installation script is not an option, the following instructions can be used to
manually install the latest version of Docker from the official repository.
Next, open the /etc/apt/sources.list.d/docker.list file in your favorite editor. If the file doesn’t
exist, create it. Remove any existing entries. Then, depending on your version, add the following
line:
Save the file and exit, then update your package index, uninstall any installed versions of Docker,
and verify apt is pulling from the correct repo:
• Ubuntu Xenial 16.04 (LTS), Ubuntu Wily 15.10, Ubuntu Trusty 14.04 (LTS)
sudo apt-get update && sudo apt-get install linux-image-extra-$(uname -r)
This version of Ubuntu requires kernel version 3.13. You may need to install additional
packages depending on your environment:
linux-image-generic-lts-trusty
Generic Linux kernel image. This kernel has AUFS built in. This is required to run Docker.
linux-headers-generic-lts-trusty
Allows packages such as ZFS and VirtualBox guest additions which depend on them. If you
didn’t install the headers for your existing kernel, then you can skip these headers for the
trusty kernel. If you’re unsure, you should include this package for safety.
xserver-xorg-lts-trusty
libgl1-mesa-glx-lts-trusty
To learn more about the reasons for these packages, read the installation instructions for
backported kernels, specifically the LTS Enablement Stack — refer to note 5 under each
version.
$ sudo reboot
This command should print a welcome message verifying that the installation was successful.
You can use docker, without using docker daemon (engine), by using cloud providers. In this
example, you should have a gcloud (Google Cloud util), that connected to your account
This example will create a new instance, in your Google Cloud console. Using machine time f1-
large
A couple of notes:
The following instructions involve installation using Docker packages only, and this
ensures obtaining the latest official release of Docker. If you need to install only using
Ubuntu-managed packages, consult the Ubuntu documentation (Not recommended
otherwise for obvious reasons).
Ubuntu Utopic 14.10 and 15.04 exist in Docker’s APT repository but are no longer
officially supported due to known security issues.
Prerequisites
5. Find the entry in the table below which corresponds to your Ubuntu version. This determines
where APT will search for Docker packages. When possible, run a long-term support (LTS)
edition of Ubuntu.
Note: Docker does not provide packages for all architectures. Binary artifacts are built
nightly, and you can download them from https://master.dockerproject.org. To install
docker on a multi-architecture system, add an [arch=...] clause to the entry. Refer to
Debian Multiarch wiki for details.
6. Run the following command, substituting the entry for your operating system for the
placeholder <REPO>.
When you run the following command, an entry is returned for each version of Docker that is
available for you to install. Each entry should have the URL https://apt.dockerproject.org/repo/.
The version currently installed is marked with ***.See the below example's output.
docker-engine:
Installed: 1.12.2-0~trusty
Candidate: 1.12.2-0~trusty
Version table:
*** 1.12.2-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
100 /var/lib/dpkg/status
1.12.1-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
1.12.0-0~trusty 0
500 https://apt.dockerproject.org/repo/ ubuntu-trusty/main amd64 Packages
From now on when you run apt-get upgrade, APT pulls from the new repository.
For Ubuntu Trusty (14.04) , Wily (15.10) , and Xenial (16.04) , install the linux-image-extra-* kernel
packages, which allows you use the aufs storage driver.
2. Update your package manager with the command sudo apt-get update.
For Ubuntu Precise (12.04 LTS), Docker requires the 3.13 kernel version. If your kernel version is
older than 3.13, you must upgrade it. Refer to this table to see which packages are required for
your environment:
Package Description
linux-image- Generic Linux kernel image. This kernel has AUFS built in. This is required to
generic-lts-
trusty run Docker.
Allows packages such as ZFS and VirtualBox guest additions which depend
linux-headers- on them. If you didn’t install the headers for your existing kernel, then you
generic-lts-
trusty can skip these headers for the trusty kernel. If you’re unsure, you should
include this package for safety.
To learn more about the reasons for these packages, read the installation
ligbl1-mesa-
glx-lts-trusty instructions for backported kernels, specifically the LTS Enablement Stack.
Refer to note 5 under each version.
To upgrade your kernel and install the additional packages, do the following:
2. Update your package manager with the command sudo apt-get update.
3. Install both the required and optional packages.
5. Reboot your host to use the updated kernel using the command sudo reboot.
Make sure you satisfy the prerequisites, only then follow the below steps.
Note: For production systems, it is recommended that you install a specific version so
that you do not accidentally update Docker. You should plan upgrades for production
systems carefully.
1. Log into your Ubuntu installation as a user with sudo privileges. (Possibly running sudo -su).
4. Start the docker daemon with the command sudo service docker start.
This command downloads a test image and runs it in a container. When the container runs, it
prints an informational message and exits.
If you don’t want to use sudo when you use the docker command, create a Unix group called docker
and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket
read/writable by the docker group.
2. Create the docker group with the command sudo groupadd docker.
4. Log out and log back in so that your group membership is re-evaluated.
5. Verify that you can docker commands without sudo permission.
Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
Check whether the DOCKER_HOST environment variable is set for your shell.
If it is set, the above command will return a result. If so, unset it.
$ unset DOCKER_HOST
You may need to edit your environment in files such as ~/.bashrc or ~/.profile to prevent the
DOCKER_HOST variable from being set erroneously.
This document will help you with installation steps of Docker-ee and Docker-ce edition in CentOS
Docker-ce Installation
Following are steps to install docker-ce edition
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3. Optional: Enable the edge repository. This repository is included in the docker.repo file
above but is disabled by default. You can enable it alongside the stable repository.
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
If you want to install some other version of docker-ce you can use following command:
7. If everything went well the docker-ce is now installed in your system, use following command
to start:
1. To signup go to https://cloud.docker.com/. Enter your details and confirm your email id. After
confirmation you would be given a <DOCKER-EE-URL>, which you can see in your
dashboard after clicking on setup.
$ sudo yum-config-manager \
--add-repo \
<DOCKER-EE-URL>/docker-ee.repo
7. Install docker-ee
ReactJS is a simple, feature rich, component based JavaScript UI library. It can be used
to develop small applications as well as big, complex applications. ReactJS provides
minimal and solid feature set to kick-start a web application. React community
compliments React library by providing large set of ready-made components to develop
web application in a record time. React community also provides advanced concept like
state management, routing, etc., on top of the React library.
React versions
The initial version, 0.3.0 of React is released on May, 2013 and the latest version, 17.0.1
is released on October, 2020. The major version introduces breaking changes and the
minor version introduces new feature without breaking the existing functionality. Bug fixes
are released as and when necessary. React follows the Sematic Versioning (semver)
principle.
Features
The salient features of React library are as follows:
Benefits
Few benefits of using React library are as follows:
Easy to learn
Easy to adept in modern as well as legacy application
Faster way to code a functionality
Availability of large number of ready-made component
Large and active community
Applications
Few popular websites powered by React library are listed below:
As you see, most popular application in every field is being developed by React Library.
2. ReactJS — Installation ReactJS
This chapter explains the installation of React library and its related tools in your machine.
Before moving to the installation, let us verify the prerequisite first.
React provides CLI tools for the developer to fast forward the creation, development and
deployment of the React based web application. React CLI tools depends on the Node.js
and must be installed in your system. Hopefully, you have installed Node.js on your
machine. We can check it using the below command:
node --version
You could see the version of Nodejs you might have installed. It is shown as below for me,
v14.2.0
Toolchain
To develop lightweight features such as form validation, model dialog, etc., React library
can be directly included into the web application through content delivery network (CDN).
It is similar to using jQuery library in a web application. For moderate to big application,
it is advised to write the application as multiple files and then use bundler such as webpack,
parcel, rollup, etc., to compile and bundle the application before deploying the code.
React toolchain helps to create, build, run and deploy the React application. React
toolchain basically provides a starter project template with all necessary code to bootstrap
the application.
Let us learn the basics of the above mentioned tools and how to install those in this
chapter.
The serve static server
The serve is a lightweight web server. It serves static site and single page application. It
loads fast and consume minimum memory. It can be used to serve a React application.
Let us install the tool using npm package manager in our system.
Let us create a simple static site and serve the application using serve app.
cd /go/to/your/workspace
Create a new folder, static_site and change directory to newly created folder.
mkdir static_site
cd static_site
Next, create a simple webpage inside the folder using your favorite html editor.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Static website</title>
</head>
<body>
<div><h1>Hello!</h1></div>
</body>
</html>
serve .
We can also serve single file, index.html instead of the whole folder.
serve ./index.html
Next, open the browser and enter http://localhost:5000 in the address bar and press
enter. serve application will serve our webpage as shown below.
The serve will serve the application using default port, 5000. If it is not available, it will
pick up a random port and specify it.
│ Serving! │
│ │
│ - Local: http://localhost:57311 │
│ - On Your Network: http://192.168.56.1:57311 │
│ │
│ This port was picked because 5000 is in use. │
│ │
│ Copied local address to clipboard!
Babel compiler
Babel is a JavaScript compiler which compiles many variant (es2015, es6, etc.,) of
JavaScript into standard JavaScript code supported by all browsers. React uses JSX, an
extension of JavaScript to design the user interface code. Babel is used to compile the JSX
code into JavaScript code.
To install Babel and it’s React companion, run the below command:
+ babel-cli@6.26.0
+ babel-preset-react-app@3.1.2
updated 2 packages in 8.685s
Babel helps us to write our application in next generation of advanced JavaScript syntax.
Instead of introducing new template language, React introduces three simple concepts as
given below:
React elements
JavaScript representation of HTML DOM. React provides an API, React.createElement to
create React Element.
JSX
A JavaScript extension to design user interface. JSX is an XML based, extensible language
supporting HTML syntax with little modification. JSX can be compiled to React Elements
and used to create user interface.
React component
React component is the primary building block of the React application. It uses React
elements and JSX to design its user interface. React component is basically a JavaScript
class (extends the React.component class) or pure JavaScript function. React component
has properties, state management, life cycle and event handler. React component can be
able to do simple as well as advanced logic.
cd /go/to/your/workspace
Next, create a folder, static_site and change directory to newly created folder.
mkdir static_site
cd static_site
<script src="https://unpkg.com/react@17/umd/react.development.js"
crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-
dom.development.js" crossorigin></script>
<script language="JavaScript">
element = React.createElement('h1', {}, 'Hello React!')
ReactDOM.render(element, document.getElementById('react-app'));
</script>
</body>
</html>
serve ./hello.html
Next, open your favorite browser. Enter http://localhost:5000 in the address bar and then
press enter.
Let us analyse the code and do little modification to better understand the React
application.
React.createElement
Used to create React elements. It expects three parameters:
Element tag
Element attributes as object
Element content - It can contain nested React element as well
ReactDOM.render
Used to render the element into the container. It expects two parameters:
<script language="JavaScript">
element = React.createElement('div', {},
React.createElement('h1', {}, 'Hello React!'));
ReactDOM.render(element, document.getElementById('react-app'));
</script>
<div><h1>Hello React!</h1></div>
Use JSX
Next, let us remove the React element entirely and introduce JSX syntax as shown below:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React Application</title>
</head>
<body>
<div id="react-app"></div>
<script src="https://unpkg.com/react@17/umd/react.development.js"
crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-
dom.development.js" crossorigin></script>
<script
src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">
ReactDOM.render(
<div><h1>Hello React!</h1></div>,
document.getElementById('react-app') );
</script>
</body>
</html>
Here, we have included babel to convert JSX into JavaScript and added type=“text/babel”
in the script tag.
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">
...
...
</script>
Next, run the application and open the browser. The output of the application is as follows:
Next, let us create a new React component, Greeting and then try to use it in the webpage.
<script type="text/babel">
function Greeting() {
return <div><h1>Hello JSX!</h1></div>
}
ReactDOM.render(
<Greeting />,
document.getElementById('react-app') );
</script>
By analyzing the application, we can visualize the workflow of the React application as
shown in the below diagram.
React app calls ReactDOM.render method by passing the user interface created using
React component (coded in either JSX or React element format) and the container to
render the user interface.
ReactDOM.render processes the JSX or React element and emits Virtual DOM.
As we learned earlier, React library can be used in both simple and complex application.
Simple application normally includes the React library in its script section. In complex
application, developers have to split the code into multiple files and organize the code into
a standard structure. Here, React toolchain provides pre-defined structure to bootstrap
the application. Also, developers are free to use their own project structure to organize
the code.
Using CDN
Let us learn how to use content delivery network to include React in a simple web page.
cd /go/to/your/workspace
Next, create a folder, static_site and change directory to newly created folder.
mkdir static_site
cd static_site
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Simple React app</title>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Simple React app</title>
</head>
<body>
<script src="https://unpkg.com/react@17/umd/react.development.js"
crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-
dom.development.js" crossorigin></script>
</body>
</html>
Here,
We are using unpkg CDN. unpkg is an open source, global content delivery
network supporting npm packages.
@17 represent the version of the React library
This is the development version of the React library with debugging option. To
deploy the application in the production environment, use below scripts.
<script src="https://unpkg.com/react@17/umd/react.production.min.js"
crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"
crossorigin></script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React based application</title>
</head>
<body>
<div id="react-app"></div>
<script src="https://unpkg.com/react@17/umd/react.development.js"
crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-
dom.development.js" crossorigin></script>
</body>
</html>
The react-app is a placeholder container and React will work inside the container. We can
use any name for the placeholder container relevant to our application.
Next, create a script section at the end of the document and use React feature to create
an element.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React based application</title>
</head>
<body>
<div id="react-app"></div>
<script src="https://unpkg.com/react@17/umd/react.development.js"
crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-
dom.development.js" crossorigin></script>
<script language="JavaScript">
element = React.createElement('h1', {}, 'Hello React!')
ReactDOM.render(element, document.getElementById('react-app'));
</script>
</body>
</html>
serve ./hello.html
Next, open the browser and enter http://localhost:5000 in the address bar and press
enter. serve application will serve our webpage as shown below.
We can use the same steps to use React in the existing website as well. This method is
very easy to use and consume React library. It can be used to do simple to moderate
feature in a website. It can be used in new as well as existing application along with other
libraries. This method is suitable for static website with few dynamic section like contact
form, simple payment option, etc., To create advanced single page application (SPA), we
need to use React tools. Let us learn how to create a SPA using React tools in upcoming
chapter.
> cd /go/to/your/workspace
Next, create a new React application using Create React App tool.
cd expense-manager
npm install
The npm install will install the necessary library under node_modules folder.
npm start
Compiled successfully!
Local: http://localhost:3000
On Your Network: http://192.168.56.1:3000
Next, open the browser and enter http://localhost:3000 in the address bar and press
enter. The development web server will serve our webpage as shown below.
|-- README.md
|-- node_modules
|-- package-lock.json
|-- package.json
|-- public
| |-- favicon.ico
| |-- index.html
| |-- logo192.png
| |-- logo512.png
| |-- manifest.json
| `-- robots.txt
`-- src
|-- App.css
|-- App.js
|-- App.test.js
|-- index.css
|-- index.js
|-- logo.svg
|-- reportWebVitals.js
`-- setupTests.js
Here,
The package.json is the core file representing the project. It configures the entire project
and consists of project name, project dependencies, and commands to build and run the
application.
{
"name": "expense-manager",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.11.6",
"@testing-library/react": "^11.2.2",
"@testing-library/user-event": "^12.6.0",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-scripts": "4.0.1",
"web-vitals": "^0.2.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
The package.json refers the below React library in its dependency section.
react and react-dom are core react libraries used to develop web application.
react-scripts are core react scripts used to build and run application.
The public folder - Contains the core file, index.html and other web resources like
images, logos, robots, etc., index.html loads our react application and render it in
user’s browser.
The src folder - Contains the actual code of the application. We will check it next
section.
The index.js - Entry point of our application. It uses ReactDOM.render method to kick-
start and start the application. The code is as follows:
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
Here,
App is our first custom and root component of the application. All other
components will be rendered inside the App component.
The index.css - Used to styles of the entire application. Let us remove all styles and
start with fresh code.
App.js - Root component of our application. Let us replace the existing JSX and show
simple hello react message as shown below:
import './App.css';
function App() {
return (
<h1>Hello React!</h1>
);
}
App.css - Used to style the App component. Let us remove all styles and start with
fresh code.
logo.svg - Logo in SVG format and can be loaded into our application using import
keyword. Let us remove it from the project.
Next, create a folder, components under src to include our React components. The idea is
to create two files, <component>.js to write the component logic and <component.css>
to include the component specific styles.
|-- package-lock.json
|-- package.json
`-- public
|-- index.html
`-- src
|-- index.js
`-- components
| |-- mycom.js
| |-- mycom.css
Let us create a new component, HelloWorld to confirm our setup is working fine. Create a
file, HelloWorld.js under components folder and write a simple component to emit Hello
World message.
Next, create our main file, index.js under src folder and call our newly created component.
ReactDOM.render(
<React.StrictMode>
<HelloWorld />
</React.StrictMode>,
document.getElementById('root')
);
Next, create a html file, index.html (under public folder*), which will be our entry point of
the application.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Expense Manager</title>
</head>
<body>
<div id="root"></div>
</body>
</html>
It will start the application in the local system and can be accessed through browser @
http://localhost:3000/.
Local: http://localhost:3000
On Your Network: http://192.168.56.1:3000
Open your favorite browser and go to http://localhost:3000. The result of the application
is as shown below:
To create a custom project, we need to have basic knowledge about four items.
Bundler - Bundles the multiple sources (JavaScript, html and css) into a single
deployable code. Create React App uses webpack as its bundler. Let us learn how to
use Rollup and Parcel bundler in the upcoming section.
Webserver - Starts the development server and launch our application. Create React
App uses an internal webserver and we can use serve as our development server.
cd /go/to/your/workspace
Next, create a folder, expense-manager-rollup and move to newly created folder. Also,
open the folder in your favorite editor or IDE.
mkdir expense-manager-rollup
cd expense-manager-rollup
npm init -y
Next, create a babel configuration file, .babelrc under the root folder to configure the babel
compiler.
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
"corejs": 3,
"targets": "> 0.25%, not dead"
}
],
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
Next, create a rollup.config.js file in the root folder to configure the rollup bundler.
import babel from '@rollup/plugin-babel';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import replace from '@rollup/plugin-replace';
export default {
input: 'src/index.js',
output: {
file: 'public/index.js',
format: 'iife',
},
plugins: [
commonjs({
include: [
'node_modules/**',
],
exclude: [
'node_modules/process-es6/**',
],
}),
resolve(),
babel({
exclude: 'node_modules/**'
}),
replace({
'process.env.NODE_ENV': JSON.stringify('production'),
}),
postcss({
autoModules: true
}),
livereload('public'),
serve({
contentBase: 'public',
port: 3000,
open: true,
}), // index.html should be in root of project
]
}
Next, update the package.json and include our entry point (public/index.js and
public/styles.css) and command to build and run the application.
...
"main": "public/index.js",
"style": "public/styles.css",
"files": [
"public"
],
"scripts": {
"start": "rollup -c -w",
"build": "rollup"
},
...
Next, create a src folder in the root directory of the application, which will hold all the
source code of the application.
Next, create a folder, components under src to include our React components. The idea is
to create two files, <component>.js to write the component logic and <component.css>
to include the component specific styles.
|-- package-lock.json
|-- package.json
|-- rollup.config.js
|-- .babelrc
`-- public
|-- index.html
`-- src
|-- index.js
`-- components
| |-- mycom.js
| |-- mycom.css
Let us create a new component, HelloWorld to confirm our setup is working fine. Create a
file, HelloWorld.js under components folder and write a simple component to emit Hello
World message.
Next, create our main file, index.js under src folder and call our newly created component.
ReactDOM.render(
<React.StrictMode>
<HelloWorld />
</React.StrictMode>,
document.getElementById('root')
);
Next, create a html file, index.html (under public folder*), which will be our entry point of
the application.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Expense Manager :: Rollup version</title>
</head>
<body>
<div id="root"></div>
<script type="text/JavaScript" src="./index.js"></script>
</body>
</html>
npm start
The npm build command will execute the rollup and bundle our application into a single
file, dist/index.js file and start serving the application. The dev command will recompile
the code whenever the source code is changed and also reload the changes in the browser.
rollup v2.36.1
bundles src/index.js → dist\index.js...
LiveReload enabled
http://localhost:10001 -> /path/to/your/workspace/expense-manager-rollup/dist
created dist\index.js in 4.7s
Next, open the browser and enter http://localhost:3000 in the address bar and press
enter. serve application will serve our webpage as shown below.
Using Parcel bundler
Parcel is fast bundler with zero configuration. It expects just the entry point of the
application and it will resolve the dependency itself and bundle the application. Let us learn
how to use parcel bundler in this chapter.
cd /go/to/your/workspace
Next, create a folder, expense-manager-parcel and move to newly created folder. Also,
open the folder in your favorite editor or IDE.
mkdir expense-manager-parcel
cd expense-manager-parcel
npm init -y
Next, create a babel configuration file, .babelrc under the root folder to configure the babel
compiler.
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
Next, update the package.json and include our entry point (src/index.js) and commands
to build and run the application.
...
"main": "src/index.js",
"scripts": {
"start": "parcel public/index.html",
"build": "parcel build public/index.html --out-dir dist"
},
...
Next, create a src folder in the root directory of the application, which will hold all the
source code of the application.
Next, create a folder, components under src to include our React components. The idea is
to create two files, <component>.js to write the component logic and <component.css>
to include the component specific styles.
|-- package-lock.json
|-- package.json
|-- .babelrc
`-- public
|-- index.html
`-- src
|-- index.js
`-- components
| |-- mycom.js
| |-- mycom.css
Let us create a new component, HelloWorld to confirm our setup is working fine. Create a
file, HelloWorld.js under components folder and write a simple component to emit Hello
World message.
Next, create our main file, index.js under src folder and call our newly created component.
ReactDOM.render(
<React.StrictMode>
<HelloWorld />
</React.StrictMode>,
document.getElementById('root')
);
Next, create a public folder in the root directory.
Next, create a html file, index.html (in the public folder), which will be our entry point of
the application.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Expense Manager :: Parcel version</title>
</head>
<body>
<div id="root"></div>
<script type="text/JavaScript" src="../src/index.js"></script>
</body>
</html>
npm start
The npm build command will execute the parcel command. It will bundle and serve the
application on the fly. It recompiles whenever the source code is changed and also reload
the changes in the browser.
Next, open the browser and enter http://localhost:1234 in the address bar and press
enter.
To create the production bundle of the application to deploy it in production server, use
build command. It will generate a index.js file with all the bundled source code under dist
folder.
√ Built in 6.42s.