Full Stack Development-Digital Notes
Full Stack Development-Digital Notes
ON
FULL STACK DEVELOPMENT
By
CH ANUSHA
(ASSISTANT PROFESSOR)
DEPARTMENT OF MCA
Course Outcomes
1. Demonstrate Proficiency in creating webpage using HTML,CSS and version control systems
like GITHUB.
2. Apply JabaScript and JQuery concepts to create dymanic user interfaces and manage
asynchronous data exchange.
3. Develop and managed frontend application using React, React router and redux for efficient
client-server communication.
4. Build secure and scalable backend applications using Java, Spring MVC and restful services
5. Design and deploy full-stack application with normalized relational databases and cloud-
based deployment practices.
UNIT – I
WEB development basics – HTML and web servers, shell, UNIX CLI, version control using Git
and Github, HTML, CSS
UNIT – II
Frontend Development – javascript basics, OOPS aspects of javascripts, memory usage and
functions in javascripts, AJAX for data exchange with server, JQuery events, UI components, JSON
data format
UNIT – III
React JS – Introduction to React, Router and single-page application, React forms, Flow
Architecture, introduction to Redux, Client-Server Communication.
UNIT – IV
Web Development – Java programming basics, Model View Controller (MVC) pattern, MVC
architecture using spring, RESTFUL API using spring framework, building an application using Maven
UNIT - V
Databases and Deployment – Relational Schemas and Normalization, Structured Query
Language (SQL), data persistence using spring JDBC, agile development principles, deploying
applications in cloud
Suggested Readings
1. Jon duckett, “ web design with HTML, CSS, JavaScript and Jquery set”, wiley
publications, 2014.
2. Nicholas C.Zakas, “ Professional Javascripts for web Developers”,Wiley
publications, 2012.
3. Robin Nixon, “Learning PHP, MYSQL, Javascript, CSS and HTML : A step-by-step
th
guide to creating dynamic websites”, Oielly,7 edition, 2025
4. Azat Mardan, “ Full Stack Java script : Learn Backbone.js, Node.js and mango
DB”, Apress 2018.
What is HTML
HTML is an acronym which stands for Hyper Text Markup Language which is used for
creating web pages and web applications. Let's see what is meant by Hypertext
Markup Language, and Web page.
Hyper Text:HyperText simply means "Text within Text." A text has a link within it, is a
hypertext. Whenever you click on a link which brings you to a new webpage, you
have clicked on a hypertext. HyperText is a way to link two or more web pages
(HTML documents) with each other.
Web Page: A web page is a document which is commonly written in HTML and
translated by a web browser. A web page can be identified by entering an URL. A
Web page can be of the static or dynamic type. With the help of HTML only, we can
create static web pages.
Hence, HTML is a markup language which is used for creating attractive web pages
with the help of styling, and which looks in a nice format on a web browser. An HTML
document is made of many HTML tags and each HTML tag contains different content.
<html > :This tag informs the browser that it is an HTML document. Text between html
tag describes the web document. It is a container for all other elements of HTML
except
<!DOCTYPE>
<head>: It should be the first element inside the <html> element, which contains the
metadata(information about the document). It must be closed before the body tag
opens.
<title>: As its name suggested, it is used to add title of that HTML page which
appears at the top of the browser window. It must be placed inside the head tag and
should close immediately. (Optional)
<body>: Text between body tag describes the body content of the page that is visible
to the end user. This tag contains the main content of the HTML document.
<h1> : Text between <h1> tag describes the first level heading of the webpage.
<p>: Text between <p> tag describes the paragraph of the webpage.
Tim Berners-Lee is known as the father of HTML. The first available description of
HTML was a document called "HTML Tags" proposed by Tim in late 1991. The latest
version of HTML is HTML5, which we will learn later in this tutorial.
HTML Versions
Since the time HTML was invented there are lots of HTML versions in market, the brief
introduction about the HTML version is given below:
HTML 1.0: The first version of HTML was 1.0, which was the barebones version of
HTML language, and it was released in1991.
HTML 2.0: This was the next version which was released in 1995, and it was
standard language version for website design. HTML 2.0 was able to support
extra features such as form-based file upload, form elements such as text box,
option button, etc.
HTML 3.2: HTML 3.2 version was published by W3C in early 1997. This version was
capable of creating tables and providing support for extra options for form elements.
It can also support a web page with complex mathematical equations. It became an
official standard for any browser till January 1997. Today it is practically supported
by most of the browsers.
HTML 4.01: HTML 4.01 version was released on December 1999, and it is a very
stable version of HTML language. This version is the current official standard,
and it provides added support for stylesheets (CSS) and scripting ability for
various multimedia elements.
HTML5 : HTML5 is the newest version of HyperText Markup language. The first draft
of this version was announced in January 2008. There are two major organizations
one is W3C (World Wide Web Consortium), and another one is WHATWG( Web
Hypertext Application Technology Working Group) which are involved in the
development of HTML 5 version, and still, it is under development.
Features of HTML
1) It is a very easy and simple language. It can be easily understood and modified.
4) It facilitates programmers to add a link on the web pages (by html anchor
tag), so it enhances the interest of browsing of the user.
6) It facilitates the programmer to add Graphics, Videos, and Sound to the web pages
which makes it more attractive and interactive.
To run the HTML page, you need to open the file location, where you have saved the
file and then either double-click on file or click on open with option
B. HTML code with Sublime Text-editor.
(Recommended after learning basics of HTML)
When you will learn the basics of HTML, then you can use some professional text
editors, which will help you to write an efficient and fast code. So to use Sublime Text
editors, first it needs to download and install from internet. You can easily download it
from this https://www.sublimetext.com/download link and can install in your PC.
When installation of Sublime text editor done then you can follow the simple steps to
use it:
To save your page in Sublime Text press Ctrl+S or go to File option save, to save a
file use extension .htm or .html. We recommend to save the file first then write the
code because after saving the page sublime text editor will give you suggestions to
write code.
To execute or open this page in Web browser just right click by mouse on sublime
text page and click on Open in Browser.
Building blocks of HTML
An HTML document consist of its basic building blocks which are:
● Tags: An HTML tag surrounds the content and apply meaning to it. It is
written between < and > brackets.
● Attribute: An attribute in HTML provides extra information about the element,
and it is applied within the start tag. An HTML attribute contains two fields:
name & value.
Syntax
1. <tag name attribute_name= " attr_value"> content </ tag name>
Output:
HTML Tags
HTML tags are like keywords which defines that how web browser will format and
display the content. With the help of tags, a web browser can distinguish between an
HTML content and a simple content. HTML tags contain three main parts: opening
tag, content and closing tag. But some HTML tags are unclosed tags.
When a web browser reads an HTML document, browser reads it from top to bottom
and left to right. HTML tags are used to create HTML documents and render their
properties. Each HTML tags have different properties.
An HTML file must have some essential tags so that web browser can differentiate
between a simple text and HTML text. You can use as many tags you want as per
your code requirement.
Syntax
<tag> content </tag>
<i>Italic Tag</i>
<br> Tag: br stands for break line, it breaks the line of the code.
<hr> Tag: hr stands for Horizontal Rule. This tag is used to put a line across the
webpage.
HTML Meta Tags
DOCTYPE, title, link, meta and style
HTML Attribute
● HTML attributes are special words which provide additional information about the
elements or attributes are the modifier of the HTML element.
● Each element or tag can have attributes, which defines the behaviour of that element.
● Attributes should always be applied with start tag.
● The Attribute should always be applied with its name and value pair.
● The Attributes name and values are case sensitive, and it is recommended by W3C
that it should be written in Lowercase only.
● You can add multiple attributes in one HTML element, but need to give space between
two attributes.
Syntax
1. <element attribute_name="value">content</element>
Example
1. <!DOCTYPE html>
2. <html>
3. <head>
4. </head>
5. <body>
6. <h1> This is Style attribute</h1>
7. <p style="height: 50px; color: blue">It will add style property in element</p>
8. <p style="color: red">It will change the color of content</p>
9. </body>
10.</html>
Output:
Explanation of above example:
1. <p style="height: 50px; color: blue">It will add style property in element</p>
In the above statement, we have used paragraph tags in which we have applied style
attribute. This attribute is used for applying CSS property on any HTML element. It
provides height to paragraph element of 50px and turns it colour to blue.
In the above statement we have again used style attribute in paragraph tag, which
turns its colour red.
Note: There are some commonly used attributes are given below, and the complete list
and explanation of all attributes are given in HTML attributes List.
Example
With <h1> tag:
1.<p title="This is paragraph tag">Move the cursor over the heading and paragraph, and
you will see a description as a tooltip</p>
Code:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. </head>
5. <body>
6.
7. <h1 title="This is heading tag">Example of title attribute</h1>
8. <p title="This is paragraph tag">Move the cursor over the heading and
paragraph, and you will see a description as a tooltip</p>
9.
10.</body>
11. </html>
Output:
Example
With link address:
Example
1. <img src="whitepeacock.jpg" height="400" width="600">
Note: The above example also have height and width attribute, which define the height and width
of image on web page.
Output:
Quotes: single quotes or double quotes?
In this chapter you have seen that, we have used attribute with double quotes, but
some people might use single quotes in HTML. So use of single quotes with
HTML attribute, is also allowed. The following both statements are absolutely
fine.
IN HTML5, you can also omit use of quotes around attribute values.
HTML Elements
An HTML file is made of elements. These elements are responsible for creating
web pages and define content in that webpage. An element in HTML usually
consist of a start tag <tag name>, close tag </tag name> and content inserted
between them. Technically, an element is a collection of start tag, attributes, end
tag, content between them.
Note: Some elements does not have end tag and content, these elements are termed as empty
elements or self-closing element or void elements.
Such as:
Example
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>WebPage</title>
5. </head>
6. <body>
7. <h1>This is my first web page</h1>
8. <h2> How it looks?</h2>
9. <p>It looks Nice!!!!!</p>
10.</body>
11. </html>
● All the content written between body elements are visible on web page.
Void element: All the elements in HTML do not require to have start tag and end tag,
some elements does not have content and end tag such elements are known as Void
elements or empty elements. These elements are also called as unpaired tag.
Some Void elements are <br> (represents a line break) ,<hr>(represents a horizontal
line), etc.
Nested HTML Elements: HTML can be nested, which means an element can
contain another element.
Block-level and Inline HTML elements
For the default display and styling purpose in HTML, all the elements are divided into
two categories:
● Block-level element
● Inline element
Block-level element:
● These are the elements, which structure main part of web page, by dividing a page
into coherent blocks.
● A block-level element always start with new line and takes the full width of web page,
from left to right.
● These elements can contain block-level as well as inline elements.
<address>, <article>, <aside>, <blockquote>, <canvas>, <dd>, <div>, <dl>, <dt>, <fieldset>,
<figcaption>, <figure>, <footer>, <form>, <h1>-<h6>, <header>, <hr>, <li>, <main>,
<nav>, <noscript>, <ol>, <output>, <p>, <pre>, <section>, <table>, <tfoot>, <ul> and
<video>.
Example:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. </head>
5. <body>
6. <div style="background-color: lightblue">This is first div</div>
7. <div style="background-color: lightgreen">This is second div</div>
8. <p style="background-color: pink">This is a block level element</p>
9. </body>
10.</html>
Output:
In the above example we have used
tag, which defines a section in a web page, and takes full width of page.
We have used style attribute which is used to styling the HTML content, and the
background color are showing that it's a block level element.
Inline elements:
● Inline elements are those elements, which differentiate the part of a given text and provide
it a particular function.
● These elements does not start with new line and take width as per requirement.
● The Inline elements are mostly used with other elements.
<a>, <abbr>, <acronym>, <b>, <bdo>, <big>, <br>, <button>, <cite>, <code>, <dfn>, <em>,
<i>, <img>, <input>, <kbd>, <label>, <map>, <object>, <q>, <samp>, <script>, <select>,
<small>, <span>, <strong>, <sub>, <sup>, <textarea>, <time>, <tt>, <var>.
Example:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. </head>
5. <body>
6. <a href="https://www.javatpoint.com/html-tutorial">Click on link</a>
7. <span style="background-color: lightblue">this is inline element</span>
8. <p>This will take width of text only</p>
9. </body>
10.</html>
Output:
Following is the list of the some main elements used in HTML:
HTML Formatting
HTML Formatting is a process of formatting text for better look and feel. HTML
provides us ability to format text without using CSS. There are many formatting tags
in HTML. These tags are used to make text bold, italicized, or underlined. There are
almost 14 options available that how text appears in HTML and XHTML.
● Physical tag: These tags are used to provide the visual appearance to the text.
● Logical tag: These tags are used to add some logical or semantic value to the text.
NOTE: There are some physical and logical tags which may give same visual appearance, but
they will be different in semantics.
Here, we are going to learn 14 HTML formatting tags. Following is the list of
HTML formatting text.
Eleme
Description
nt
nam
e
<b> This is a physical tag, which is used to bold the text written between it.
<strong> This is a logical tag, which tells the browser that the text is important.
<tt> This tag is used to appear a text in teletype. (not supported in HTML5)
<big> This tag is used to increase the font size by one conventional unit.
<small> This tag is used to decrease the font size by one unit from base
font size.
1) Bold Text
HTML<b> and <strong> formatting elements
The HTML <b> element is a physical tag which display text in bold font, without any
logical importance. If you write anything within <b> </b> element, is shown in bold
letters.
Output:
The HTML <strong> tag is a logical tag, which displays the content in bold font and
informs the browser about its logical importance. If you write anything between
<strong>???????.</strong>, is shown important
Output:
Example
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>formatting elements</title>
5. </head>
6. <body>
7. <h1>Explanation of formatting element</h1>
8. <p><strong>This is an important content</strong>, and this is normal content</p>
9. </body>
10.</html>
2) Italic Text
HTML <i> and <em> formatting elements
The HTML <i> element is physical element, which display the enclosed content in
italic font, without any added importance. If you write anything within <i> </i>
element, is
shown in italic letters.
Output:
The HTML <em> tag is a logical element, which will display the enclosed content in
italic font, with added semantics importance.
Output:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>formatting elements</title>
5. </head>
6. <body>
7. <h1>Explanation of italic formatting element</h1>
8. <p><em>This is an important content</em>, which displayed in italic font.</p>
9. </body>
10.</html>
Output:
4) Underlined Text
If you write anything within <u> </u> element, is shown in underlined text.
Output:
5) Strike Text
Anything written within <strike> </strike> element is displayed with
strikethrough. It is a thin line which cross the
Output:
6) Monospaced Font
If you want that each letter has the same width then you should write the content
within
<tt> </tt> element.
Note: We know that most of the fonts are known as variable-width fonts because
different letters have different width. (for example: 'w' is wider than 'i').
Monospaced Font provides similar space among every letter.
Output:
7) Superscript Text
If you put the content within <sup> </sup> element, is shown in superscript;
means it
is displayed half a character's height above the other
Output:
8) Subscript Text
If you put the content within <sub> </sub> element, is shown in subscript ;
means it
is displayed half a character's height below the other
Output:
HTML Heading
A HTML heading or HTML h tag can be defined as a title or a subtitle which you
want to display on the webpage. When you place the text within the heading tags
<h1> </
h1>, it
is displayed on the browser in the bold format and size of the text depends on the
number of heading.
There are six different HTML headings which are defined with the <h1> to <h6> tags,
from highest level h1 (main heading) to the least level h6 (least important heading).
h1 is the largest heading tag and h6 is the smallest one. So h1 is used for most
important heading and h6 is used for least important.
Headings in HTML helps the search engine to understand and index the structure of
web page.
Note: The main keyword of the whole content of a webpage should be display by h1 heading tag.
Output:
Heading no. 1
Heading no. 2
Heading no. 3
Heading no. 4
Heading no. 5
Heading no. 6
Heading elements (h1. h6) should be used for headings only. They should not be used just to
make
text bold or big.
● HTML headings can also be used with nested elements. Following are different codes to
display the way to use heading elements.
Example:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Heading elements</title>
5. </head>
6. <body>
7. <h1>This is main heading of page. </h1>
8. <p>h1 is the most important heading, which is used to display the keyword of page </p>
9. <h2>This is first sub-heading</h2>
10.<p>h2 describes the first sub heading of page. </p>
11. <h3>This is Second sub-heading</h3>
12.<p>h3 describes the second sub heading of page.</p>
13. <p>We can use h1 to h6 tag to use the
different sub- heading with their paragraphs if
14.required.
15. </p>
16.</body>
17. </html>
Output:
HTML Paragraph
HTML paragraph or HTML p tag is used to define a paragraph in a webpage.
Let's take a simple example to see how it work. It is a notable point that a
browser itself add an empty line before and after a paragraph. An HTML <p> tag
indicates starting of new paragraph.
Note: If we are using various <p> tags in one HTML file then browser automatically adds a
single blank line between the two paragraphs.
p> Output:
This is second
paragraph.
Space inside HTML Paragraph
If you put a lot of spaces inside the HTML p tag, browser removes extra spaces and
extra line while displaying the page. The browser counts number of spaces and lines
as a single one.
1. <p>
2. I am
3. going to provide
4. you a tutorial on HTML
5. and hope that it will
6. be very beneficial for you.
7. </p>
8. <p>
9. Look, I put here a lot
10.of spaces but I know, Browser will ignore it.
11. </p>
12.<p>
13. You cannot determine the display of HTML</p>
14.<p>because resized windows may create different result.
15. </p>
Output:
I am going to provide you a tutorial on HTML and hope that it will be very
beneficial for you.
Look, I put here a lot of spaces but I know, Browser will ignore it.
As you can see, all the extra lines and unnecessary spaces are removed by the browser.
Example:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. </head>
5. <body>
6. <h2> Use of line break with pragraph tag</h2>
7. <p><br>Papa and mama, and baby and Dot,
8. <br>Willie and me?the whole of the lot
9. <br>Of us all went over in Bimberlie's sleigh,
10.<br>To grandmama's house on Christmas day.
11. </p>
12.</body>
13. </html>
Output:
An HTML <hr> tag is used to apply a horizontal line between two statements or two
paragraphs. Following is the example which is showing use of <hr> tag with
paragraph.
Example:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. </head>
5. <body>
6. <h2> Example to show a horizontal line with paragraphs</h2>
7. <p> An HTML hr tag draw a horizontal line and separate two
paragraphs with that line.<hr> it will start a new paragraph.
8. </p>
9. </body>
10.</html>
Output:
HTML Anchor
The HTML anchor tag defines a hyperlink that links one page to another page. It can
create hyperlink to other web page as well as files, location, or any URL. The "href"
attribute is the most important attribute of the HTML a tag. and which links to
destination page or URL.
Example:
1. <!DOCTYPE html>
3. <head>
4. <title></title>
5. </head>
6. <body>
7. <p>Click on <a href="https://www.javatpoint.com/" target="_blank">
this- link </a>to go on home page of JavaTpoint.</p>
8. </body>
9. </html>
Output:
Note:
● The target attribute can only use with href attribute in anchor tag.
● If we will not use target attribute then link will open in same page.
purple.
An active link is underlined and red.
HTML Image
HTML img tag is used to display image on the web page. HTML img tag is an
empty tag that contains attributes only, closing tags are not used in HTML image
element.
1) src
2) alt
The alt attribute defines an alternate text for the image, if it can't be displayed. The
value of the alt attribute describe the image in words. The alt attribute is considered
good for SEO prospective.
3) width
It is an optional attribute which is used to specify the width to display the image. It is
not recommended now. You should apply CSS in place of width attribute.
4) height
It h3 the height of the image. The HTML height attribute also supports iframe, image
and object elements. It is not recommended now. You should apply CSS in place of
height attribute.
Output:
Note: Always try to insert the image with height and width, else it may flicker while displaying on
webpage.
We can use alt attribute with tag. It will display an alternative text in case if
image cannot be displayed on browser. Following is the example for alt
attribute:
Output:
How to get image from another directory/folder?
To insert an image in your web, that image must be present in your same folder
where you have put the HTML file. But if in some case image is available in some
other directory then you can access the image like this:
image"> In above statement we have put image in local disk E------>images folder
>animal.png.
Note: If src URL will be incorrect or misspell then it will not display your image on web page, so
try to put correct URL.
Example:
1. <a href="https://www.javatpoint.com/what-is-
robotics"><img src="robot.jpg" height="100" width="100"></a>
Output:
HTML Table
HTML table tag is used to display data in tabular form (row * column). There can be
many columns in a row.
We can create a table to display data in tabular form, using <table> element, with the
help of
<tr> ,<td>, and <th> elements.
In Each table, table row is defined by <tr> tag, table header is defined by <th>, and
table data is defined by <td> tags.
HTML tables are used to manage the layout of the page e.g. header section,
navigation bar, body content, footer section etc. But it is recommended to use div
tag over table to manage the layout of the page .
1. <table>
3. <tr><td>Sonoo</td><td>Jaiswal</td><td>60</td></tr>
5. <tr><td>Swati</td><td>Sironi</td><td>82</td></tr>
6. <tr><td>Chetna</td><td>Singh</td><td>72</td></tr>
7. </table>
Output:
HTML Lists
HTML Lists are used to specify lists of information. All lists may contain one or more
list elements. There are three different types of HTML lists:
Note: We can create a list inside another list, which will be termed as nested List.
1. <ol>
2. <li>Aries</li>
3. <li>Bingo</li>
4. <li>Leo</li>
5. <li>Oracle</li>
6. </ol>
Output:
1. Aries
2. Bingo
3. Leo
4. Oracle
Click here for full details of HTML ordered list. HTML Ordered List
1. <ul>
2. <li>Aries</li>
3. <li>Bingo</li>
4. <li>Leo</li>
5. <li>Oracle</li>
6. </ul>
Output:
● Aries
● Bingo
● Leo
● Oracle
The definition list is very appropriate when you want to present glossary, list of
terms or other name-value list.
1. <dl>
2. <dt>Aries</dt>
3. <dd>-One of the 12 horoscope sign.</dd>
4. <dt>Bingo</dt>
5. <dd>-One of my evening snacks</dd>
6. <dt>Leo</dt>
7. <dd>-It is also an one of the 12 horoscope sign.</dd>
8. <dt>Oracle</dt>
9. <dd>-It is a multinational technology corporation.</dd>
10.</dl>
Output:
Click here for full details of HTML description list. HTML Description List
Code:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Nested list</title>
5. </head>
6. <body>
7. <p>List of Indian States with thier capital</p>
8. <ol>
9. <li>Delhi
10.<ul>
11. <li>NewDelhi</li>
12.</ul>
13. </li>
14.<li>Haryana
15. <ul>
16.<li>Chandigarh</li>
17. </ul>
18.</li>
19. <li>Gujarat
20.<ul>
21. <li>Gandhinagar</li>
22.</ul>
23. </li>
24.<li>Rajasthan
25. <ul>
26.<li>Jaipur</li>
27. </ul>
28.</li>
29. <li>Maharashtra
30.<ul>
31. <li>Mumbai</li>
32.</ul>
33. </li>
34.<li>Uttarpradesh
35. <ul>
36.<li>Lucknow</li></ul>
37. </li>
38.</ol>
39. </body>
40.</html>
Output:
To represent different ordered lists, there are 5 types of attributes in <ol> tag.
Type Description
Type This is the default type. In this type, the list items are numbered with
"1" numbers.
Type In this type, the list items are numbered with upper case roman
"I" numbers.
Type In this type, the list items are numbered with lower case roman
"i" numbers.
Type In this type, the list items are numbered with upper case letters.
"A"
Type In this type, the list items are numbered with lower case letters.
"a"
ol> Output:
1. HTML
3. JavaScript
4. SQL
ol type="I"
Let's see the example to display list in roman number uppercase.
1. <ol type="I">
2. <li>HTML</li>
3. <li>Java</li>
5. <li>SQL</li>
6. </
ol> Output:
I. HTML
II. Java
III. JavaScript
IV. SQL
ol type="i"
Let's see the example to display list in roman number lowercase.
1. <ol type="i">
3. <li>Java</li>
5. <li>SQL</li>
6. </
ol> Output:
i. HTML
iii. JavaScript
iv. SQL
ol type="A"
Let's see the example to display list in alphabet uppercase.
1. <ol type="A">
2. <li>HTML</li>
4. <li>JavaScript</li>
5. <li>SQL</li>
6. </
ol> Output:
A. HTML
B. Java
C. JavaScript
D. SQL
ol type="a"
Let's see the example to display list in alphabet lowercase.
1. <ol type="a">
3. <li>Java</li>
5. <li>SQL</li>
6. </
ol> Output:
a. HTML
c. JavaScript
d. SQL
start attribute
The start attribute is used with ol tag to specify from where to start the list items.
<ol type="1" start="5"> : It will show numeric values starting with "5".
<ol type="A" start="5"> : It will show capital alphabets starting with "E".
<ol type="a" start="5"> : It will show lower case alphabets starting with "e".
<ol type="I" start="5"> : It will show Roman upper case value starting with "V".
<ol type="i" start="5"> : It will show Roman lower case value starting with "v".
2. <li>HTML</li>
4. <li>JavaScript</li>
5. <li>SQL</li>
6. </
ol> Output:
v. HTML
vi. Java
vii. JavaScript
viii. SQL
HTML Form
An HTML form is a section of a document which contains controls such as text fields,
password fields, checkboxes, radio buttons, submit button, menus etc.
An HTML form facilitates the user to enter data that is to be sent to the server for
processing such as name, email address, password, phone number, etc. .
For example: If a user want to purchase some items on internet, he/she must fill the
form such as shipping address and credit/debit card details so that item can be sent
to the given address.
Tag Description
Tag Description
Note: The <form> element does not itself create a form but it is container to contain all required
form elements, such as <input>, <label>, etc.
Syntax:
1. <form>
2. //Form elements
3. </form>
Output:
1. <form>
2. First Name: <input type="text" name="firstname"/> <br/>
3. Last Name: <input type="text" name="lastname"/> <br/>
4. </form>
Output:
Note: If you will omit 'name' attribute then the text filed input will not be submitted to server.
Example:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Form in HTML</title>
5. </head>
6. <body>
7. <form>
8. Enter your address:<br>
9. <textarea rows="2" cols="20"></textarea>
10.</form>
11. </body>
12.</html>
Output:
NOTE: It is good to use <label> tag with form, although it is optional but if you will use it, then
it will provide a focus when you tap or click on label tag. It is more worthy with touchscreens.
1. <form>
2. <label for="firstname">First Name: </label> <br/>
3. <input type="text" id="firstname" name="firstname"/> <br/>
4. <label for="lastname">Last Name: </label>
5. <input type="text" id="lastname" name="lastname"/> <br/>
6. </form>
Output:
1. <form>
2. <label for="password">Password: </label>
3. <input type="password" id="password" name="password"/> <br/>
4. </form>
Output:
HTML 5 Email Field Control
The email field in new in HTML 5. It validates the text for correct email address. You
must use @ and . in this field.
1. <form>
2. <label for="email">Email: </label>
3. <input type="email" id="email" name="email"/> <br/>
4. </form>
Note: If we will
not enter the correct email, it will display error like:
Radio Button Control
The radio button is used to select one option from multiple options. It is used for
selection of gender, quiz questions etc.
If you use one name for all the radio buttons, only one radio button can be selected
at a time. Using radio buttons for multiple options, you can only choose a single
option at a time.
1. <form>
2. <label for="gender">Gender: </label>
3. <input type="radio" id="gender" name="gender" value="male"/>Male
4. <input type="radio" id="gender" name="gender" value="female"/>Female <br/>
5. </form>
Checkbox Control
The checkbox control is used to check multiple options from given checkboxes.
1. <form>
2. Hobby:<br>
3. <input type="checkbox" id="cricket" name="cricket" value="cricket"/>
4. <label for="cricket">Cricket</label> <br>
5. <input type="checkbox" id="football" name="football" value="football"/>
6. <label for="football">Football</label> <br>
7. <input type="checkbox" id="hockey" name="hockey" value="hockey"/>
8. <label for="hockey">Hockey</label>
9. </form>
Note: These are similar to radio button except it can choose multiple options at a time and radio
button can select one button at a time, and its display.
Output:
Submit button control
HTML <input type="submit"> are used to add a submit button on web page. When
user clicks on submit button, then form get submit to the server.
Syntax:
1. <form>
2. <label for="name">Enter name</label><br>
3. <input type="text" id="name" name="name"><br>
4. <label for="pass">Enter Password</label><br>
5. <input type="Password" id="pass" name="pass"><br>
6. <input type="submit" value="submit">
7. </form>
Output:
HTML <fieldset> element:
The <fieldset> element in HTML is used to group the related information of a form.
This element is used with <legend> element which provide caption for the grouped
elements.
Example:
1. <form>
2. <fieldset>
3. <legend>User Information:</legend>
4. <label for="name">Enter name</label><br>
5. <input type="text" id="name" name="name"><br>
6. <label for="pass">Enter Password</label><br>
7. <input type="Password" id="pass" name="pass"><br>
8. <input type="submit" value="submit">
9. </fieldset>
10.lt;/form>
Output:
HTML Form Example
Following is the example for a simple form of registration.
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Form in HTML</title>
5. </head>
6. <body>
7. <h2>Registration form</h2>
8. <form>
9. <fieldset>
10.<legend>User personal information</legend>
11. <label>Enter your full name</label><br>
12.<input type="text" name="name"><br>
13. <label>Enter your email</label><br>
14.<input type="email" name="email"><br>
15. <label>Enter your password</label><br>
16.<input type="password" name="pass"><br>
17. <label>confirm your password</label><br>
18.<input type="password" name="pass"><br>
19. <br><label>Enter your gender</label><br>
20.<input type="radio" id="gender" name="gender" value="male"/>Male <br>
21. <input type="radio" id="gender" name="gender" value="female"/>Female <br/
>
22.<input type="radio" id="gender" name="gender" value="others"/>others <br/>
23. <br>Enter your Address:<br>
24.<textarea></textarea><br>
25. <input type="submit" value="sign-up">
26.</fieldset>
27. </form>
28.</body>
29. </html>
Output:
HTML Form Input Types
In HTML <input type=" "> is an important element of HTML form. The "type" attribute
of input element can be various types, which defines information field. Such as
<input type="text" name="name"> gives a text box.
datetime- Defines an input field for entering a date without time zone.
local
email Defines an input field for entering an email address.
month Defines a control with month and year, without time zone.
week Defines a field to enter the date with week-year, without time
zone.
search Defines a single line text field for entering a search string.
1.<input type="text">:
<input> element of type "text" are used to define a single-line input text
field. Example:
Enter last name
2.<input type="password">:
The <input> element of type "password" allow a user to enter the password
securely in a webpage. The entered text in password filed converted into "*" or ".",
so that it cannot be read by another user.
Example:
1. <form>
2. <label>Enter User name</label><br>
3. <input type="text" name="firstname"><br>
4. <label>Enter Password</label><br>
5. <input type="Password" name="password"><br>
6. <br><input type="submit" value="submit">
7. </form>
Output:
The "password"field defines a sinlge line input password field to enter the
password securely.
3.<input type="submit">:
The <input> element of type "submit" defines a submit button to submit the form
to the server when the "click" event occurs.
Example:
1. <form action="https://www.javatpoint.com/html-tutorial">
2. <label>Enter User name</label><br>
3. <input type="text" name="firstname"><br>
4. <label>Enter Password</label><br>
5. <input type="Password" name="password"><br>
6. <br><input type="submit" value="submit">
7. </form>
Output:
After clicking on submit button, this will submit the form to server and will redirect the
page to action value.We will learn about "action" attribute in later chapters
4.<input type="reset">:
The <input> type "reset" is also defined as a button but when the user performs a click
event, it by default reset the all inputted values.
Example:
1. <form>
2. <label>User id: </label>
3. <input type="text" name="user-id" value="user">
4. <label>Password: </label>
5. <input type="password" name="pass" value="pass"><br><br>
6. <input type="submit" value="login">
7. <input type="reset" value="Reset">
8. </form>
Output:
Try to change the input values of user id and password, then when you click on reset,
it will reset input fields with default values.
5.<input type="radio">:
The <input> type "radio" defines the radio buttons, which allow choosing an option
between a set of related options. At a time only one radio button option can be
selected at a time.
Example:
1. <form>
2. <p>Kindly Select your favorite color</p>
3. <input type="radio" name="color" value="red"> Red <br>
4. <input type="radio" name="color" value="blue"> blue <br>
5. <input type="radio" name="color" value="green">green <br>
6. <input type="radio" name="color" value="pink">pink <br>
7. <input type="submit" value="submit">
8. </form>
Output:
Red
blue
gree
pink
6.<input type="checkbox">:
The <input> type "checkbox" are displayed as square boxes which can be
checked or unchecked to select the choices from the given options.
Note: The "radio" buttons are similar to checkboxes, but there is an important difference between
both types: radio buttons allow the user to select only one option at a time, whereas checkbox
allows a user to select zero to multiple options at a time.
Example:
1. <form>
2. <label>Enter your Name:</label>
3. <input type="text" name="name">
4. <p>Kindly Select your favourite sports</p>
5. <input type="checkbox" name="sport1" value="cricket">Cricket<br>
6. <input type="checkbox" name="sport2" value="tennis">Tennis<br>
7. <input type="checkbox" name="sport3" value="football">Football<br>
8. <input type="checkbox" name="sport4" value="baseball">Baseball<br>
9. <input type="checkbox" name="sport5" value="badminton">Badminton<br><br>
Output:
Cricket
Tennis
Football
Baseball
Badminton
7.<input type="button">:
The <input> type "button" defines a simple push button, which can be programmed to
control a functionally on any event such as, click event.
1. <form>
2. <input type="button" value="Clcik me " onclick="alert('you are learning HTML')">
3. </form>
Output:
Note: In the above example we have used the "alert" of JS, which you will learn in our JS tutorial.
It is used to show a pop window.
8.<input type="file">:
The <input> element with type "file" is used to select one or more files from user device
storage. Once you select the file, and after submission, this file can be uploaded to the
server with the help of JS code and file API.
Example:
1. <form>
2. <label>Select file to upload:</label>
3. <input type="file" name="newfile">
4. <input type="submit" value="submit">
5. </form>
Output:
9.<input type="image">:
The <input> type "image" is used to represent a submit button in the form of
image. Example:
1. <!DOCTYPE html>
2. <html>
3. <body>
4. <h2>Input "image" type.</h2>
5. <p>We can create an image as submit button</p>
6. <form>
7. <label>User id:</label><br>
8. <input type="text" name="name"><br><br>
9. <input type="image" alt="Submit" src="login.png" width="100px">
10.</form>
11.
12.</body>
13. </html>
The <input> type "color" is used to define an input field which contains a colour. It
allows a user to specify the colour by the visual colour interface on a browser.
Note: The "color" type only supports color value in hexadecimal format, and the default value is
#000000 (black).
Example:
1. <form>
2. Pick your Favorite color: <br><br>
3. <input type="color" name="upclick" value="#a52a2a"> Upclick<br><br>
4. <input type="color" name="downclick" value="#f5f5dc"> Downclick
5. </form>
Output:
Up-click
Down-click
Note:The default value of "color" type is #000000 (black). It only supports color value
in hexadecimal format.
2.<input type="date">:
The <input> element of type "date" generates an input field, which allows a user to
input the date in a given format. A user can enter the date by text field or by date picker
interface.
Example:
1. <form>
2. Select Start and End Date: <br><br>
3. <input type="date" name="Startdate"> Start date:<br><br>
4. <input type="date" name="Enddate"> End date:<br><br>
5. <input type="submit">
6. </form>
Output:
3.<input type="datetime-local">:
The <input> element of type "datetime-local" creates input filed which allow a user to
select the date as well as local time in the hour and minute without time zone
information.
Example:
1. <form>
2. <label>
3. Select the meeting schedule: <br><br>
4. Select date & time: <input type="datetime-local" name="meetingdate"> <br><br>
5. </label>
6. <input type="submit">
7. </form>
Output:
time:
4.<input type="email">:
The <input> type "email" creates an input filed which allow a user to enter the e-mail
address with pattern validation. The multiple attributes allow a user to enter more than
one email address.
Example:
1. <form>
2. <label><b>Enter your Email-address</b></label>
3. <input type="email" name="email" required>
4. <input type="submit">
5. <p><strong>Note:</strong>User can also enter multiple email
addresses separat ing by comma or whitespace as following: </p>
6. <label><b>Enter multiple Email-addresses</b></label>
7. <input type="email" name="email" multiple>
8. <input type="submit">
9. </form>
Output:
The <input> type "month" creates an input field which allows a user to easily enter
month and year in the format of "MM, YYYY" where MM defines month value, and
YYYY defines the year value. New
Example:
1. <form>
2. <label>Enter your Birth Month-year: </label>
3. <input type="month" name="newMonth">
4. <input type="submit">
5. </form>
Output:
The action attribute value defines the web page where information proceed. It can
be .php,
.jsp, .asp, etc. or any URL where you want to process your form.
Note: If action attribute value is blank then form will be processed to the same page.
Example:
Output:
Demo of action attribute of form element
User Name:
User Password
It will redirect to a new page "action.html" when you click on submit button
The method attribute defines the HTTP method which browser used to submit the
form. The possible values of method attribute can be:
● post: We can use the post value of method attribute when we want to process the
sensitive data as it does not display the submitted data in URL.
Example:
● get: The get value of method attribute is default value while submitting the form. But
this is not secure as it displays data in URL after submitting the form.
Example:
When submitting the data, it will display the entered data in the form of:
1. file:///D:/HTML/action.html?name=JavaTPoint&pass=123
● _self: If we use _self as an attribute value, then the response will display in current page only.
Example:
● _blank: If we use _blank as an attribute it will load the response in a new page.
Example:
Example:
autocomplete="on"> Example:
1. <form action="action.html" method="get" autocomplete="off">
Note: it can be used with <form> element and <input> element both.
Example:
● multipart/form-data: It does not encode any character. It is used when our form
contains file-upload controls.
Example:
● text/plain (HTML5): In this encoding type only space are encoded into + symbol and no
any other special character encoded.
Example:
1. <form action="action.html" method="post" enctype="text/plain" >
HTML novalidate attribute HTML5
The novalidate attribute is newly added Boolean attribute of HTML5. If we
apply this attribute in form then it does not perform any type of validation and
submit the form.
Example:
Output:
Enter age:
Enter email:
Note: One should not omit the name attribute as when we submit the form the HTTP request
includes both name-value pair and if name is not available it will not process that input field.
Example:
Output:
Fill the form
Enter name:
Enter age:
Enter email:
Note: If you will not use name attribute in any input field, then that input field will not
be submitted, when submit the form.
Click on submit and see the URL where email is not included in HTTP request as we
have not used name attribute in the email input field
The HTML value attribute defines the initial value or default value of an input
field. Example:
1. <form>
2. <label>Enter your Name</label><br>
3. <input type="text" name="uname" value="Enter Name"><br><br>
4. <label>Enter your Email-address</label><br>
5. <input type="text" name="uname" value="Enter email"><br><br>
6. <label>Enter your password</label><br>
7. <input type="password" name="pass" value=""><br><br>
8. <input type="submit" value="login">
9. </form>
Output:
Enter email
Enter your Email-address
Note: In password input filed the value attribute will always unclear
HTML required attribute HTML5
HTML required is a Boolean attribute which specifies that user must fill that filed
before submitting the form.
Example:
1. <form>
2. <label>Enter your Email-address</label><br>
3. <input type="text" name="uname" required><br><br>
4. <label>Enter your password</label><br>
5. <input type="password" name="pass"><br><br>
6. <input type="submit" value="login">
7. </form>
Output:
If you will try to submit the form without completing email field then it will give an
error pop up.
Example:
1. <form>
2. <label>Enter your Email-address</label><br>
3. <input type="text" name="uname" autofocus><br><br>
4. <label>Enter your password</label><br>
5. <input type="password" name="pass"><br><br>
6. <input type="submit" value="login">
7. </form>
HTML placeholder attribute HTML5
The placeholder attribute specifies a text within an input field which informs the user
about the expected input of that filed.
The placeholder attribute can be used with text, password, email, and URL
values. When the user enters the value, the placeholder will be automatically
removed.
Example:
1. <form>
2. <label>Enter your name</label><br>
3. <input type="text" name="uname" placeholder="Your name"><br><br>
4. <label>Enter your Email address</label><br>
5. <input type="email" name="email"
placeholder="[email protected]"><br>< br>
6. <label>Enter your password</label><br>
7. <input type="password" name="pass" placeholder="your password"><br><br>
8. <input type="submit" value="login">
9. </form>
Output:
Registration form
Enter your name
E
nter your password
The disabled input filed does not receive click events, and these input value will not
be sent to the server when submitting the form.
Example:
Registration form
USER
Enter User name
E
nter your password
The size attribute controls the size of the input field in typed
characters. Example:
1. <label>Account holder name</label><br>
2. <input type="text" name="uname" size="40" required><br><br>
3. <label>Account number</label><br>
4. <input type="text" name="an" size="30" required><br><br>
5. <label>CVV</label><br>
6. <input type="text" name="cvv" size="1" required><br><br>
Output:
Account number
C
VV
Output:
User Name:
User password:
The email field is outside the form but still it will remain part of the form
User email:
CSS is used to apply the style in the web page which is made up of HTML elements.
It describes the look of the webpage.
CSS provides various style properties such as background color, padding, margin,
border- color, and many more, to style a webpage.
Each property in CSS has a name-value pair, and each property is separated by a
semicolon (;).
Note: In this chapter, we have given a small overview of CSS. You will learn everything in depth
about CSS in our CSS tutorial.
Example:
In the above example, we have used a style attribute to provide some styling format
to our code.
Output:
Welcome to javaTpoint
● Inline CSS: Define CSS properties using style attribute in the HTML elements.
● Internal or Embedded CSS: Define CSS using <style> tag in <head> section.
● External CSS: Define all CSS property in a separate .css file, and then include the file with
HTML file using tag in section.
Inline CSS:
Inline CSS is used to apply CSS in a single element. It can apply style uniquely in
each element.
To apply inline CSS, you need to use style attribute within HTML element. We can
use as many properties as we want, but each property should be separated by a
semicolon (;).
Example:
Output:
Internal CSS:
An Internal stylesheets contains the CSS properties for a webpage in <head>
section of HTML document. To use Internal CSS, we can use class and id
attributes.
page. Example:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. /*Internal CSS using element name*/
6. body{background-color:lavender;
7. text-align: center;}
8. h2{font-style: italic;
9. font-size: 30px;
10.color: #f08080;}
11. p{font-size: 20px;}
12./*Internal CSS using class name*/
13. .blue{color: blue;}
14..red{color: red;}
15. .green{color: green;}
16.</style>
17. </head>
18.<body>
19. <h2>Learning HTML with internal CSS</h2>
20.<p class="blue">This is a blue color paragraph</p>
21. <p class="red">This is a red color paragraph</p>
22.<p class="green">This is a green color paragraph</p>
23. </body>
24.</html>
Note: In the above example, we have used a class attribute which you will learn in the next chapter.
External CSS:
An external CSS contains a separate CSS file which only contains style code using
the class name, id name, tag name, etc. We can use this CSS file in any HTML file
by including it in HTML file using <link> tag.
If we have multiple HTML pages for an application and which use similar CSS, then
we can use external CSS.
Example:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <link rel="stylesheet" type="text/css" href="style.css">
5. </head>
6. <body>
7. <h2>Learning HTML with External CSS</h2>
8. <p class="blue">This is a blue color paragraph</p>
9. <p class="red">This is a red color paragraph</p>
10.<p class="green">This is a green color paragraph</p>
11. </body>
12.</html>
CSS file:
body{
background-
color:lavender; text-align:
center;
}
h2{
font-style:
italic; size:
30px; color:
#f08080;
}
p{
font-size: 20px;
}
.blue{ colo
r: blue;
}
.red{ colo
r: red;
}
.green{ colo
r: green;
}
padding padding: 20px; It defines the space between content and the
border.
margin margin: 30px; margin- It creates space around an element.
left:
font-family font-family: cursive; Font-family defines a font for a particular
element.
Font-size font-size: 50px; Font-size defines a font size for a particular
element.
text-align text-align: left; It is used to align the text in a selected position.
HTML Classes
Class Attribute in HTML
The HTML class attribute is used to specify a single or multiple class names for an
HTML element. The class name can be used by CSS and JavaScript to do some tasks
for HTML elements. You can use this class in CSS with a specific class, write a period
(.) character, followed by the name of the class for selecting elements.
A class attribute can be defined within <style> tag or in separate file using the (.)
character. In an HTML document, we can use the same class attribute name with
different elements.
Example:
1. <head>
2. <style>
3. .headings{
4. color: lightgreen;
5. font-family: cursive;
6. background-color: black; }
7. </style>
8. </head>
We have define style for a class name "headings", and we can use this class name
with any of HTML element in which we want to provide such styling. We just need to
follow the following syntax to use it.
</tag> Example 1:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. .headings{
6. color: lightgreen;
7. font-family: cursive;
8. background-color: black; }
9. </style>
10.</head>
11. <body>
12.<h1 class="headings">This is first heading</h1>
13. <h2 class="headings">This is Second heading</h2>
14.<h3 class="headings">This is third heading</h3>
15. <h4 class="headings">This is fourth heading</h4>
16.</body>
17. </html>
Let's use a class name "Fruit" with CSS to style all elements.
1. <style>
2. .fruit {
3. background-color: orange;
4. color: white;
5. padding: 10px;
6. }
7. </style>
8.
9. <h2 class="fruit">Mango</h2>
10.<p>Mango is king of all fruits.</p>
11.
12.<h2 class="fruit">Orange</h2>
13. <p>Oranges are full of Vitamin C.</p>
14.
15. <h2 class="fruit">Apple</h2>
16.<p>An apple a day, keeps the Doctor away.</p>
Here you can see that we have used the class name "fruit" with (.) to use all its
elements.
Note: You can use class attribute on any HTML element. The class name is case-sensitive.
Example:
Let's hide all the elements with class name "fruit" when the user click on the button.
1. <!DOCTYPE html>
2. <html>
3. <body>
4.
5. <h2>Class Attribute with JavaScript</h2>
6. <p>Click the button, to hide all elements with the class name "fruit", with JavaScript:</p>
7.
8. <button onclick="myFunction()">Hide elements</button>
9.
10.
11. <h2 class="fruit">Mango</h2>
12.<p>Mango is king of all fruits.</p>
13.
14.<h2 class="fruit">Orange</h2>
15. <p>Oranges are full of Vitamin C.</p>
16.
17. <h2 class="fruit">Apple</h2>
18.<p>An apple a day, keeps the Doctor away.</p>
19.
20.<script>
21. function myFunction() {
22.var x = document.getElementsByClassName("fruit");
23. for (var i = 0; i < x.length; i++) {
24.x[i].style.display = "none";
25. }
26. }
27. </script>
28.
29. </body>
30. </html>
Note: You will learn more about JavaScript in our JavaScript tutorial.
Multiple Classes
You can use multiple class names (more than one) with HTML elements. These class
names must be separated by a space.
Example:
Let's style elements with class name "fruit" and also with a class name "center".
1. <!DOCTYPE html>
2. <html>
3. <style>
4. .fruit {
5. background-color: orange;
6. color: white;
7. padding: 10px;
8. }
9.
10..center {
11. text-align: center;
12. }
13. </style>
14.<body>
15.
16.<h2>Multiple Classes</h2>
17. <p>All three elements have the class name "fruit". In addition, Mango also
have the cl ass name "center", which center-aligns the text.</p>
18.
19. <h2 class="fruit center">Mango</h2>
20.<h2 class="fruit">Orange</h2>
21. <h2 class="fruit">Apple</h2>
22.
23. </body>
24.</html>
You can see that the first element <h2> belongs to both the "fruit" class and the
"center" class.
Example:
1. <!DOCTYPE html>
2. <html>
3. <style>
4. .fruit {
5. background-color: orange;
6. color: white;
7. padding: 10px;
8. }
9. </style>
10.<body>
11. <h2>Same Class with Different Tag</h2>
12.<h2 class="fruit">Mango</h2>
13. <p class="fruit">Mango is the king of all fruits.</p>
14.</body>
15. </html>
1. <tag id="value">
Example 1: The following example describes how to use the id attribute in CSS
document:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>
5. Example of Id attribute in CSS
6. </title>
7. <style>
8. #Cars {
9. padding: 40px;
10.background-color: lightblue;
11. color: black;
12.text-align: center;
13. }
14.
15. #Bikes
16.{
17. padding: 50px;
18.background-color: lightGreen;
19. text-align: center;
20.}
21. </style>
22.</head>
23. <body>
24.<p> Use CSS to style an element with the id: </p>
25. <h1 id="Cars"> Cars </h1>
26.<h1 id="Bikes"> Bikes </h1>
27. </body>
28.</html>
Output:
Example 2: The following example describes how to use the ID attribute in JavaScript.
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title> Date Attribute </title>
5. <script>
6. function viewdate() {
7. var x = document.getElementById("dob").value;
8. document.getElementById("demo").innerHTML = x;
9. </script>
10.</head>
11. <body>
12.Employee Name: <input type="text" placeholder="Your Good name"/>
13. <br>
14.<br>
15. Date of Joining:
16.<input type="date" id="dob">
17. <br>
18.<button onclick="viewdate()"> Submit
19. </button>
20.<br>
21. <h2 id="demo"> </h2>
22.</body>
23. </html>
Output:
HTML
List Box
The list box is a graphical control element in the HTML document that allows a user
to select one or more options from the list of options.
Syntax
To create a list box, use the HTML element<select> which contains two attributes
Name and Size. The Name attribute is used to define the name for calling the list
box, and size attribute is used to specify the numerical value that shows the how
many options it contains.
Examples:
Example 1: Consider the below example that creates a simple list box.
1. <!DOCTYPE html>
2. <html>
3. <title>
4. Example of List Box
5. </title>
6. <body>
7. Customer Name: <input type="text" Placeholder="Enter the Customer Name"/>
8. <br>
9. <br>
10.<select name="Cars" size="5">
11. <option value="Merceders"> Merceders </option>
12.<option value="BMW"> BMW </option>
13. <option value="Jaguar"> Jaguar </option>
14.<option value="Lamborghini"> Lamborghini </option>
15. <option value="Ferrari"> Ferrari </option>
16.<option value="Ford"> Ford </option>
17. </select>
18.</body>
19. </html>
Output:
Example 2: Below example uses the multipleattribute for selecting the multiple options
in a list. We can select multiple options from list box by holding the ctrl key.
1. <!DOCTYPE html>
2. <html>
3. <title>
4. Example of List Box with multiple attribute
5. </title>
6. <body>
7. Customer Name: <input type="text" Placeholder="Enter the Customer Name"/>
8. <br>
9. <br>
10.<select name="Cars" size="5" multiple="multiple">
11. <option value="Merceders"> Merceders </option>
12.<option value="BMW"> BMW </option>
13. <option value="Jaguar"> Jaguar </option>
14.<option value="Lamborghini"> Lamborghini </option>
15. <option value="Ferrari"> Ferrari </option>
16.<option value="Ford"> Ford </option>
17. </select>
18.</body>
19. </html>
Output:
This guide has been prepared by me to help myself with the list of frequently used
basic commands in UNIX/LINUX to be on my finger tip. Thought of sharing it with
the others, in case, it might turn out helpful to other readers as well. This is Unix/Linux
basic commands - 1,for 2nd part follow the link given at the end of this article.
Web servers Shell
Unix/Linux file commands guide
This article will serve as a 5 minute guide or tutorial to learn/revisit basic unix or
linux commands frequently used while working with files. Unix/Linux command is
given along with their usage or description.
This section will serve as a 5 minute guide or tutorial to learn/revisit basic unix or
linux commands frequently used while working with process management. Unix/
Linux command is given along with their usage or description.
This section will serve as a 5 minute guide or tutorial to learn/revisit basic unix or linux
commands frequently used while working with system. Unix/Linux command is given
along with their usage or description.
● date use this command in unix/linux to show current date and time.
● w use this command in unix/linux to see who all are currently logged in
to the system.
● whoami use this command in unix/linux to see who you are currently
logged in as in the system.
● finger user use this command in unix/linux to display information about user.
● free use this command in unix/linux to show memory and swap usage.
● du use this command in unix/linux to see the directory space usage.
● which app use this command in unix/linux to show which application will
be run by default.
Version control
Git GitHub Pages
Create a New Repository
Start by signing in to GitHub. GitHub pages need a special name and setup to work,
so we start by creating a new repository:
Example
git remote addgh-page https://github.com/w3schools-test/w3schools-test.github.io.git
Make sure you are on the masterbranch, then push the masterbranch to the new remote:
Example
git push gh-page master
Enumerating objects: 33,
done.
Counting objects: 100% (33/33), done.
Delta compression using up to 16
threads Compressing objects: 100%
(33/33), done.
Writing objects: 100% (33/33), 94.79 KiB | 15.80 MiB/s, done.
Total 33 (delta 18), reused 0 (delta 0), pack-reused
0 remote: Resolving deltas: 100% (18/18), done.
To https://github.com/w3schools-test/w3schools-test.github.io.git
* [new branch] master -> master
Note: If this is the first time you are connecting to GitHub, you will get some
kind of notification to authenticate this connection.
Check that the new repository has received all the files:
Check Out Your Own GitHub Page
That looks good, now click the Settings menu and navigate to the Pages tab:
The GitHub page is created, and you can click the URL to view the result!
Git Tutorial
Learning by Examples
In this tutorial, we will show you Git commands like this:
Example
git --version
git version 2.30.2.windows.1
For new users, using the terminal view can seem a bit complicated. Don't worry!
We will keep it really simple, and learning this way gives you a good grasp of how
Git works.
Example
git version 2.30.2.windows.1
In general, lines with $ in front of it is input. These are the commands you can copy
and run in your terminal.
In this tutorial you will understand what Git is and how to use it on the remote
repository platforms, like GitHub.
You can choose, and change, which platform to focus on by clicking in the menu on
the right:
Git Exercises
git
What is Git?
Git is a popular version control system. It was created by Linus Torvalds in 2005, and
has been maintained by Junio Hamano since then.
It is used for:
Why Git?
What is GitHub?
Git Install
You can download Git for free from the following website: https://www.git-scm.com/
For Windows, you can use Git bash, which comes included in Git for Windows. For
Mac and Linux you can use the built-in terminal.
Example
git --version
git version 2.30.2.windows.1
Configure Git
Now let Git know who you are. This is important for version control systems, as each
Git commit uses this information:
Example
git config --global user.name "w3schools-test"
git config --global user.email"[email protected]"
Change the user name and e-mail address to your own. You will probably also want
to use this when registering to GitHub later on.
Note: Use global to set the username and e-mail for every repository on your
computer. If you want to set the username/e-mail for just the current repo, you
Example
mkdirmyproject
cdmyproject
Now that we are in the correct directory. We can start by initializing Git!
Note: If you already have a folder/directory you would like to use for Git:
Navigate to it in command line, or open it in your file explorer, right-click and select
"Git Bash here"
Initialize Git
Once you have navigated to the correct folder, you can initialize Git on that folder:
Example
gitinit
Initialized empty Git repository in /Users/user/myproject/.git/
Note: Git now knows that it should watch the folder you initiated
it on. Git creates a hidden folder to keep track of changes.
Git Adding New Files
You just created your first local Git repo. But it is empty.
So let's add some files, or create a new file using your favourite text editor. Then
save or move it to the folder you just created.
If you want to learn how to create a new file using a text editor, you can visit our
HTML tutorial:
HTML Editors
For this example, I am going to use a simple HTML file like
this: Example
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
</body>
</html>
Let's go back to the terminal and list the files in our current working directory:
Example
ls
index.html
ls will list the files in the directory. We can see that index.html is there.
Then we check the Git status and see if it is a part of our repo:
Example
git status
On branch
master No
commits yet
Untracked files:
(use "git add ..." to include in what will be committed)
index.html
nothing added to commit but untracked files present (use "git add" to track)
Now Git is aware of the file, but has not added it to our
states:
● Tracked - files that Git knows about and are added to the repository
● Untracked - files that are in your working directory, but not added to the repository
When you first add files to an empty repository, they are all untracked. To get Git to
track them, you need to stage them, or add them to the staging environment.
As you are working, you may be adding, editing and removing files. But whenever
you hit a milestone or finish a part of the work, you should add the files to a Staging
Environment.
Staged files are files that are ready to be committed to the repository you are working
on. You will learn more about commit shortly.
For now, we are done working with index.html. So we can add it to the Staging
Environment:
Example
gitadd index.html
Example
git status
On branch
master No
commits yet
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: index.html
A README.md file that describes the repository (recommended for all repositories):
Example
# hello-world
Hello World repository for Git tutorial
This is an example repository for the Git tutoial on https://
Example
body {
background-color: lightblue;
}
h1 {
color: navy;
margin-left: 20px;
}
Example
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<linkrel="stylesheet"href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
</body>
</html>
Now add all files in the current directory to the Staging Environment:
Example
gitadd --all
Using --all instead of individual filenames will stage all changes (new, modified, and
deleted) files.
Example
git status
On branch
master No
commits yet
Changes to be committed:
(use "git rm --cached ..." to
unstage) new file: README.md
new file: bluestyle.css
new file: index.html
Now all 3 files are added to the Staging Environment, and we are ready to do our first
commit.
Git Commit
Since we have finished our work, we are ready move from stage to commit for our
repo. Adding commits keep track of our progress and changes as we work. Git
considers each
commit change point or "save point". It is a point in the project you can go back to if you
find
a bug, or want to make a change.
By adding clear messages to each commit, it is easy for yourself (and others) to see
what has changed and when.
Example
git commit -m "First release of Hello World!"
[master (root-commit) 221ec6e] First release of Hello
World! 3 files changed, 26 insertions(+)
create mode 100644 README.md
create mode 100644 bluestyle.css
create mode 100644 index.html
The commit command performs a commit, and the -m "message" adds a message.
The Staging Environment has been committed to our repo, with the
message: "First release of Hello World!"
Example
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<linkrel="stylesheet"href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
<p>A new line in our file!</p>
</body>
</html>
And check the status of our repository. But this time, we will use the --short option to
see the changes in a more compact way:
Example
git status --
short M
index.html
Git Help
If you are having trouble remembering commands or options for commands, you can
use Git
help.
There are a couple of different ways you can use the help command in command line:
● git command -help- See all the available options for the specific command
● git help --all- See all possible commands
Example
git commit -help
usage: git commit [] [--] ...
Note: You can also use --help instead of -help to open the relevant Git manual page
commands Example
$ githelp --all
See 'git help ' to read about a specific subcommand
External
commands
askyesno
credential-helper-selector
flow
lfs
Note: If you find yourself stuck in the list view, SHIFT + G to jump the end of the list, then
q
to exit the view.
In addition to being a host for Git content, GitHub has a very good code
editor. Let's try to edit the README.md file in GitHub. Just click the edit
button:
Add some changes to the code, and then commit the changes. For now, we will
"Commit directly to the master branch".
Any time you start working on a project, you should get the most recent changes to
your local copy.
● fetch
● merge
Let's take a closer look into how fetch, merge, and pull works.
Git Fetch
fetch gets all the change history of a tracked branch/repo.
So, on your local Git, fetch updates to see what has changed on GitHub:
Example
git fetch origin
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5),
done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 733 bytes | 3.00 KiB/s, done.
From https://github.com/w3schools-test/hello-
world e0b6038..d29d69f master -> origin/
master
Now that we have the recent changes, we can check our status:
Example
git status
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-
forwarded. (use "git pull" to update your local branch)
We are behind the origin/master by 1 commit. That should be the updated README.md, but
lets double check by viewing the log:
Example
git log origin/master
commit d29d69ffe2ee9e6df6fa0d313bb0592b50f3b853 (origin/master)
Author: w3schools-test <[email protected]>
Date: Fri Mar 26 14:59:14 2021 +0100
...
...
That looks as expected, but we can also verify by showing the differences between our
local
master and origin/master:
Example
gitdiff origin/master
diff --git a/README.md b/README.md
index 23a0122..a980c39 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,4 @@
Hello World repository for Git tutorial
This is an example repository for the Git tutoial on https://www.w3schools.com
Git Merge
merge combines the current branch, with a specified branch.
We have confirmed that the updates are as expected, and we can merge our current
branch (master) with origin/master:
Example
git merge origin/master
Updating
e0b6038..d29d69f Fast-
forward
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Check our status again to confirm we are up to date:
Example
git status
On branch master
Your branch is up to date with 'origin/master'.
Git Pull
But what if you just want to update your local repository, without going through all
those steps?
pull is a
combination of fetch and merge. It is used to pull all changes from a remote
repository into the branch you are working on.
Example
git pull origin
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5),
done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 794 bytes | 1024 bytes/s,
done.
From https://github.com/w3schools-test/hello-
world a7cdd4b..ab6b4ed master -> origin/
master
Updating
a7cdd4b..ab6b4ed Fast-
forward
README.md | 2 ++
1 file changed, 2 insertions(+)
That is how you keep your local Git up to date from a remote repository. In the next
chapter, we will look closer at how push works on GitHub.
GitHub. Example
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<div><imgsrc="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max- width:
640px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>This line is here to show how merging works.</p>
<div><imgsrc="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>
</body>
</html>
Example
git commit -a -m "Updated index.html. Resized
image" [master e7de78f] Updated index.html.
Resized image 1 file changed, 1 insertion(+), 1
deletion(-)
Example
git status
On branch master
Your branch is ahead of 'origin/master' by 1
commit. (use "git push" to publish your local
commits)
There you can create a new Branch. Type in a descriptive name, and click Create
branch:
The branch should now be created and active. You can confirm which branch you are
working on by looking at the branch button. See that it now says "html-skeleton"
instead of "main"?
Start working on an existing file in this branch. Click the "index.html" file and start editing:
After you have finished editing the file, you can click the "Preview changes" tab to see
the changes you made highlighted:
If you are happy with the change, add a comment that explains what you did,
and click Commit changes.
Git Pull Branch from GitHub
Pulling a Branch from GitHub
Now continue working on our new branch in our local Git.
Letspull from our GitHub repository again so that our code is up-to-date:
Example
gitpull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5),
done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 851 bytes | 9.00 KiB/s,
done. From https://github.com/w3schools-test/hello-world
* [new branch] html-skeleton -> origin/html-
skeleton Already up to date.
Now our main branch is up todate. And we can see that there is a new branch available
on GitHub.
Example
git status
On branch master
Your branch is up to date with 'origin/master'.
And confirm which branches we have, and where we are working at the moment:
Example
git branch
* master
So, we do not have the new branch on our local Git. But we know it is available on
GitHub. So we can use the -a option to see all local and remote branches:
Example
git branch -a
* master
remotes/origin/html-
skeleton remotes/origin/
master
We see that the branch html-skeleton is available remotely, but not on our local git.
Lets check it out:
Example
git checkout html-skeleton
Switched to a new branch 'html-skeleton'
Branch 'html-skeleton' set up to track remote branch 'html-skeleton' from 'origin'.
Example
gitpull
Already up to date.
Example
git branch
* html-skeleton
master
Now, open your favourite editor and confirm that the changes from the GitHub
branch carried over.
no changes added to commit (use "git add" and/or "git commit -a")
We see that README.md is modified but not added to the Staging Environment:
Example
gitadd README.md
Example
git status
On branch update-readme
Changes to be committed:
(use "git restore --staged ..." to unstage)
modified: README.md
We are happy with our changes. So we will commit them to the branch:
Example
git commit -m "Updated readme for GitHub Branches"
[update-readme 836e5bf] Updated readme for GitHub
Branches 1 file changed, 1 insertion(+)
Now push the branch from our local Git repository, to GitHub, where everyone can see the
changes:
Example
git push origin update-readme
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 16
threads Compressing objects: 100%
(3/3), done.
Writing objects: 100% (3/3), 366 bytes | 366.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local
objects. remote:
remote: Create a pull request for 'update-readme' on GitHub by visiting:
remote: https://github.com/w3schools-test/hello-world/pull/new/update-
readme remote:
To https://github.com/w3schools-test/hello-world.git
* [new branch] update-readme -> update-readme
If you click the "Compare & pull request", you can go through the changes made
and new files added:
Note: This comparison shows both the changes from update-readme and html-skeleton
because we created the new branch FROM html-skeleton.
If the changes look good, you can go forward, creating a pull request:
A pull request is how you propose changes. You can ask some to review your changes
or pull your contribution and merge it into their branch.
Since this is your own repository, you can merge your pull request yourself:
The pull request will record the changes, which means you can go through them
later to figure out the changes made.
An after you confirm that the changes from the previous branch were included, delete
that as well:
CSS Tutorial
CSS tutorial or CSS 3 tutorial provides basic and advanced concepts of CSS
technology. Our CSS tutorial is developed for beginners and professionals. The
major points of CSS are given below:
1. <!DOCTYPE>
3. <head>
5. h1{
7. background-color:red;
9. }
11. color:blue;
13. </style>
14. </head>
15. <body>
16. <h1>Write Your First CSS Example</h1>
18. </body>
19. </
html> Test it
Now
Output:
What is CSS
CSS stands for Cascading Style Sheets. It is a style sheet language which is used
to describe the look and formatting of a document written in markup language. It
provides an additional feature to HTML. It is generally used with HTML to change
the style of web pages and user interfaces. It can also be used with any kind of XML
documents including plain XML, SVG and XUL.
CSS is used along with HTML and JavaScript in most websites to create user
interfaces for web applications and user interfaces for many mobile applications.
CSS Syntax
A CSS rule set contains a selector and a declaration block.
Selector: Selector indicates the HTML element you want to style. It could be any tag
like
<h1>, <title> etc.
Declaration Block: The declaration block can contain one or more declarations
separated by a semicolon. For the above example, there are two declarations:
1. color: yellow;
2. font-size: 11 px;
Property: A Property is a type of attribute of HTML element. It could be color, border etc.
Value: Values are assigned to CSS properties. In the above example, value "yellow" is
assigned to color property.
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. p{
6. text-align: center;
7. color: blue;
8. }
9. </style>
10.</head>
11. <body>
12.<p>This style will be applied on every paragraph.</p>
13. <p id="para1">Me too!</p>
14.<p>And me!</p>
15. </body>
16.</html>
Test it Now
Output:
Me too!
And me!
2) CSS Id Selector
The id selector selects the id attribute of an HTML element to select a specific
element. An id is always unique within the page so it is chosen to select a single,
unique element.
It is written with the hash character (#), followed by the id of the element.
Let?s take an example with the id "para1".
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. #para1 {
6. text-align: center;
7. color: blue;
8. }
9. </style>
10.</head>
11. <body>
12.<p id="para1">Hello Javatpoint.com</p>
13. <p>This paragraph will not be affected.</p>
14.</body>
15. </html>
Test it Now
Output:
Hello Javatpoint.com
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. .center {
6. text-align: center;
7. color: blue;
8. }
9. </style>
10.</head>
11. <body>
12.<h1 class="center">This heading is blue and center-aligned.</h1>
13. <p class="center">This paragraph is blue and center-aligned.</p>
14.</body>
15. </html>
Test it Now
Output:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. p.center {
6. text-align: center;
7. color: blue;
8. }
9. </style>
10.</head>
11. <body>
12.<h1 class="center">This heading is not affected</h1>
13. <p class="center">This paragraph is blue and center-aligned.</p>
14.</body>
15. </html>
Test it Now
Output:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. * {
6. color: green;
7. font-size: 20px;
8. }
9. </style>
10.</head>
11. <body>
12.<h2>This is heading</h2>
13. <p>This style will be applied on every paragraph.</p>
14.<p id="para1">Me too!</p>
15. <p>And me!</p>
16.</body>
17. </html>
Test it Now
Output:
This is heading
paragraph. Me too!
And me!
Grouping selector is used to minimize the code. Commas are used to separate each
selector in grouping.
1. h1 {
2. text-align: center;
3. color: blue;
4. }
5. h2 {
6. text-align: center;
7. color: blue;
8. }
9. p {
10.text-align: center;
11. color: blue;
12. }
As you can see, you need to define CSS properties for all the elements. It can be
grouped in following ways:
1. h1,h2,p {
2. text-align: center;
3. color: blue;
4. }
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. h1, h2, p {
6. text-align: center;
7. color: blue;
8. }
9. </style>
10.</head>
11. <body>
12.<h1>Hello Javatpoint.com</h1>
13. <h2>Hello Javatpoint.com (In smaller font)</h2>
14.<p>This is a paragraph.</p>
15. </body>
16.</html>
This is a paragraph.
1. Inline CSS
2. Internal CSS
3. External CSS
1) Inline CSS
1. <p style="color:blue">Hello
CSS
2) Internal CSS
Internal CSS is used to apply CSS on a single document or page. It can affect all the
elements of the page. It is written inside the style tag within head section of html.
For example:
1. <style>
2. p{color:blue}
3. </style>
3) External CSS
External CSS is used to apply CSS on multiple pages or all pages. Here, we write all the
CSS code in a css file. Its extension must be .css for example style.css.
For example:
1. p{color:blue}
You need to link this style.css file to your html pages like this:
The inline CSS is also a method to insert style sheets in HTML document. This method
mitigates some advantages of style sheets so it is advised to use this method
sparingly.
If you want to use inline CSS, you should use the style attribute to the relevant
tag. Syntax:
htmltag> Example:
1. <h2 style="color:red;margin-left:40px;">Inline CSS is applied on this heading.</
h2>
2. <p>This paragraph is not
affected.</p> Output:
Internal CSS
The internal style sheet is used to add a unique style for a single document. It is
defined in
<head> section of the HTML page inside the <style>
tag. Example:
1. <!DOCTYPE html>
2. <html>
4. <style>
5. body {
6. background-color: linen;
7. }
8. h1 {
10. margin-left: 80px;
11. }
12. </style>
14. <body>
16. <p>This paragraph will not be affected.</p>
17. </body>
18. </html>
External CSS
The external style sheet is generally used when you want to make changes on
multiple pages. It is ideal for this condition because it facilitates you to change the
look of the entire web site by changing just one file.
It uses the <link> tag on every pages and the <link> tag should be put inside the head
section. Example:
1. <head>
2. <link rel="stylesheet" type="text/css" href="mystyle.css">
3. </head>
The external style sheet may be written in any text editor but must be saved
with a .css extension. This file should not contain HTML elements.
Note: You should not use a space between the property value and the unit. For
example: It should be margin-left:20px not margin-left:20 px.
CSS Comments
CSS comments are generally written to explain your code. It is very helpful for the
users who reads your code so that they can easily understand the code.
Comments are single or multiple lines statement and written within /*. */ .
1. <!DOCTYPE html>
3. <head>
5. p {
7. /* This is a single-line comment */
9. }
11. a multi-line
13. </style>
15. <body>
17. <p>This statement is styled with CSS.</p>
19. </body>
20. </
html> Output:
Hello Javatpoint.com
CSS comments are ignored by the browsers and not shown in the output.
CSS Background
CSS background property is used to define the background effects on element. There
are 5 CSS background properties that affects the HTML elements:
2. background-image
4. background-attachment
5. background-position
1) CSS background-color
html> Output:
2) CSS background-image
The background-image property is used to set an image as a background of an
element. By default the image covers the entire element. You can set the background
image for a page like this.
2. <html>
4. <style>
6. background-image: url("paper1.gif");
8. }
10. </head>
12. <h1>Hello Javatpoint.com</h1>
13. </body>
14. </html>
Note: The background image should be chosen according to text color. The bad
combination of text and background image may be a cause of poor designed and
not readable webpage.
3) CSS background-repeat
By default, the background-image property repeats the background image horizontally
and vertically. Some images are repeated only horizontally or vertically.
background-repeat: repeat-x;
1. <!DOCTYPE html>
3. <head>
5. body {
7. background-repeat: repeat-x;
8. }
9. </style>
11. <body>
13. </body>
14. </html>
background-repeat: repeat-y;
2. <html>
3. <head>
5. body {
7. background-repeat: repeat-y;
8. }
9. </style>
11. <body>
13. </body>
14. </html>
4) CSS background-attachment
The background-attachment property is used to specify if the background image is
fixed or scroll with the rest of the page in browser window. If you set fixed the
background image then the image will not move during scrolling in the browser. Let?
s take an example with fixed background image.
5) CSS background-position
The background-position property is used to define the initial position of the
background image. By default, the background image is placed on the top-left of the
webpage.
1. center
3. bottom
4. left
5. right
CSS Border
The CSS border is a shorthand property used to set the border on an element.
The CSS border properties are use to specify the style, color and size of the border of
an element. The CSS border properties are given below
● border-style
● border-color
● border-width
● border-radius
1) CSS border-style
The Border style property is used to specify the border type which you want to
display on the web page.
There are some border style values which are used with border-style property to
define a border.
Val Description
ue
non It doesn't define any border.
e
dott It is used to define a dotted border.
ed
das It is used to define a dashed border.
hed
solid It is used to define a solid border.
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. p.none {border-style: none;}
6. p.dotted {border-style: dotted;}
7. p.dashed {border-style: dashed;}
8. p.solid {border-style: solid;}
9. p.double {border-style: double;}
10.p.groove {border-style: groove;}
11. p.ridge {border-style: ridge;}
12.p.inset {border-style: inset;}
13. p.outset {border-style: outset;}
14.p.hidden {border-style: hidden;}
15. </style>
16.</head>
17. <body>
18.<p class="none">No border.</p>
19. <p class="dotted">A dotted border.</p>
20.<p class="dashed">A dashed border.</p>
21. <p class="solid">A solid border.</p>
22.<p class="double">A double border.</p>
23. <p class="groove">A groove border.</p>
24.<p class="ridge">A ridge border.</p>
25. <p class="inset">An inset border.</p>
26.<p class="outset">An outset border.</p>
27. <p class="hidden">A hidden border.</p>
28.</body>
29. </
html> Output:
No border.
A dotted border.
A dashed border.
A solid border.
A double border.
A groove border.
A ridge border.
An inset border.
An outset border.
A hidden border.
2) CSS border-width
The border-width property is used to set the border's width. It is set in pixels. You can
also use the one of the three pre-defined values, thin, medium or thick to set the
width of the border.
Note: The border-width property is not used alone. It is always used with other border properties
like "border-style" property to set the border first otherwise it will not work.
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. p.one {
6. border-style: solid;
7. border-width: 5px;
8. }
9. p.two {
10.border-style: solid;
11. border-width: medium;
12. }
13. p.three {
14.border-style: solid;
15. border-width: 1px;
16. }
17. </style>
18.</head>
19. <body>
20.<p class="one">Write your text here.</p>
21. <p class="two">Write your text here.</p>
22.<p class="three">Write your text here.</p>
23. </body>
24.</html>
3) CSS border-color
There are three methods to set the color of the border.
There is also a border color named "transparent". If the border color is not set it is
inherited from the color property of the element.
Note: The border-color property is not used alone. It is always used with other border properties
like "border-style" property to set the border first otherwise it will not work.
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. p.one {
6. border-style: solid;
7. border-color: red;
8. }
9. p.two {
10.border-style: solid;
11. border-color: #98bf21;
12. }
13. </style>
14.</head>
15. <body>
16.<p class="one">This is a solid red border</p>
17. <p class="two">This is a solid green border</p>
18.</body>
19. </html>
This property has two main values that are separate and collapse. When it is set to the
value separate, the distance between the cells can be defined using the border-spacing
property. When the border-collapse is set to the value collapse, then the inset value of
border-style property behaves like groove, and the outset value behaves like ridge.
Syntax
defined as follows.
Property Values
separate: It is the default value that separates the border of the table cell. Using this
value, each cell will display its own border.
collapse: This value is used to collapse the borders into a single border. Using
this, two adjacent table cells will share a border. When this value is applied, the
border-spacing property does not affect.
Now, let's understand this CSS property by using some examples. In the first
example, we are using the separate value of the border-collapse property. In the
second example, we are using the collapse value of the border-collapse property.
With this value, we can use the border-spacing property to set the distance
between the adjacent table cells.
1. <!DOCTYPE html>
2. <html>
3.
4. <head>
5. <title> border-collapse property </title>
6. <style>
7. table{
8. border: 2px solid blue;
9. text-align: center;
10.font-size: 20px;
11. width: 80%;
12.height: 50%;
13. }
14.th{
15. border: 5px solid red;
16.background-color: yellow;
17. }
18.td{
19. border: 5px solid violet;
20.background-color: cyan;
21. }
22.#t1 {
23. border-collapse: separate;
24.}
25. </style>
26.</head>
27.
28.<body>
29.
30.<h1> The border-collapse Property </h1>
31. <h2> border-collapse: separate; </h2>
32.<table id = "t1">
33. <tr>
34.<th> First_Name </th>
35. <th> Last_Name </th>
36.<th> Subject </th>
37. <th> Marks </th>
38.</tr>
39. <tr>
40.<td> James </td>
41. <td> Gosling </td>
42.<td> Maths </td>
43. <td> 92 </td>
44.</tr>
45. <tr>
46.<td> Alan </td>
47. <td> Rickman </td>
48.<td> Maths </td>
49. <td> 89 </td>
50.</tr>
51. <tr>
52.<td> Sam </td>
53. <td> Mendes </td>
54.<td> Maths </td>
55. <td> 82 </td>
56.</tr>
57. </table>
58.</body>
59.
60.</html>
Test it Now
Output
Example - Using collapse property
The border-spacing and border-radius properties cannot be used with this value.
1. <!DOCTYPE html>
2. <html>
3.
4. <head>
5. <title> border-collapse property </title>
6. <style>
7. table{
8. border: 2px solid blue;
9. text-align: center;
10.font-size: 20px;
11. width: 80%;
12.height: 50%;
13. }
14.th{
15. border: 5px solid red;
16.background-color: yellow;
17. }
18.td{
19. border: 5px solid violet;
20.background-color: cyan;
21. }
22.#t1{
23. border-collapse: collapse;
24.}
25. </style>
26.</head>
27.
28.<body>
29.
30.<h1> The border-collapse Property </h1>
31. <h2> border-collapse: collapse; </h2>
32.<table id = "t1">
33. <tr>
34.<th> First_Name </th>
35. <th> Last_Name </th>
36.<th> Subject </th>
37. <th> Marks </th>
38.</tr>
39. <tr>
40.<td> James </td>
41. <td> Gosling </td>
42.<td> Maths </td>
43. <td> 92 </td>
44.</tr>
45. <tr>
46.<td> Alan </td>
47. <td> Rickman </td>
48.<td> Maths </td>
49. <td> 89 </td>
50.</tr>
51. <tr>
52.<td> Sam </td>
53. <td> Mendes </td>
54.<td> Maths </td>
55. <td> 82 </td>
56.</tr>
57. </table>
58.</body>
59. </html>
Test it Now
Output
It can be defined as one or two values for determining the vertical and horizontal
spacing.
● When only one value is specified, then it sets both horizontal and vertical spacing.
● When we use the two-value syntax, then the first one is used to set the horizontal spacing
(i.e., the space between the adjacent columns), and the second value sets the vertical
spacing (i.e., the space between the adjacent rows).
Syntax
length: This value sets the distance between the borders of the adjacent table cells in
px, cm, pt, etc. Negative values are not allowed.
Let's understand this CSS property by using some examples. In the first example,
we are using the single value of the border-spacing property, and in the second
example, we are
using two values of the border-spacing
property. Example
Here, we are using the single value of the border-spacing property. The border-collapse
property is set to separate, and the value of the border-spacing is set to 45px.
1. <!DOCTYPE html>
2. <html>
3.
4. <head>
5. <title> border-spacing property </title>
6. <style>
7. table{
8. border: 2px solid blue;
9. text-align: center;
10.font-size: 20px;
11. background-color: lightgreen;
12.}
13. th{
14.border: 5px solid red;
15. background-color: yellow;
16.}
17. td{
18.border: 5px solid violet;
19. background-color: cyan;
20.}
21. #space{
22.border-collapse: separate;
23. border-spacing: 45px;
24.}
25. </style>
26.</head>
27.
28.<body>
29.
30.<h1> The border-spacing Property </h1>
31. <h2> border-spacing: 45px; </h2>
32.<table id = "space">
33. <tr>
34.<th> First_Name </th>
35. <th> Last_Name </th>
36.<th> Subject </th>
37. <th> Marks </th>
38.</tr>
39. <tr>
40.<td> James </td>
41. <td> Gosling </td>
42.<td> Maths </td>
43. <td> 92 </td>
44.</tr>
45. <tr>
46.<td> Alan </td>
47. <td> Rickman </td>
48.<td> Maths </td>
49. <td> 89 </td>
50.</tr>
51. <tr>
52.<td> Sam </td>
53. <td> Mendes </td>
54.<td> Maths </td>
55. <td> 82 </td>
56.</tr>
57. </table>
58.</body>
59.
60.</html>
Output
Example
Here, we are using two values of the border-spacing property. The border-collapse
property is set to separate, and the value of the border-spacing is set to 20pt 1em.
The first value, i.e., 20pt sets the horizontal spacing, and the value 1em set the
vertical spacing.
1. <!DOCTYPE html>
2. <html>
3.
4. <head>
5. <title> border-spacing property </title>
6. <style>
7. table{
8. border: 2px solid blue;
9. text-align: center;
10.font-size: 20px;
11. background-color: lightgreen;
12.}
13. th{
14.border: 5px solid red;
15. background-color: yellow;
16.}
17. td{
18.border: 5px solid violet;
19. background-color: cyan;
20.}
21. #space{
22.border-collapse: separate;
23. border-spacing: 20pt 1em;
24.}
25. </style>
26.</head>
27.
28.<body>
29.
30.<h1> The border-spacing Property </h1>
31. <h2> border-spacing: 20pt 1em; </h2>
32.<table id = "space">
33. <tr>
34.<th> First_Name </th>
35. <th> Last_Name </th>
36.<th> Subject </th>
37. <th> Marks </th>
38.</tr>
39. <tr>
40.<td> James </td>
41. <td> Gosling </td>
42.<td> Maths </td>
43. <td> 92 </td>
44.</tr>
45. <tr>
46.<td> Alan </td>
47. <td> Rickman </td>
48.<td> Maths </td>
49. <td> 89 </td>
50.</tr>
51. <tr>
52.<td> Sam </td>
53. <td> Mendes </td>
54.<td> Maths </td>
55. <td> 82 </td>
56.</tr>
57. </table>
58.</body>
59.
60.</html>
CSS Display
CSS display is the most important property of CSS which is used to control the layout
of the element. It specifies how the element is displayed.
Every element has a default display value according to its nature. Every element on
the webpage is a rectangular box and the CSS property defines the behavior of that
rectangular box.
Syntax
1. display:value;
1. display: inline;
2. display: inline-block;
4. display: run-in;
5. display: none;
● <span>
● <a>
● <em>
● <b> etc.
1. <!DOCTYPE html>
3. <head>
5. p {
7. }
9. </head>
11. <p>Hello Javatpoint.com</p>
13. <p>SQL Tutorial.</p>
15. <p>CSS Tutorial.</p>
16. </body>
17. </html>
Output:
Hello Javatpoint.com Java Tutorial. SQL Tutorial. HTML Tutorial. CSS Tutorial.
1. <!DOCTYPE html>
3. <head>
5. p {
7. }
9. </head>
11. <p>Hello Javatpoint.com</p>
13. <p>SQL Tutorial.</p>
15. <p>CSS Tutorial.</p>
16. </body>
17. </html>
Output:
Hello Javatpoint.com Java Tutorial. SQL Tutorial. HTML Tutorial. CSS Tutorial.
1. <!DOCTYPE html>
3. <head>
5. p {
6. display: block;
7. }
9. </head>
11. <p>Hello Javatpoint.com</p>
13. <p>SQL Tutorial.</p>
15. <p>CSS Tutorial.</p>
16. </body>
17. </html>
Output:
Hello Javatpoint.com
Java Tutorial.
SQL Tutorial.
HTML
Tutorial. CSS
Tutorial.
1. <!DOCTYPE html>
3. <head>
5. p {
7. }
11. <p>Hello Javatpoint.com</p>
13. <p>SQL Tutorial.</p>
14. <p>HTML Tutorial.</p>
16. </body>
17. </html>
Output:
Hello Javatpoint.com
Java Tutorial.
SQL Tutorial.
HTML
Tutorial. CSS
Tutorial.
1. <!DOCTYPE html>
2. <html>
4. <style>
6. display: none;
7. }
8. </style>
10. <body>
12. <h1 class="hidden">This is not visible.</h1>
14. </body>
15. </html>
Output:
CSS Cursor
It is used to define the type of mouse cursor when the mouse pointer is on the
element. It allows us to specify the cursor type, which will be displayed to the user.
When a user hovers on the link, then by default, the cursor transforms into the hand
from a pointer.
Value Usage
s
It is used to display the indication of the cursor of something that is
alias
to be created.
auto It is the default property in which the browser sets the cursor.
all-scroll It indicates the scrolling.
col- Using it, the cursor will represent that the column can be horizontally
resize resized.
cell The cursor will represent that a cell or the collection of cells is
selected.
conte
It indicates the availability of the context menu.
xt-
menu
default It indicates an arrow, which is the default cursor.
copy It is used to indicate that something is copied.
crosshai In it, the cursor changes to the crosshair or the plus sign.
r
It represents the east direction and indicates that the edge of the box
e-resize
is to be shifted towards right.
ew- It represents the east/west direction and indicates a bidirectional
resize resize cursor.
n-resize It represents the north direction that indicates that the edge of the
box is to be
shifted to up.
It represents the north/east direction and indicates that the edge of
ne-resize
the box is to be shifted towards up and right.
move It indicates that something is to be shifted.
It is in the form of a question mark or ballon, which represents that
help
help is available.
None It is used to indicate that no cursor is rendered for the element.
No-drop It is used to represent that the dragged item cannot be dropped here.
s-resize It indicates an edge box is to be moved down. It indicates the south
direction.
Row- It is used to indicate that the row can be vertically resized.
resize
It represents the south/east direction, which indicates that an edge
Se-resize
box is to be moved down and right.
It represents south/west direction and indicates that an edge of the
Sw-resize
box is to be shifted towards down and left.
Wait It represents an hourglass.
<url> It indicates the source of the cursor image file.
It indicates the west direction and represents that the edge of the box
w-resize
is to be shifted left.
Zoom-in It is used to indicate that something can be zoomed in.
Zoom- It is used to indicate that something can be zoomed out.
out
The illustration of using the above values of cursor property is given below:
Example
2. <head>
4. <style>
6. background-color: lightblue;
8. text-align: center;
10. }
11.
12. </style>
13.
14. <body>
16. <div style = "cursor:alias">alias Value</div>
18. <div style = "cursor:all-scroll">all-scroll value</div>
20. <div style = "cursor:crosshair">Crosshair</div>
21. <div style = "cursor:default">Default value</div>
22. <div style = "cursor:copy">copy value</div>
24. <div style = "cursor:move">Move</div>
26. <div style = "cursor:ew-resize">ew-resize</div>
28. <div style = "cursor:nw-resize">nw-resize</div>
30. <div style = "cursor:se-resize">se-resize</div>
32. <div style = "cursor:s-resize">s-resize</div>
34. <div style = "cursor:text">text</div>
36. <div style = "cursor:help">help</div>
38. <div style = "cursor:no-drop">no-drop</div>
40. <div style = "cursor:vertical-text">vertical-text</div>
42. <div style = "cursor:zoom-out">Zoom-out</div>
43. </body>
44. </html>
CSS Buttons
In HTML, we use the button tag to create a button, but by using CSS properties, we
can style the buttons. Buttons help us to create user interaction and event
processing. They are one of the widely used elements of web pages.
During the form submission, to view or to get some information, we generally use
background-color
As we have discussed earlier, this property is used for setting the background color
of the button element.
Syntax
2. // background-color style
3. }
Example
1. <!DOCTYPE html>
3.
5. <title>
7. </title>
8.
10. body{
12. }
14. color:lightgoldenrodyellow;
16. }
18. background-color: red;
19. }
20. .b2 {
22. }
24. background-color: violet;
25. }
26.</style>
28.
30. <h1>The background-color property.</h1>
32.<button class="b2">Blue color button</button>
34. </body>
35. </html>
border
It is used to set the border of the button. It is the shorthand property for border-
width, border-color, and border-style.
Syntax
1. element {
2. // border style
3. }
Example
1. <!DOCTYPE html>
3.
5. <title>
7. </title>
8.
10. body{
12. }
14. color:lightgoldenrodyellow;
16. }
18. background-color: red;
20. }
22. background-color: blue;
24. }
26. background-color: yellow;
28. border:5px red groove;
29. }
30. .b4{
32. border: 5px red dashed;
33. }
34. .b5{
36. border: 5px black dotted;
37. }
38. .b6{
40. border:5px blue double;
41. }
42.</style>
44.
46. <h1>The border property</h1>
47.<button class="b1">none</button>
49.<button class="b3">groove</button>
51.<button class="b5">dotted</button>
53.
54. </body>
55. </html>
border-radius
It is used to make the rounded corners of the button. It sets the border radius of the
button.
Syntax
1. element {
2. // border-radius property
3. }
Example
1. <!DOCTYPE html>
3.
5. <title>
7. </title>
9. <style>
11. text-align: center;
12. }
14. color:lightgoldenrodyellow;
16. }
18. background-color: red;
20. }
22. background-color: blue;
24. border-radius: 7px;
25. }
26. .b3 {
27. background-color: yellow;
28. color:black;
30. border-radius: 10px;
31. }
32. .b4{
34. border: 5px red dashed;
36. }
38. background-color: gray;
40. border-radius: 30px;
41. }
42. .b6{
44. border:5px blue double;
46. }
48. </head>
50. <body>
52. <h2>Below there is the border name and border-radius</h2>
54.<button class="b2">solid 7px</button>
56.<button class="b4">dashed 20px</button>
58. <button class="b6">double 25px</
button> 59.
60. </body>
61. </html>
box-shadow
As its name implies, it is used to create the shadow of the button box. It is used to add
the shadow to the button. We can also create a shadow during the hover on the button.
Syntax
Example
1. <!DOCTYPE html>
2. <html>
3.
5. <title>
7. </title>
9. <style>
11. text-align: center;
12. }
13.button {
15. font-size: 30px;
16. }
17. .b1{
19. border:5px red double;
21. color:black;
23. 0 6px 20px 0 rgba(0, 0, 0, 0.19);
24. }
25. .b2{
27. border:5px red dotted;
29. border-radius: 25px;
30. }
31. .b2:hover{
33. 0 6px 20px 0 rgba(0, 0, 0, 0.19);
34. }
35.</style>
37.
41. </body>
42. </html>
padding
It is used to set the button padding.
Syntax
2. // padding style
3. }
Example
2. <html>
4. <head>
6. button background Color
8.
10. body{
12. }
14. color:lightgoldenrodyellow;
16. }
18. background-color: red;
20. padding: 16px;
21. }
22. .b2 {
24. border:5px brown solid;
26. }
28. background-color: yellow;
30. border:5px red groove;
32. }
34. background-color:orange;
36. padding-bottom:40px;
37. }
38. .b5{
40. border: 5px black dotted;
42. }
44. background-color: lightblue;
45. border:5px blue double;
47. }
49. </head>
51. <body>
53.<button class="b1">none</button>
55.<button class="b3">groove</button>
57.<button class="b5">dotted</button>
59.
60. </body>
61. </html>
It defines the amount of space above and below inline elements. It allows you to
set the height of a line of independently from the font size.
valu description
e
norm This is a default value. it specifies a normal line height.
al
It specifies a number that is multiplied with the current font size to
num
set the line height.
ber
lengt It is used to set the line height in px, pt,cm,etc.
h
% It specifies the line height in percent of the current font.
initia It sets this property to its default value.
l
inher It inherits this property from its parent element.
it
CSS Margin
CSS Margin property is used to define the space around elements. It is completely
transparent and doesn't have any background color. It clears an area around the
element.
Top, bottom, left and right margin can be changed independently using separate
properties. You can also change all properties at once by using shorthand margin
property.
Val Description
ue
aut This is used to let the browser calculate a margin.
o
leng It is used to specify a margin pt, px, cm, etc. its default value is 0px.
th
% It is used to define a margin in percent of the width of containing
element.
inhe It is used to inherit margin from parent element.
rit
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. p {
6. background-color: pink;
7. }
8. p.ex {
9. margin-top: 50px;
10.margin-bottom: 50px;
11. margin-right: 100px;
12.margin-left: 100px;
13. }
14.</style>
15. </head>
16.<body>
17. <p>This paragraph is not displayed with specified margin. </p>
18.<p class="ex">This paragraph is displayed with specified margin.</p>
19. </body>
20.</html>
Output:
There are four types to specify the margin property. You can use one of them.
200px
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. p {
6. background-color: pink;
7. }
8. p.ex {
9. margin: 50px 100px 150px 200px;
10. }
11. </style>
12.</head>
13. <body>
14.<p>This paragraph is not displayed with specified margin. </p>
15. <p class="ex">This paragraph is displayed with specified margin.</p>
16.</body>
17. </html>
Output:
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. p {
6. background-color: pink;
7. }
8. p.ex {
9. margin: 50px 100px 150px;
10. }
11. </style>
12.</head>
13. <body>
14.<p>This paragraph is not displayed with specified margin. </p>
15. <p class="ex">This paragraph is displayed with specified margin.</p>
16.</body>
17. </html>
Output:
This paragraph is not displayed with specified margin.
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <style>
5. p {
6. background-color: pink;
7. }
8. p.ex {
9. margin: 50px 100px;
10. }
11. </style>
12.</head>
13. <body>
14.<p>This paragraph is not displayed with specified margin. </p>
15. <p class="ex">This paragraph is displayed with specified margin.</p>
16.</body>
17. </html>
Output:
Our JavaScript Tutorial is designed for beginners and professionals both. JavaScript
is used to create client-side dynamic pages.
Features of JavaScript
There are following features of JavaScript:
1. All popular web browsers support JavaScript as they provide built-in execution
environments.
2. JavaScript follows the syntax and structure of the C programming language. Thus,
it is a structured programming language.
3. JavaScript is a weakly typed language, where certain types are implicitly cast
(depending on the operation).
4. JavaScript is an object-oriented programming language that uses prototypes rather
than using classes for inheritance.
5. It is a light-weighted and interpreted language.
6. It is a case-sensitive language.
7. JavaScript is supportable in several operating systems including, Windows, macOS, etc.
8. It provides good control to the users over the web browsers.
History of JavaScript
In 1993, Mosaic, the first popular web browser, came into existence. In the year 1994,
Netscape was founded by Marc Andreessen. He realized that the web needed to
become more dynamic. Thus, a 'glue language' was believed to be provided to HTML
to make web designing easy for designers and part-time programmers.
Consequently, in 1995, the company recruited Brendan Eich intending to implement
and embed Scheme programming language to the browser. But, before Brendan
could start, the company merged with Sun Microsystems for adding Java into its
Navigator so that it could compete with Microsoft over the web technologies and
platforms. Now, two languages were there: Java and the scripting language. Further,
Netscape decided to give a similar name to the scripting language as Java's. It led to
'Javascript'. Finally, in May 1995, Marc Andreessen coined the first code of
Javascript named 'Mocha'. Later, the marketing team replaced the name with
'LiveScript'.
But, due to trademark reasons and certain other reasons, in December 1995, the
language was finally renamed to 'JavaScript'. From then, JavaScript came into
existence.
Application of JavaScript
JavaScript is used to create interactive websites. It is mainly used for:
● Client-side validation,
● Dynamic drop-down menus,
● Displaying date and time,
● Displaying pop-up windows and dialog boxes (like an alert dialog box, confirm dialog
box and prompt dialog box),
● Displaying clocks etc.
JavaScript Example
2. document.write("Hello JavaScript by JavaScript");
3. </script>
JavaScript Example
Javascript example is easy to code. JavaScript provides 3 places to put the JavaScript
code: within body tag, within head tag and external JavaScript file.
script> Test it
Now
The script tag specifies that we are using JavaScript.
The text/javascript is the content type that provides information to the browser
about the data.
To call function, you need to work on event. Here we are using onclick event to call
msg() function.
2. <head>
4. function msg(){
6. }
8. </head>
10. <p>Welcome to JavaScript</p>
12. <input type="button" value="click" onclick="msg()"/>
14. </body>
15. </html>
It provides code re usability because single JavaScript file can be used in several html
pages.
Let's create an external JavaScript file that prints Hello Javatpoint in a alert dialog box.
message.js
1. function msg(){
2. alert("Hello Javatpoint");
3. }
Let's include the JavaScript file into html page. It calls the JavaScript function on
button click.
index.html
1. <html>
3. <script type="text/javascript" src="message.js"></script>
5. <body>
7. <form>
9. </form>
10. </body>
11. </html>
1. The stealer may download the coder's code using the url of the js file.
2. If two js files are dependent on one another, then a failure in one file may
affect the execution of the other dependent file.
3. The web browser needs to make an additional http request to get the js code.
4. A tiny to a large change in the js code may cause unexpected results
in all its dependent files.
5. We need to check each file that depends on the commonly created external
javascript file.
6. If it is a few lines of code, then better to implement the internal javascript code.
JavaScript Comment
1. JavaScript comments
2. Advantage of javaScript comments
3. Single-line and Multi-line comments
The JavaScript comments are meaningful way to deliver message. It is used to add
information about the code, warnings or suggestions so that end user can easily
interpret the code.
The JavaScript comment is ignored by the JavaScript engine i.e. embedded in the
browser.
1. To make code easy to understand It can be used to elaborate the code so that end user
can easily understand the code.
2. To avoid the unnecessary code It can also be used to avoid the code being executed.
Sometimes, we add the code to perform some action. But after sometime, there may be
need to disable the code. In such case, it is better to use comments.
1. Single-line Comment
2. Multi-line Comment
It is represented by double forward slashes (//). It can be used before and after the
statement. Let’s see the example of single-line comment i.e. added before the
statement.
1. <script>
2. // It is single line comment
3. document.write("hello javascript");
4. </script>
Test it Now
Let’s see the example of single-line comment i.e. added after the statement.
1. <script>
2. var a=10;
3. var b=20;
4. var c=a+b;//It adds values of a and b variable
5. document.write(c);//prints sum of 10 and 20
6. </script>
It is represented by forward slash with asterisk then asterisk with forward slash. For
example:
1. <script>
2. /* It is multi line comment.
3. It will not be displayed */
4. document.write("example of javascript multiline comment");
5. </script>
javaScript Variable
A JavaScript variable is simply a name of storage location. There are two types of
variables in JavaScript : local variable and global variable.
There are some rules while declaring a JavaScript variable (also known as identifiers).
1. <script>
2. var x = 10;
3. var y = 20;
4. var z=x+y;
5. document.write(z);
6. </script>
1 <script>
.
function abc(){
3 var x=10;//local variable
.
}
5 </script>
.
O
r,
1 <script>
.
If(10<13){
3 var y=20;//JavaScript local
. variable
}
5 </script>
.
JavaScript global variable
A JavaScript global variable is accessible from any function. A variable i.e.
declared outside the function or declared with window object is known as
global variable. For example:
1. <script>
2. var data=200;//gloabal variable
3. function a(){
4. document.writeln(data);
5. }
6. function b(){
7. document.writeln(data);
8. }
9. a();//calling JavaScript function
10.b();
11. </script>
1. <script>
2. var value=50;//global variable
3. function a(){
4. alert(value);
5. }
6. function b(){
7. alert(value);
8. }
9. </script>
To declare JavaScript global variables inside function, you need to use window object.
For example:
1. window.value=90;
Now it can be declared inside any function and can be accessed from any function.
For example:
1. function m(){
2. window.value=100;//declaring global variable by window object
3. }
4. function n(){
5. alert(window.value);//accessing global variable from other function
6. }
1. var value=50;
2. function a(){
3. alert(window.value);//accessing global variable
4. }
Objects are the basic run-time bodies in an object-oriented framework. They may
represent a place, a person, an account, a table of data, or anything that the program
needs to handle.
Objects can also represent user-defined data such as vectors, time, and lists.
Consider two objects, “customer” and “account” in a program. The customer object
may send a message requesting the bank balance.
Classes
We know that objects hold the data and the functions to manipulate the data.
However, the two can be bound together in a user-defined data type with the help of
classes. Any number of objects can be created in a class. Each object is associated
with the data of type class. A class is therefore a collection of objects of similar
types.
For example, consider the class “Fruits”. We can create multiple objects for this
fruit. Encapsulation
Encapsulation is the wrapping up/binding of data and function into a single unit
called class. Data encapsulation is the most prominent feature of a class wherein
the data is not accessible to the outside world, and only those functions wrapped
inside the class can access it. These functions serve as the interface between the
object’s data and the program.
Inheritance
The phenomenon where objects of one class acquire the properties of objects of
another class is called Inheritance. It supports the concept of hierarchical
classification. Consider the object “car” that falls in the class “Vehicles” and “Light
Weight Vehicles”.
In OOP, the concept of inheritance ensures reusability. This means that additional
features can be added to an existing class without modifying it. This is made
possible by deriving a new class from the existing one.
var student = {
name:
"pp", age:
21,
studies: "Computer Science",
};
student.name = "pp",
student.age=21,
student.studies = "Computer Science";
{ this.name = name;
this.age = age;
this.studies =
studies;
}
var student = stud("Chris", 21, "Computer Science");
age " +
student.age + " studies " + student.studies;
JavaScript uses the ES6 standard to define classes. Consider the following
constructor(name, maker,
this.maker =
maker; this.price =
price;
}
getDetails(){
console.log(car2.maker);
console.log(car1.getDetails(
code is
Encapsulation in JavaScript
Encapsulation includes wrapping the property and the function within a single unit.
Consider the following example:
class
Emp_details{ constr
uctor(name,id){
this.name =
add_Address(add)
{ this.add = add;
}
getDetails(){
person1.add_Address('Bangalore');
person1.getDetails();
Here, the class holds the data variables name and id along with the functions
add_Address and getDetails. All are encapsulated within the class Emp_details.
Memory Management in JavaScript
Memory management is an essential task when writing a good and effective
program in some programming languages. This article will help you to understand
different concepts of memory management in JavaScript. In low-level languages
like C and C++, programmers should care about the usage of memory in some
manual fashion. On the other hand, Javascript automatically allocates memory
when objects are created into the environment and also it cleans the memory when
an object is destroyed. JavaScript can manage all of these on its own but this does
not imply that the developers do not need to worry about the memory management
in JavaScript.
In JavaScript, we do not need to care about allocating memory for simple variables.
We can directly assign values to some variables and it will allocate necessary
memory on its own.
Syntax
var variable1 =
<value> var variable2
= <value> Example
Source Code
<head>
<title>HTML Console</title>
</head>
<body>
<h3> Output Console </h3>
<p> Output:</p>
<div id="output">
</div>
<div id="opError" style="color : #ff0000">
</div>
<script>
var content =''
var error =''
varopDiv=document.querySelector('#output')
varopErrDiv=document.querySelector('#opError')
// actual javascript
code try{
var number =52;
varst='my_string';
var student ={
name:'Smith'
, roll:5, age:
23,
};
vararr=[15,null,'another_string'];
content +="Allocated memory for number: "+JSON.stringify(number)
+'<br>' content +="Allocated memory for string: "+JSON.stringify(st)
+'<br>' content +="Allocated memory for student:
"+JSON.stringify(student)+'<br>' content +="Allocated memory for array:
"+JSON.stringify(arr)+'<br>'
}catch(err){
error += err
}finally{
From the above example, it is clear that numbers and strings are single values, and
allocation is also simple. But for objects and arrays, JavaScript can also easily
allocate the memory based on their values.
Like variable value assignment, we can also create some memory blocks by calling
some functions. For example, when a function returns a separate object it will
automatically assign a new memory block to the system.
Syntax
Memory_reference = <function call which returns any value>
Examples
The following example uses a function that works on an HTML document. So this
program will run on a browser or HTML editor.
Source Code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
</head>
<body>
<script>
var e =document.createElement('div');
e.innerHTML="<h1> Header from JavaScript </h1>"
document.body.appendChild(e);
</script>
</body>
</html>
In this example, the JavaScript code is present inside the <script> tag in HTML.
Please notice, in this case, initially, the document does not have any <div> block
inside <body>. The JavaScript creates a new component by calling createElement(),
and then a new div block is created. This block allocates the memory but only when
a function is called. After that, the new component is added as a child of the body
tag to use this inside the HTML document.
Example
Initially allocating memory for a variable, then reading the value from it. Writing a new
value and again reading from it.
Source Code
<!DOCTYPE html>
<html>
<head>
<title>HTML Console</title>
</head>
<body>
<h3> Output Console </h3>
<p> Output:</p>
<div id="output">
</div>
<div id="opError" style="color : #ff0000">
</div>
<script>
var content =''
var error =''
opDiv=document.querySelector('#output')
varopErrDiv=document.querySelector('#opError')
// actual javascript
code try{
var a =52;// allocate memory
content +="Reading value of variable a: "+JSON.stringify(a)
+'<br>' a =100
content +="Reading value of variable a: "+JSON.stringify(a)+'<br>'
}
catch(err){
error += err
}
finally{
Syntax
delete <variable_name>
The variable must be allocated beforehand, otherwise, it will raise an error while
trying to delete that variable. Let us see one example to understand this concept
clearly.
Example
Source Code
<!DOCTYPE html>
<html>
<head>
<title>HTML Console</title>
</head>
<body>
<h3> Output Console </h3>
<p> Output:</p>
<div id="output">
</div>
<div id="opError" style="color : #ff0000">
</div>
<script>
var content =''
var error =''
varopDiv=document.querySelector('#output')
varopErrDiv=document.querySelector('#opError')
// actual javascript
code try{
a ="a simple variable";// allocate memory
content +="Reading value of variable a: "+JSON.stringify(a)+'<br>'
delete a
content +="Reading value of variable a: "+JSON.stringify(a)+'<br>'
}
catch(err){
error += err
}
finally{
Note − The ‘delete’ keyword will only work when the variable is allocated directly
(without using the var or let keyword).
Conclusion
Working with any programming language, the programmer should know the overall
concept in depth. Memory management is one of the concerning issues, in which
developers should properly manage the memory otherwise it will occupy
unnecessary memory blocks and create major problems in the environment.
JavaScript provides an additional garbage collector tool that automatically cleans
the unused memory blocks. However, we can also deallocate memory by using the
‘delete’ keyword just before the variable name
Ajax is only a name given to a set of tools that were previously existing.
Data furnished by the server will be found in the attributes of the XMLHttpRequestobject:
Take note that a new XMLHttpRequestobject has to be created for each new data request.
We have to wait for the data to be available to process it, and in this purpose, the state
of availability of data is given by the readyStateattribute of XMLHttpRequest.
0: Not initialized
1: Connection established
2: Request
received 3: Answer
in process 4:
Finished
2. status: 200 is OK
JavaScript
Shrink
functionAjaxRequest(ReadyHandler,URL,Method,Params,QueryString,HttpHeaders)
{ if (URL == null) { alert("Request URL is Empty"); }
else {
//200 status means ok, otherwise some error code is returned, 404 for example
//The 4 state means for the response is ready and sent by the
server. if (xmlhttp.readyState == 4&&xmlhttp.status == 200) {
ResponseText = xmlhttp.responseText; //get text data in the response
ResponseXML = xmlhttp.responseXML; //get xml data in the response
ResponseHeaderJSON = xmlhttp.getResponseHeader
("CustomHeaderJSON"); // Extract Data in http
header ResponseHeaders = xmlhttp.getAllResponseHeaders(); //Get a
string
//containing all http headers returned by server
In the demo application, you can test the 'AjaxRequest' function by changing the
parameters that are passed to it.
Actually all the code that is typed in the text box is executed as JavaScript code on
click of 'Execute' button.This is done using the eval() function.
JavaScript
FunctionCall = document.getElementById('FunctionCode').value;
eval(FunctionCall);
Function
Usage
JavaScript
functionAjaxRequest(ReadyHandler,URL,Method,Params,QueryString,HttpHeaders)
Description
Note: On successful completion of the request, the result of the request will be available in
the function passed as ReadyHandler.
The result of request will be in 4 variables, namely:
This header string may contain a single string value or a you can also use a JSON
format for multiple values which then can be parsed in ReadyHandler(as shown in the
example).
->Params: POST data to be sent to server. Expects a JSON formatted name value pairs
->HttpHeaders: Data to be sent as HTTP Headers. Expects JSON formatted name value
pairs
Note: While sending the data in headers, you have to take care only ASCII characters where
charCode ranging from 32 to 126 are sent or you may get unexpected results. See RFC
documentation for HTTP.
The ReadyHandlercan contain the code which will dynamically change the contents of
the webpage based on the response data.
For example, in the demo application, I have used 'ProcessRequest()' as the Ready
handler which sets the response in the respective <Div>.
JavaScript
functionProcessRequest() {
document.getElementById('ResponseXMLDiv').innerHTML = ResponseHeaders;
eval("var CustomHeaders = { " + ResponseHeaderJSON + "};");
var header;
varallHeaders = "<br/>";
if (CustomHeaders != "") {
for (header inCustomHeaders) {
allHeaders = allHeaders + CustomHeaders[header] + "<br/>"
}
}
document.getElementById('ResponseHeadersDiv').innerHTML = allHeaders;
}
Example:
JavaScript
AjaxRequest(ProcessRequest, 'Handler.ashx','POST',
{ Param1: 'Param1Value', Param2: 'Param2Value', Param3: 'Param3Value' },
{ Query1: 'Q1', Query2: 'Q2', Query3: 'Q3' },
{ Header1: 'H1', Header2: 'H2', Header3: 'H3' }
);
For handling the client request, I have implemented a simple Generic Handler (.ashx).
You can access all the data (query string + Post Data + HTTP Headers) that is sent
by the client browser in AJAX request.
In the Generic handler, the data is accessible via the context.Requestobject.
Though you can access all the data together in context.Request.Params[], you can access
the data separately as follows:
In the example application, what I have done is just echo back the data which is
received in the request along with a custom HTTP header added.
JavaScript
foreach(string Param incontext.Request.Params)
{
ParamsData ="<br/>" + Param + " : " +
context.Request.Params[Param].ToString() +
ParamsData;
}
context.Response.Write(ParamsData);
The above lines capture the data in the request and send it back in the
I have just used string concatenate for creating it, but you can also use different
JSON parsers/Encoders available at http://www.json.org/.
You can also use JSON strings to exchange data through AJAX. It is sometimes better
to use JSON than XML. Using JSON results in less bytes transferred than XML.
Points of Interest
This is a basic implementation of AJAX and the function can be tuned and
modified according to needs and reconfigurability.
Here is how the request and response looks like [HTTP request in Fiddler]:
jQuery Events
jQuery events are the actions that can be detected by your web application. They are
used to create dynamic web pages. An event shows the exact moment when
something happens.
● A mouse click
● An HTML form submission
● A web page loading
● A keystroke on the keyboard
● Scrolling of the web page etc.
Mouse Events
● click
● dblclick
● mouseenter
● mouseleave
Keyboard Events
● keyup
● keydown
● keypress
Form Events
● submit
● change
● blur
● focus
Document/Window Events
● load
● unload
● scroll
● resize
Note: A term "fires" is generally used with events. For example: The click event fires in the moment
you press a key.
1. $("p").click ();
The next step defines what should happen when the event fires. You must pass a
function to the event.
UNIT – III
REACT JS
React Introduction
ReactJS is a declarative, efficient, and flexible JavaScript library for building reusable
UI components. It is an open-source, component-based front end library responsible
only for the view layer of the application. It was created by Jordan Walke, who was a
software engineer at Facebook. It was initially developed and maintained by
Facebook and was later used in its products like WhatsApp&Instagram. Facebook
developed ReactJS in 2011 in its newsfeed section, but it was released to the public
in the month of May 2013.
Today, most of the websites are built using MVC (model view controller)
architecture. In MVC architecture, React is the 'V' which stands for view, whereas
the architecture is provided by the Redux or Flux.
A ReactJS application is made up of multiple components, each component
responsible for outputting a small, reusable piece of HTML code. The components
are the heart of all React applications. These Components can be nested with other
components to allow complex applications to be built of simple building blocks.
ReactJS uses virtual DOM based mechanism to fill data in HTML DOM. The virtual
DOM works fast as it only changes individual DOM elements instead of reloading
complete DOM every time.
If you've ever had the chance to try React, you've probably heard about the create-react-
app
package, which makes it super easy to start with a React development
environment. In this tutorial, we will use this package to initiate our React
app.
So, first of all, make sure you have Node.js installed on your computer. It will also
install
npm for you.
In your terminal, run npm install -g create-react-app. This will globally install create-react-app
on your computer.
Now, create-react-app will create a folder named multi-page-app. Just type cd multi-page-
app
server. That's all. You have a React app running on your local
server.
Now it's time to clean the default files and prepare our application.
In your src folder, delete everything but App.js and index.js. Then open index.js and replace
the content with the code below.
importReactDOMfrom'react-dom';
I basically deleted the registerServiceWorker related lines and also the import './index.css';
line. Also, replace your App.js file with the code below.
import React, { Component } from'react';
<div className="App">
</div>
);
exportdefault App;
In your terminal, type the following commands to install the react-router and
react- transition-group modules respectively.
After installing the packages, you can check the package.json file inside your main
project directory to verify that the modules are included under dependencies.
Router Components
There are basically two different router options: HashRouter and BrowserRouter.
As the name implies, HashRouter uses hashes to keep track of your links, and it is
suitable for static servers. On the other hand, if you have a dynamic server, it is a
better option to use BrowserRouter, considering the fact that your URLs will be
prettier.
Once you decide which one you should use, just go ahead and add the
component to your index.js file.
importReactDOMfrom'react-dom';
ReactDOM.render(<HashRouter><App/></HashRouter>, document.getElementById('root'));
If you're using a dynamic server and prefer to use BrowserRouter, the only difference
would be importing the BrowserRouter and using it to wrap the <App> component.
By wrapping our <App> component, we are serving the history object to our application,
and thus other react-router components can communicate with each other.
Create a folder named "components" in your src directory, and then create the Menu.js
and Content.js files.
Menu.js
Let's fill in our Menu.js component.
It will be a stateless functional component since we don't need states and life-cycle
hooks.
return(
<ul>
<li>Home</li>
<li>Works</li>
<li>About</li>
</ul>
exportdefault Menu
Here we have a <ul> tag with <li> tags, which will be our links.
And then wrap the content of the <li> tags with the <Link> component.
The <Link> component is essentially a react-router component acting like an <a> tag,
but it does not reload your page with a new target link.
Also, if you style your a tag in CSS, you will notice that the <Link> component gets the
same styling.
Note that there is a more advanced version of the <Link> component, which is
<NavLink>. This offers you extra features so that you can style the active links.
Now we need to define where each link will navigate. For this purpose, the <Link>
component has a to prop.
return(
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/works">Works</Link></li>
<li><Link to="/about">About</Link></li>
</ul>
exportdefault Menu
Content.js
Inside our <Content> component, we will define the Routes to match the Links.
We need the Switch and Route components from react-router-dom. So, first of all,
import them.
Second of all, import the components that we want to route to. These are the
Home, Works and About components for our example. Assuming you have already
created those components inside the components folder, we also need to import
them.
import Home from './Home'
return(
<div>
Home
</div>
exportdefault Home
Switch
We use the <Switch> component to group our <Route> components. Switch looks
for all the Routes and then returns the first matching one.
Route
path prop. The final version of our Content.js file looks like this:
import React from'react'
return(
<Switch>
</Switch>
exportdefault Content
Notice that the extra exact prop is required for the Home component, which is the
main directory. Using exactforces the Route to match the exact pathname. If it's not
used, other pathnames starting with / would also be matched by the Home
component, and for each link, it would only display the Home component.
Now when you click the menu links, your app should be switching the content.
We will be animating the mounting state of each component. When you route different
components with the Route component inside Switch, you are essentially mounting
and unmounting different components accordingly.
Since we are dealing with the mounting state of the component, we enable
transitionAppear and set a timeout for it. We also disable transitionEnter and transitionLeave,
since these are only valid once the component is mounted. If you are planning to
animate any children of the component, you have to use them.
Lastly, add the specific transitionName so that we can refer to it inside the CSS file.
import'../styles/homeStyle.css'
<CSSTransitionGroup
transitionName="homeTransition"
transitionAppear={true}
transitionAppearTimeout={500}
transitionEnter={false}
transitionLeave={false}>
<div>
Home
</div>
</CSSTransitionGroup>
exportdefault Home
.homeTransition-appear{
opacity: 0;
.homeTransition-appear.homeTransition-appear-active{
opacity: 1;
If you refresh the page, you should see the fade-in effect of the Home component.
If you apply the same procedure to all the other routed components, you will
see their individual animations when you change the content with your Menu.
Conclusion
In this tutorial, we covered the react-router-dom and react-transition-group modules.
However, there's more to both modules than we covered in this tutorial. Here is a
working demo of what was covered.
So, to learn more features, always go through the documentation of the modules
you are using.
Over the last couple of years, React has grown in popularity. In fact, we have a
number of items in the marketplace that are available for purchase, review,
implementation, and so on. If you’re looking for additional resources around React,
don’t hesitate to check them out.
React Forms
HTML form elements work a bit differently from other DOM elements in React,
because form elements naturally keep some internal state. For example, this
form in plain HTML accepts a single name:
<form>
<label>
Name:
<input type="text" name="name" />
</label>
<input type="submit" value="Submit" />
</form>
This form has the default HTML form behavior of browsing to a new page when the
user submits the form. If you want this behavior in React, it just works. But in most
cases, it’s convenient to have a JavaScript function that handles the submission of
the form and has access to the data that the user entered into the form. The
standard way to achieve this is with a technique called “controlled components”.
Controlled Components
In HTML, form elements such as <input>, <textarea>, and <select> typically maintain their
own state and update it based on user input. In React, mutable state is typically kept in
the state property of components, and only updated with setState().
We can combine the two by making the React state be the “single source of truth”.
Then the React component that renders a form also controls what happens in that
form on subsequent user input. An input form element whose value is controlled by
React in this way is called a “controlled component”.
For example, if we want to make the previous example log the name when it is
submitted, we can write the form as a controlled component:
classNameFormextendsReact.Compone
nt{ constructor(props){
super(props);
this.state={value:''};
this.handleChange=this.handleChange.bind(this);
this.handleSubmit=this.handleSubmit.bind(this);
}
handleChange(event)
{this.setState({value:event.target.value});}
handleSubmit(event){
alert('A name was submitted: '+this.state.value);
event.preventDefault();
}
render()
{ return(
<form onSubmit={this.handleSubmit}><label>
Name:
<input type="text" value={this.state.value} onChange={this.handleChange} /></label>
<input type="submit" value="Submit" />
</form>
);
}
}
Try it on CodePen
Since the value attribute is set on our form element, the displayed value will always be
this.state.value, making
the React state the source of truth. Since handleChange runs on
every keystroke to update the React state, the displayed value will update as the user
types.
With a controlled component, the input’s value is always driven by the React state.
While this means you have to type a bit more code, you can now pass the value to
other UI elements too, or reset it from other event handlers.
<textarea>
Hello there, this is some text in a text area
</textarea>
In React, a <textarea> uses a value attribute instead. This way, a form using a <textarea>
can be written very similarly to a form that uses a single-line input:
classEssayFormextendsReact.Compone
nt{ constructor(props){
super(props);
this.state={value:'Please write an essay about your favorite DOM
element.'}; this.handleChange=this.handleChange.bind(this);
this.handleSubmit=this.handleSubmit.bind(this);
}
handleChange(event)
{this.setState({value:event.target.value});}
handleSubmit(event){
alert('An essay was submitted: '+this.state.value);
event.preventDefault();
}
render()
{ return(
<form onSubmit={this.handleSubmit}>
<label>
Essay:
<textarea value={this.state.value} onChange={this.handleChange} /></label>
<input type="submit" value="Submit" />
</form>
);
}
}
Notice that this.state.value is initialized in the constructor, so that the text area starts off
with some text in it.
<select>
<option value="grapefruit">Grapefruit</option>
<option value="lime">Lime</option>
<option selected value="coconut">Coconut</option>
<option value="mango">Mango</option>
</select>
Note that the Coconut option is initially selected, because of the selected attribute.
React, instead of using this selected attribute, uses a value attribute on the root select
tag. This is more convenient in a controlled component because you only need to
update it in one place. For example:
classFlavorFormextendsReact.Compone
nt{ constructor(props){
super(props);
this.state={value:'coconut'};
this.handleChange=this.handleChange.bind(this);
this.handleSubmit=this.handleSubmit.bind(this);
}
handleChange(event)
{this.setState({value:event.target.value});}
handleSubmit(event){
alert('Your favoriteflavor is: '+this.state.value);
event.preventDefault();
}
render()
{ return(
<form onSubmit={this.handleSubmit}>
<label>
Pick your favoriteflavor:
<select value={this.state.value} onChange={this.handleChange}><option
value="grapefruit">Grapefruit</option>
<option value="lime">Lime</option>
<option value="coconut">Coconut</option>
<option value="mango">Mango</option>
</select>
</label>
<input type="submit" value="Submit" />
</form>
);
}
}
Try it on CodePen
Overall, this makes it so that <input type="text">, <textarea>, and <select> all work very
similarly - they all accept a value attribute that you can use to implement a controlled
component.
Note
You can pass an array into the value attribute, allowing you to select multiple options in
a
select tag:
For example:
classReservationextendsReact.Compone
nt{ constructor(props){
super(props);
this.state={ isGoin
g:true,
numberOfGuests:2
};
this.handleInputChange=this.handleInputChange.bind(this);
}
handleInputChange(event)
{ const target =event.target;
const value =target.type==='checkbox'?
target.checked:target.value; const name = target.name;
this.setState({ [n
ame]: value});
}
render()
{ return(
<form>
<label>
Is going:
<input
name="isGoing"
type="checkbox"
checked={this.state.isGoing}
onChange={this.handleInputChange} />
</label>
<br />
<label>
Number of guests:
<input
name="numberOfGuests"
type="number"
value={this.state.numberOfGuests}
onChange={this.handleInputChange} />
</label>
</form>
);
}
}
Try it on CodePen
Note how we used the ES6 computed property name syntax to update the
state key corresponding to the given input name:
this.setState({ [n
ame]: value});
varpartialState={};
partialState[name]=value;this.setState(partialState);
Also, since setState() automatically merges a partial state into the current state, we
only needed to call it with the changed parts.
The following code demonstrates this. (The input is locked at first but becomes
editable after a short delay.)
setTimeout(function()
{ ReactDOM.createRoot(mountNode).render(<input value={null} />);
},1000);
Introduction to Redux
Redux Toolkit
Redux Toolkit is our official recommended approach for writing Redux logic. It wraps
around the Redux core, and contains packages and functions that we think are
essential for building a Redux app. Redux Toolkit builds in our suggested best
practices, simplifies most Redux tasks, prevents common mistakes, and makes it
easier to write Redux applications.
RTK includes utilities that help simplify many common use cases, including store
setup, creating reducers and writing immutable update logic, and even creating
entire "slices" of state at once.
Whether you're a brand new Redux user setting up your first project, or an experienced
user who wants to simplify an existing application, Redux Toolkit can help you make
your Redux code better.
Redux Toolkit is available as a package on NPM for use with a module bundler or in a
Node application:
# NPM
npminstall @reduxjs/toolkit
# Yarn
yarnadd @reduxjs/toolkit
Create a React Redux App
The recommended way to start new apps with React and Redux is by using the official
Redux+JS template or Redux+TS template for Create React App, which takes
advantage of Redux Toolkit and React Redux's integration with React components.
The Redux core library is available as a package on NPM for use with a module
bundler or in a Node application:
# NPM
npminstall redux
# Yarn
yarnadd redux
Basic Example
The whole global state of your app is stored in an object tree inside a single store.
The only way to change the state tree is to create an action, an object describing
what happened, and dispatch it to the store. To specify how state gets updated in
response to an action, you write pure reducer functions that calculate a new state
based on the old state and the action.
/**
* This is a reducer - a function that takes a current state value and an
* action object describing "what happened", and returns a new state value.
* A reducer's function signature is: (state, action) =>newState
*
* The Redux state should contain only plain JS objects, arrays, and primitives.
* The root state value is usually an object. It's important that you should
* not mutate the state object, but return a new object if the state changes.
*
* You can use any conditional logic you want in a reducer. In this example,
* we use a switch statement, but it's not required.
*/
functioncounterReducer(state = { value: 0 }, action)
{ switch (action.type) {
case'counter/incremented':
return { value: state.value +
1 } case'counter/
decremented': return { value:
state.value - 1 } default:
return state
}
}
Instead of mutating the state directly, you specify the mutations you want to happen
with plain objects called actions. Then you write a special function called a reducer
to decide how every action transforms the entire application's state.
In a typical Redux app, there is just a single store with a single root reducing
function. As your app grows, you split the root reducer into smaller reducers
independently operating on the different parts of the state tree. This is exactly like
how there is just one root component in a React app, but it is composed out of
many small components.
This architecture might seem like a lot for a counter app, but the beauty of this
pattern is how well it scales to large and complex apps. It also enables very powerful
developer tools, because it is possible to trace every mutation to the action that
caused it. You can record user sessions and reproduce them just by replaying every
action.
constcounterSlice = createSlice({
name: 'counter',
initialState:
{ value: 0
},
reducers:
{ incremented: state
=> {
// Redux Toolkit allows us to write "mutating" logic in reducers. It
// doesn't actually mutate the state because it uses the Immer library,
// which detects changes to a "draft state" and produces a brand new
// immutable state based off those
changes state.value += 1
},
decremented: state =>
{ state.value -= 1
}
}
})
exportconst { incremented, decremented } =
Redux Toolkit allows us to write shorter logic that's easier to read, while still
following the same Redux behavior and data flow.
Learn Redux
We have a variety of resources available to help you learn
Redux reduces the complexity of the code, by enforcing the restriction on how and
when state update can happen. This way, managing updated states is easy. We
already know about the restrictions as the three principles of Redux. Following
diagram will help you understand Redux data flow better −
Client-Server Communication
Let's expand the application so that the notes are stored in the backend. We'll use json-
server, familiar from part 2.
The initial state of the database is stored in the file db.json, which is placed in the root
of the project:
{
"notes": [
{
"content": "the app state is in redux store",
"important": true,
"id": 1
},
{
"content": "state changes are made with actions",
"important": false,
"id": 2
}
]
}
and add the following line to the scripts part of the file package.json
"scripts": {
"server": "json-server -p3001 --watch db.json",
// ...
}
Now let's launch json-server with the command npm run server.
Next, we'll create a method into the file services/notes.js, which uses axios to fetch
data from the backend
We'll change the initialization of the state in noteReducer, so that by default there
are no notes:
constnoteSlice =
createSlice({ name: 'notes',
initialState: [], // ...
})
Let's also add a new action appendNote for adding a note object:
constnoteSlice =
createSlice({ name: 'notes',
initialState: [],
reducers: {
createNote(state, action)
{ const content =
action.payload
state.push({
content,
important:
false, id:
generateId(),
})
},
toggleImportanceOf(state, action)
{ const id = action.payload
constnoteToChange = state.find(n => n.id === id)
constchangedNote = {
...noteToChange,
important: !noteToChange.important
}
A quick way to initialize the notes state based on the data received from the server is
to fetch the notes in the index.js file and dispatch an action using the appendNote
action creator for each individual note object:
// ...
import noteService from './services/notes'importnoteReducer, { appendNote } from './reducers/
noteReducer' const store = configureStore({
reducer: {
notes: noteReducer,
filter: filterReducer,
}
})
// ...
constnoteSlice =
createSlice({ name: 'notes',
initialState: [],
reducers: {
createNote(state, action)
{ const content =
action.payload
state.push({
content,
important:
false, id:
generateId(),
})
},
toggleImportanceOf(state, action)
{ const id = action.payload
constnoteToChange = state.find(n => n.id === id)
constchangedNote = {
...noteToChange,
important: !noteToChange.important
}
// ...
import noteService from './services/notes'
import noteReducer, { setNotes } from './reducers/
noteReducer' const store = configureStore({
reducer: {
notes: noteReducer,
filter: filterReducer,
}
})
noteService.getAll().then(notes =>
store.dispatch(setNotes(notes)))
NB: why didn't we use await in place of promises and event handlers (registered to
then- methods)?
Await only works inside async functions, and the code in index.js is not inside a
function, so due to the simple nature of the operation, we'll abstain from using async
this time.
We do, however, decide to move the initialization of the notes into the App
component, and, as usual, when fetching data from a server, we'll use the effect hook.
Now the variable dispatch we define in the App component, which practically is the
dispatch function of the redux store, has been added to the array useEffect receives
as a parameter. If the value of the dispatch variable would change during runtime,
the effect would be executed again. This however cannot happen in our application,
so the warning is unnecessary.
Another way to get rid of the warning would be to disable ESlint on that line:
Generally disabling ESlint when it throws a warning is not a good idea. Even though
the ESlint rule in question has caused some arguments, we will use the first solution.
More about the need to define the hooks dependencies in the react documentation.
We can do the same thing when it comes to creating a new note. Let's expand
the code communicating with the server as follows:
constbaseUrl = 'http://localhost:3001/
constcreateNew = async (content) =>{ const object = { content, important: false } const response = await
axios.post(baseUrl, object) return response.data}
export default
{ getAll,
createNew,
}
return (
<form onSubmit={addNote}>
<input name="note" />
<button type="submit">add</button>
</form>
)
}
createNote(state, action)
{ state.push(action.payload)
}
Changing the importance of notes could be implemented using the same principle,
by making an asynchronous method call to the server and then dispatching an
appropriate action.
UNIT – IV
Web development creates web applications using servers. We can use a web server
or machine server like a CPU. The Web server or virtual server requires web
application using technology. Web development requires server-side programming
language or technology. Mostly Java, PHP, and other server-side languages require
for web development.
Java web development creates a server-side website and web application. The
majority of Java web apps do not execute on the server directly. A web container on
the server hosts Java web applications.
For Java web applications, the container acts as a runtime environment. What the Java
Virtual Machine is for locally running Java applications, the container is for Java web
applications.
JVM is used to run the container itself.
Java distinguishes between two types of containers: web and Java EE. Additional
functionality, such as server load distribution, can be supported by a container. A
web container supports Java servlets and JSP ( JavaServer Pages ). In Java
technology, Tomcat is a common web container.
A web container is usually a minimal need for web frameworks. GWT, Struts,
JavaServer Faces, and the Spring framework are common Java web frameworks.
Servlets are at the heart of most modern Java web frameworks.
Functions of Java Web Development
Java web development creates applications and websites using static and dynamic
resources. The static resource refers to HTML pages with images, and a dynamic
resource refers to classes, jars, Servlet, and JSP. Java web development uses several
packages, files, and online links. Java web development requires web archive files
known as a WAR files.
Java web development works on three main factors. These development factors show
below.
The above three factors create, update, remove, display and operate data or
information.
Front-end web development: The front-end technology interacts with the user and
Java interface. It helps to insert and submit data. Java web development uses
JavaServer Pages or JSP for the front-end form or table.
Backend web development: The backend technology maintains and updates data of
the database. Java uses Servlet, spring, and other advanced technology.
Database management handles or fetches data from the database using the Java
database driver. The Java technology uses JDBC, Hibernate to handle the database.
Servlet, filter, filter chain, servlet config, and other interfaces are available in the
javax. Servlet package. The capabilities of servers that host apps are increased by
using Servlet.
Servlets are useful for various tasks, including collecting data via web page forms,
presenting data from a database or any other third-party source, etc.
Servlets are Java programs that run on a web application and send client requests to
databases or servers. After talking with the database, the servlets help process the
client's request and provide results.
The JSP technology pieces code to control web information and moves dynamically.
A JSP page comprises static data written in HTML, WML, XML, and other markup
languages.
Special JSP tags simplify Java code into HTML pages, making web development
user- friendly.
The JSP technology allows embedding bits of servlet code in a text-based document.
JSP is a popular Java EE technology that allows programmers to create complex
dynamic web pages quickly.
Within a Java program, the JDBC driver allows to perform the following tasks:
JDBC is a set of methods and queries for accessing databases written in Java.
Clients can use web applications using JDBC drivers to update any information in
the database.
JDBC drivers connect to databases in four ways: JDBC-ODBC Bridge Driver, Network
Protocol Driver, Native Driver, and Thin Driver.
For web development, the Java Persistence API employs object-relational mapping.
This mapping connects a database to an object-oriented model. Java Persistence
makes it simple to manage relational data in Java web applications. The Java
Persistence API aids in database data management. This API sends data to a
database and retrieves data from it regularly.
Large amounts of code, proprietary frameworks, and other files are not required. JPA
gives a straightforward technique of database communication. A database is an
object-relational approach for interacting with Java web development. JPA is a set of
lightweight classes and methods for interacting with databases.
The data sources and server-side event handlers are coupled to the User Interface
widgets. JSF aids in the creation and maintenance of web applications by
minimizing the time and effort required.
JSTL includes iterator and conditional tags for controlling flow. These tags work for
manipulating XML documents and tags for internationalization. This JSTL is also
used for SQL database access and tags for frequently used functions.
The Java Message Service (JMS) API provides a strong tool for resolving
enterprise computing problems by integrating Java technology and enterprise
messaging.
Enterprise messaging enables the secure and flexible sharing of business data. The
JMS API extends this by providing a uniform API and provider framework that
facilitates the building of portable message-based Java applications.
Conclusion
Java programming language is easy to handle and programmer's first choice
for web development. Java web development has basic rules apart from
operating data. This technology does not need an extra operation or advanced
programming.
Java web development creates multiple web applications using a single type of code
on multiple pages. If we know the working procedure, then JAVA technology
develops any application.
Editions of Java
Each edition of Java has different capabilities. There are three editions of Java:
Java Platform
Java Platform is a collection of programs. It helps to develop and run a program
written in the Java programming language. Java Platform includes an execution
engine, a compiler and set of libraries. Java is a platform-independent language.
Features of Java
● Simple: Java is a simple language because its syntax is simple, clean, and
easy to understand. Complex and ambiguous concepts of C++ are either
eliminated or re- implemented in Java. For example, pointer and operator
overloading are not used in Java.
● Object-Oriented: In Java, everything is in the form of the object. It means
it has some data and behavior. A program must have at least one class
and object.
● Robust: Java makes an effort to check error at run time and compile time. It uses
a
strong memory management system called garbage collector. Exception
handling and garbage collection features make it strong.
● Secure: Java is a secure programming language because it has no explicit
pointer and programs runs in the virtual machine. Java contains a security
manager that defines the access of Java classes.
● Platform-Independent: Java provides a guarantee that code writes once
and run anywhere. This byte code is platform-independent and can be run
on any machine.
Class: A class is a template or blueprint or prototype that defines data members and
methods of an object. An object is the instance of the class. We can define a class
by using the class keyword.
Object: An object is a real-world entity that can be identified distinctly. For example, a
desk, a circle can be considered as objects. An object has a unique behavior, identity,
and state.
Data fields with their current values represent the state of an object (also
known as its properties or attributes).
Java Variables
A variable is a container which holds the value while the Java program is
executed. A variable is assigned with a data type.
Variable is a name of memory location. There are three types of variables in java:
local, instance and static.
There are two types of data types in Java: primitive and non-primitive.
Variable
A variable is the name of a reserved area allocated in memory. In other words, it is a
name of the memory location. It is a combination of "vary + able" which means its
value can be changed.
● local variable
● instance variable
● static variable
1) Local Variable
A variable declared inside the body of the method is called local variable. You can use
this variable only within that method and the other methods in the class aren't even
aware that the variable exists.
2) Instance Variable
A variable declared inside the class but outside the body of the method, is called an
instance variable. It is not declared as static.
It is called an instance variable because its value is instance-specific and is not shared
among
instances.
3) Static variable
A variable that is declared as static is called a static variable. It cannot be local. You
can create a single copy of the static variable and share it among all the instances
of the class. Memory allocation for static variables happens only once when the
class is loaded in the memory.
1. public class A
2. {
3. static int m=100;//static variable
4. void method()
5. {
6. int n=90;//local variable
7. }
8.public static void main(String args[])
9. {
10.int data=50;//instance variable
11. }
12. }//end of class
Output:
20
Java Variable Example: Widening
Output:
10
10.0
Java Variable Example: Narrowing (Typecasting)
Output:
10.5
10
Java Variable Example: Overflow
1. class Simple{
2. public static void main(String[] args){
3. //Overflow
4. int a=130;
5. byte b=(byte)a;
6. System.out.println(a);
7. System.out.println(b);
8. }}
Output:
130
-126
Java Variable Example: Adding Lower Type
1. class Simple{
2. public static void main(String[] args){
3. byte a=10;
4. byte b=10;
5. //byte c=a+b;//Compile Time Error: because a+b=20 will be int
6. byte c=(byte)(a+b);
7. System.out.println(c);
8. }}
Output:
20
In this page, we will learn about the basics of OOPs. Object-Oriented Programming is
a paradigm that provides many concepts, such as inheritance, data binding,
polymorphism, etc.
● Object
● Class
● Inheritance
● Polymorphism
● Abstraction
● Encapsulation
Apart from these concepts, there are some other terms which are used in Object-
Oriented design:
● Coupling
● Cohesion
● Association
● Aggregation
● Composition
Object
Any entity that has state and behavior is known as an object. For example, a chair, pen,
table, keyboard, bike, etc. It can be physical or logical.
Example: A dog is an object because it has states like color, name, breed, etc. as well
as behaviors like wagging the tail, barking, eating, etc.
Class
Collection of objects is called class. It is a logical entity.
A class can also be defined as a blueprint from which you can create an individual
object. Class doesn't consume any space.
Inheritance
When one object acquires all the properties and behaviors of a parent object, it is
known as inheritance. It provides code reusability. It is used to achieve runtime
polymorphism.
Polymorphism
Another example can be to speak something; for example, a cat speaks meow,
dog barks woof, etc.
Abstraction
Encapsulation
Binding (or wrapping) code and data together into a single unit are known as
encapsulation. For example, a capsule, it is wrapped with different medicines.
Coupling
Cohesion
Association
Association represents the relationship between the objects. Here, one object can be
associated with one object or many objects. There can be four types of association
between the objects:
● One to One
● One to Many
● Many to One, and
● Many to Many
Let's understand the relationship with real-time examples. For example, One country
can have one prime minister (one to one), and a prime minister can have many
ministers (one to many). Also, many MP's can have one prime minister (many to
one), and many ministers can have many departments (many to many).
Composition
3) OOPs provides the ability to simulate real-world event much more effectively.
We can provide the solution of real word problem if we are using the Object-
Oriented Programming language.
In this section, we will discuss the MVC Architecture in Java, alongwith its advantages
and disadvantages and examples to understand the implementation of MVC in Java.
The model designs based on the MVC architecture follow MVC design pattern.
The application logic is separated from the user interface while designing the
software using model designs.
The MVC pattern architecture consists of three layers:
● Model: It represents the business layer of application. It is an object to carry the data that
can also contain the logic to update controller if data is changed.
● View: It represents the presentation layer of application. It is used to visualize the data
that the model contains.
● Controller: It works on both the model and view. It is used to manage the flow of
application, i.e. data flow in the model object and to update the view whenever
data is changed.
In Java Programming, the Model contains the simple Java classes, the View used
to display the data and the Controller contains the servlets. Due to this separation
the user requests are processed as follows:
1. A client (browser) sends a request to the controller on the server side, for a page.
2. The controller then calls the model. It gathers the requested data.
3. Then the controller transfers the data retrieved to the view layer.
4. Now the result is sent back to the browser (client) by the view.
● MVC has the feature of scalability that in turn helps the growth of application.
● The components are easy to maintain because there is less dependency.
● A model can be reused by multiple views that provides reusability of code.
● The developers can work with the three layers (Model, View, and Controller) simultaneously.
● Using MVC, the application becomes more understandable.
● Using MVC, each layer is maintained separately therefore we do not require to deal
with massive code.
● The extending and testing of application is easier.
To implement MVC pattern in Java, we are required to create the following three
classes.
33.
34. }
The above code simply consists of getter and setter methods to the Employee
Let's take an example where we create a view using the EmployeeView class.
EmployeeView.java
Controller Layer
The controller layer gets the user requests from the view layer and processes them,
with the necessary validations. It acts as an interface between Model and View. The
requests are then sent to model for data processing. Once they are processed, the data
is sent back to the controller and then displayed on the view.
Let's consider the following code snippet that creates the controller using the
EmployeeController class.
EmployeeController.java
The following example displays the main file to implement the MVC architecture.
Here, we are using the MVCMain class.
MVCMain.java
1. // main class
2. public class MVCMain {
3. public static void main(String[] args) {
4.
5. // fetching the employee record based on the employee_id from the database
6. Employee model = retriveEmployeeFromDatabase();
7.
8. // creating a view to write Employee details on console
9. EmployeeView view = new EmployeeView();
10.
11. EmployeeController controller = new EmployeeController(model, view);
12.
13. controller.updateView();
14.
15. //updating the model data
16.controller.setEmployeeName("Nirnay");
17. System.out.println("\n Employee Details after updating: ");
18.
19. controller.updateView();
20. }
21.
22.private static Employee retriveEmployeeFromDatabase(){
23. Employee Employee = new Employee();
24.Employee.setName("Anu");
25. Employee.setId("11");
26.Employee.setDepartment("Salesforce");
27. return Employee;
28. }
29. }
The MVCMain class fetches the employee data from the method where we have
entered the values. Then it pushes those values in the model. After that, it initializes
the view (EmployeeView.java). When view is initialized, the Controller
(EmployeeController.java) is invoked and bind it to Employee class and
EmployeeView class. At last the updateView() method (method of controller) update
the employee details to be printed to the console.
Output:
Employee Details:
Name: Anu
Employee ID: 11
Employee Department: Salesforce
In this way, we have learned about MVC Architecture, significance of each layer and its
implementation in Java.
A Spring MVC provides an elegant solution to use MVC in spring framework by the
help of DispatcherServlet. Here, DispatcherServlet is a class that receives the
incoming request and maps it to the right resource such as controllers, models, and
views.
Spring Web Model-View-Controller
● Model - A model contains the data of the application. A data can be a single object
or a collection of objects.
● Controller - A controller contains the business logic of an application. Here, the
@Controller annotation is used to mark the class as the controller.
● View - A view represents the provided information in a particular format.
Generally, JSP+JSTL is used to create a view page. Although spring also
supports other view technologies such as Apache Velocity, Thymeleaf and
FreeMarker.
● Front Controller - In Spring Web MVC, the DispatcherServlet class works as the front
controller. It is responsible to manage the flow of the Spring MVC application.
● Separate roles - The Spring MVC separates each role, where the model object,
controller, command object, view resolver, DispatcherServlet, validator, etc. can be
fulfilled by a specialized object.
● Light-weight - It uses light-weight servlet container to develop and deploy your application.
● Powerful Configuration - It provides a robust configuration for both framework
and application classes that includes easy referencing across contexts, such as
from web controllers to business objects and validators.
● Rapid development - The Spring MVC facilitates fast and parallel development.
● Reusable business code - Instead of creating new objects, it allows us to use the
existing business objects.
● Easy to test - In Spring, generally we create JavaBeans classes that enable you to inject
test data using the setter methods.
● Flexible Mapping - It provides the specific annotations that easily redirect the page.
● Load the spring jar files or add dependencies in the case of Maven
● Create the controller class
● Provide the entry of controller in the web.xml file
● Define the bean in the separate XML file
● Display the message in the JSP page
● Start the server and deploy the project
Download Link:Download all the jar files for spring including JSP and JSTL.
If you are using Maven, you don't need to add jar files. Now, you need to add
maven dependency to the pom.xml file.
pom.xml
To create the controller class, we are using two annotations @Controller and
@RequestMapping.
The @Requestmapping annotation is used to map the class with the specified URL
name.
HelloController.java
1. package com.javatpoint;
2. import org.springframework.stereotype.Controller;
3. import org.springframework.web.bind.annotation.RequestMapping;
4. @Controller
5. public class HelloController {
6. @RequestMapping("/")
7. public String display()
8. {
9. return "index";
10. }
11. }
In this xml file, we are specifying the servlet class DispatcherServlet that acts as the
front controller in Spring Web MVC. All the incoming request for the html file will be
forwarded to the DispatcherServlet.
web.xml
spring-servlet.xml
This is the simple JSP page, displaying the message returned by the Controller.
index.jsp
1. <html>
2. <body>
3. <p>Welcome to Spring MVC Tutorial</p>
4. </body>
5. </html>
Output:
RESTful API using Spring Framework
There’s a much larger discussion to be had about how REST fits in the world
of microservices, but — for this tutorial — let’s just look at building RESTful
services.
Why REST? REST embraces the precepts of the web, including its architecture,
benefits, and everything else. This is no surprise given its author, Roy Fielding, was
involved in probably a dozen specs which govern how the web operates.
What benefits? The web and its core protocol, HTTP, provide a stack of features:
instantly have both client and server technology at their
means to build:
● Backwards compatible APIs
● Evolvable APIs
● Securable services
● A spectrum of stateless to stateful services
What’s important to realize is that REST, however ubiquitous, is not a standard, per
se, but an approach, a style, a set of constraints on your architecture that can help
you build web- scale systems. In this tutorial we will use the Spring portfolio to build
a RESTful service while leveraging the stackless features of REST.
Getting Started
As we work through this tutorial, we’ll use Spring Boot. Go to Spring Initializr and add
the following dependencies to a project:
● JPA
● H2
Change the Name to "Payroll" and then choose "Generate Project". A .zip will
download. Unzip it. Inside you’ll find a simple, Maven-based project including a
pom.xml build file (NOTE: You can use Gradle. The examples in this tutorial will be
Maven-based.)
Spring Boot can work with any IDE. You can use Eclipse, IntelliJ IDEA, Netbeans, etc.
The Spring Tool Suite is an open-source, Eclipse-based IDE distribution that provides
a superset of the Java EE distribution of Eclipse. It includes features that make
working with Spring applications even easier. It is, by no means, required. But
consider it if you want that extra oomph for your keystrokes. Here’s a video
demonstrating how to get started with STS and Spring Boot. This is a general
introduction to familiarize you with the tools.
Big picture: We’re going to create a simple payroll service that manages the
employees of a company. We’ll store employee objects in a (H2 in-memory)
database, and access them (via something called JPA). Then we’ll wrap that with
something that will allow access over the internet (called the Spring MVC layer).
importjava.util.Objects;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.Id;
@Entity
classEmployee{
private@Id@GeneratedValueLong id;
privateString name;
privateString role;
Employee(){}
Employee(String name,String role){
this.name = name;
this.role= role;
}
publicLonggetId()
{ returnthis.id;
}
publicStringgetName()
{ returnthis.name;
}
publicStringgetRole()
{ returnthis.role;
}
publicvoidsetId(Long id)
{ this.id = id;
}
publicvoidsetName(String name)
{ this.name = name;
}
publicvoidsetRole(String role)
{ this.role= role;
}
@Override
publicbooleanequals(Object
o){
if(this== o)
returntrue;
if(!(o instanceofEmployee))
returnfalse;
Employeeemployee=(Employee)
o;
returnObjects.equals(this.id, employee.id)&&Objects.equals(this.name, employee.name)
&&Objects.equals(this.role,employee.role);
}
@Override
publicinthashCode(){
returnObjects.hash(this.id,this.name,this.role);
}
@Override
publicStringtoString(){
return"Employee{"+"id="+this.id +", name='"+this.name +'\''+", role='"+this.role+'\''+'}';
}
}
● @Entity is a JPA annotation to make this object ready for storage in a JPA-
based data store.
● id, name, and role are attributes of our Employee domain object. id is marked
with more JPA annotations to indicate it’s the primary key and automatically
populated by the JPA provider.
● a custom constructor is created when we need to create a new instance, but
don’t yet have an id.
With this domain object definition, we can now turn to Spring Data JPA to handle the
tedious database interactions.
Spring Data JPA repositories are interfaces with methods supporting creating,
reading, updating, and deleting records against a back end data store. Some
repositories also support data paging, and sorting, where appropriate. Spring Data
synthesizes implementations based on conventions found in the naming of the
methods in the interface.
There are multiple repository implementations besides JPA. You can use Spring Data MongoDB,
Spring Data GemFire, Spring Data Cassandra, etc. For this tutorial, we’ll stick with JPA.
Spring makes accessing data easy. By simply declaring the following EmployeeRepository
interface we automatically will be able to
nonrest/src/main/java/payroll/EmployeeRepository.java
package payroll;
importorg.springframework.data.jpa.repository.JpaRepository;
interfaceEmployeeRepositoryextendsJpaRepository<Employee,Lon
g>{
}
To get all this free functionality, all we had to do was declare an interface which
extends
Spring Data JPA’s JpaRepository, specifying the domain type as Employee and the id type
as
Long.
Spring Data’s repository solution makes it possible to sidestep data store specifics and
instead solve a majority of problems using domain-specific terminology.
nonrest/src/main/java/payroll/PayrollApplication.java
package payroll;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
publicclassPayrollApplication{
publicstaticvoidmain(String...args)
{ SpringApplication.run(PayrollApplication.class,args);
}
}
nonrest/src/main/java/payroll/LoadDatabase.java
package payroll;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importorg.springframework.boot.CommandLineRunner;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
@Configuration
classLoadDatabase{
privatestaticfinalLogger log
=LoggerFactory.getLogger(LoadDatabase.class); @Bean
CommandLineRunnerinitDatabase(EmployeeRepository repository){
returnargs->{
log.info("Preloading "+repository.save(newEmployee("Bilbo Baggins","burglar")));
log.info("Preloading "+repository.save(newEmployee("Frodo Baggins","thief")));
};
}
}
What happens when it gets loaded?
● Spring Boot will run ALL CommandLineRunner beans once the application
context is loaded.
● This runner will request a copy of the EmployeeRepository you just created.
● Using it, it will create two entities and store them.
This isn’t the whole log, but just the key bits of preloading data. (Indeed, check out the
whole console. It’s glorious.)
nonrest/src/main/java/payroll/EmployeeController.java
package payroll;
importjava.util.List;
importorg.springframework.web.bind.annotation.DeleteMapping;
importorg.springframework.web.bind.annotation.GetMapping;
importorg.springframework.web.bind.annotation.PathVariable;
importorg.springframework.web.bind.annotation.PostMapping;
importorg.springframework.web.bind.annotation.PutMapping;
importorg.springframework.web.bind.annotation.RequestBody;
importorg.springframework.web.bind.annotation.RestController;
@RestController
classEmployeeController{
privatefinalEmployeeRepository repository;
EmployeeController(EmployeeRepository repository)
{ this.repository= repository;
}
// Aggregate root
// tag::get-aggregate-root[]
@GetMapping("/
employees")
List<Employee>all()
{ returnrepository.findAll();
}
// end::get-aggregate-root[]
@PostMapping("/employees")
EmployeenewEmployee(@RequestBodyEmployeenewEmployee)
{ returnrepository.save(newEmployee);
}
// Single item
@GetMapping("/employees/{id}")
Employeeone(@PathVariableLong id){
returnrepository.findById(id)
.orElseThrow(()->newEmployeeNotFoundException(id));
}
@PutMapping("/employees/{id}")
EmployeereplaceEmployee(@RequestBodyEmployeenewEmployee,@PathVariableLong id){
returnrepository.findById(id)
.map(employee
->{ employee.setName(newEmployee.getName());
employee.setRole(newEmployee.getRole());
returnrepository.save(employee);
})
.orElseGet(()-
>{ newEmployee.setId(id);
returnrepository.save(newEmployee)
;
});
}
@DeleteMapping("/employees/{id}")
voiddeleteEmployee(@PathVariableLong id)
{ repository.deleteById(id);
}
}
● @RestController indicates that the data returned by each method will be written
straight into the response body instead of rendering a template.
● An EmployeeRepository is injected by constructor into the controller.
● We have routes for each operation (@GetMapping, @PostMapping, @PutMapping and
@DeleteMapping, corresponding to HTTP GET, POST, PUT, and DELETE calls).
(NOTE: It’s useful to read each method and understand what they do.)
● EmployeeNotFoundException is an exception used to indicate when an employee is
looked up but not found.
nonrest/src/main/java/payroll/EmployeeNotFoundException.java
package payroll;
classEmployeeNotFoundExceptionextendsRuntimeExceptio
n{ EmployeeNotFoundException(Long id){
super("Could not find employee "+ id);
}
}
When an EmployeeNotFoundException is thrown, this extra tidbit of Spring MVC
configuration is used to render an HTTP 404:
nonrest/src/main/java/payroll/EmployeeNotFoundAdvice.java
package payroll;
importorg.springframework.http.HttpStatus;
importorg.springframework.web.bind.annotation.ControllerAdvice;
importorg.springframework.web.bind.annotation.ExceptionHandler;
importorg.springframework.web.bind.annotation.ResponseBody;
importorg.springframework.web.bind.annotation.ResponseStatus;
@ControllerAdvice
classEmployeeNotFoundAdvice{
@ResponseBody
@ExceptionHandler(EmployeeNotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
StringemployeeNotFoundHandler(EmployeeNotFoundException ex)
{ returnex.getMessage();
}
}
● @ResponseBody signals that this advice is rendered straight into the response
body.
● @ExceptionHandler configures the advice to only respond if an
EmployeeNotFoundException
is thrown.
● @ResponseStatus says to issue an HttpStatus.NOT_FOUND, i.e. an HTTP 404.
● The body of the advice generates the content. In this case, it gives the
message of the exception.
To launch the application, either right-click the public static void main in PayRollApplication
and select Run from your IDE, or:
$ curl -v localhost:8080/employees
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> GET /employees HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Thu, 09 Aug 2018 17:58:00 GMT
<
* Connection #0 to host localhost left intact
[{"id":1,"name":"Bilbo Baggins","role":"burglar"},{"id":2,"name":"Frodo Baggins","role":"thief"}]
You get…
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> GET /employees/99 HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 404
< Content-Type: text/plain;charset=UTF-8
< Content-Length: 26
< Date: Thu, 09 Aug 2018 18:00:56 GMT
<
* Connection #0 to host localhost
left intact Could not find employee 99
This message nicely shows an HTTP 404 error with the custom message Could not
find employee 99.
If you are using Windows Command Prompt to issue cURL commands, chances are
the below command won’t work properly. You must either pick a terminal that
support single quoted arguments, or use double quotes and then escape the ones
inside the JSON.
{"id":3,"name":"Samwise Gamgee","role":"gardener"}
You can update the user. Let’s change his role.
This is all well and good, but do we have a RESTful service yet? (If you didn’t catch the
hint, the answer is no.)
What’s missing?
In fact, what we have built so far is better described as RPC (Remote Procedure Call).
That’s because there is no way to know how to interact with this service. If you
published this today, you’d also have to write a document or host a developer’s portal
somewhere with all the details.
This statement of Roy Fielding’s may further lend a clue to the difference between
REST
and RPC:
What needs to be done to make the REST architectural style clear on the notion that
hypertext is a constraint? In other words, if the engine of application state (and
hence the API) is not being driven by hypertext, then it cannot be RESTful and cannot
be a REST API. Period. Is
there some broken manual somewhere that needs to be fixed?
— Roy Fielding
https://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
The side effect of NOT including hypermedia in our representations is that clients
MUST hard code URIs to navigate the API. This leads to the same brittle nature
that predated the rise of e-commerce on the web. It’s a signal that our JSON
output needs a little help.
This tiny library will give us the constructs to define a RESTful service and then
render it in an acceptable format for client consumption.
Employeeemployee=repository.findById(id)//
.orElseThrow(()->newEmployeeNotFoundException(id));
returnEntityModel.of(employee,//
linkTo(methodOn(EmployeeController.class).one(id)).withSelfRel(),
linkTo(methodOn(EmployeeController.class).all()).withRel("employees")
);
}
This tutorial is based on Spring MVC and uses the static helper methods from
WebMvcLinkBuilder to build these links. If you are using Spring WebFlux in your project,
you must instead use WebFluxLinkBuilder.
This is very similar to what we had before, but a few things have changed:
What do we mean by "build a link"? One of Spring HATEOAS’s core types is Link. It
includes a URI and a rel (relation). Links are what empower the web. Before the World
Wide
Web, other document systems would render information or links, but it was the linking
of documents WITH this kind of relationship metadata that stitched the web together.
Roy Fielding encourages building APIs with the same techniques that made the
web successful, and links are one of them.
If you restart the application and query the employee record of Bilbo, you’ll get a
slightly different response than earlier:
Curling prettier
When your curl output gets more complex it can become hard to read. Use this or
other tips to prettify the json returned by curl:
# The indicated part pipes the output to json_pp and asks it to make your JSON pretty. (Or use whatever
tool you like!)
# v v
curl -v localhost:8080/employees/1 | json_pp
RESTful representation of a single employee
{ "id":1,
"name":"Bilbo Baggins",
"role":"burglar", "_links":{
"self":{ "href":"http://localhost:8080/
employees/1"
},
"employees":{ "href":"http://localhost:
8080/employees"
}
}
}
This decompressed output shows not only the data elements you saw earlier (id,
name and role), but also a _links entry containing two URIs. This entire document is
formatted using HAL.
HAL is a lightweight mediatype that allows encoding not just data but also
hypermedia controls, alerting consumers to other parts of the API they can navigate
toward. In this case, there is a "self" link (kind of like a this statement in code) along
with a link back to the aggregate root.
To make the aggregate root ALSO more RESTful, you want to include top level links
while ALSO including any RESTful components within.
So we turn this
returnCollectionModel.of(employees,linkTo(methodOn(EmployeeController.class).all()).withSelfRel());
}
Wow! That method, which used to just be repository.findAll(), is all grown up! Not to
worry. Let’s unpack it.
Project Object Model (POM) is an XML file that contains the java project
details, configurations, and settings required for maven to build the project.
The pom.xml file is present in the root of the java project directory. Primarily it contains
the project dependencies.
So when you build the code with maven, it reads the pom.xml file and downloads all
the dependencies from the maven repository. Dependencies could be third-party
libraries from the public Maven Repository or common libraries hosted within an
organization’s private maven repository. You can compare it with Python pip, Nodejs
npm, or Ruby gems
By default, maven uses the public repository but if you have in-house private maven
repositories, you configure custom maven repository URLs in settings.xml maven
configuration present in the maven installation directory. for example, /opt/apache-
maven-3.8.6/conf/settings.xml
Maven Prerequisites
For maven to work you need the following installed on your system
1. Java JDK
2. Maven
To install and configure JDK and maven, follow the maven installation guide.
The code base has the following important folders and files. It is common in real-time
project code as well.
1. /src folder: This folder contains the source code based on the java spring framework.
2. /src/tests folder: This folder contains the unit tests & integration tests of the code under the
tests folder.
3. pom.xml file: It contains all the dependencies required for the pet-clinic applications. As it
is an open-source application, all the dependencies are from the public maven repository.
To build the project, cd into the project root directory. In my case its spring-petclinic. It
should contain the pom.xml file
cd spring-petclinic
From a CI perspective, we just have to build, test, and package the project to
create a deployable artifact(jar file)
So commonly in the CI process, we build and package the java projects using the
following maven command. It compiles the code, tests it, package it as a jar file in the
target folder, and will also install(copy) the jar package in the local .m2 repository.
After executing the above command, you will see a folder named target in the root
directory. Inside the target directory, you will see the packaged jar file as shown below.
We call it a deployable artifact.
Even time you run mvn clean install, it deletes target directory and packages from the
local .m2
repository and replaces it with the latest build files and packages.
If you want to skip the test during build, you can add the -Dmaven.test.skip=true parameter
as shown below.
Now that you have understood how to build a java project using maven, let’s look
into the maven lifecycle. Few commands we don’t have to use in the CI pipelines.
However, it is good to know about the maven lifecycle commands and you can use
them depending on your CI pipeline requirement.
mvn validate validates the maven project. It downloads all the required dependencies to
the
local .m2 repository.
mvn compile compiles the java project. It runs validate first and then compiles the code.
mvn test command runs the unit test that is part ofthe code. You can test classes
individually, methods individually, or add patterns to run tests on all methods that
match the pattern.
mvn package commands compile the code, test it and finally package it in the required
format (jar or war)
mvn verify command runs all the phases explained before in order and runs
checks on integration tests and checkstyles if they are defined in the project.
mvn install command installs the packaged code in the local maven repository.
mvn deploy command, deploys the package to the remote maven repository. When you
run deploy, it first runs validate, compile, test, package, verify, install, and then finally
deploys the package to the remote maven repository.
If maven doesn’t support the Java version, you will get the above error.
To rectify it, install the latest maven version that supports the installed Java version.
If you try to execute the maven command from the location where there is no pom.xml
file,
you will get the following error.
The goal you specified requires a project to execute but there is no POM in this directory
To rectify this, execute the maven command from the folder that has the pom.xml file.
Yes. By default, the mvn package command runs the test. However, you can add the flag -
Dmaven.test.skip to skip the tests.
mvn test runs all the unit tests for the java project.
Conclusion
As a Devops engineer, it is very important to understand the java build process if you
are working on deploying java projects.
UNIT – V
Databases & Deployment
empId { empName, skill, dependent, contract, project}, Here, empId can determine
or defines the values of fields empName, dependent, contract and employee project
Username Tables:
userName dateCreate here if we can know the userName like we have email
account if we know the email Id of user then there is possibility to find the date
when account was created.
Multivalued Dependency:
Employee Table:
The attributes like empName, skill, dependent, contract, project all are independent of
each other means not depends on one another but depends upon empId example
empName can determine skill, or any other employee attribute because there can be or
even more than one employee with same name or constraints.
relate upon the userName only dateCreate when there is not sufficient to find
anything. b)
Minimal key is the minimum no of attributes which can find out other attributes of a
table
i.e., a primary key or the candidate key. In the Context of Employee Table:
userName dateCreate
Considering the enrollment table which has the attributes like: enrollment Id,
Name of employee, field in which employee enrolled and date
c)
Employee table is not in normalize or the normal forms. Because the Attributes in it
like: Skill, project, contract and dependent attributes might have one or more values.
According to the 1NF principle every field must contain the atomic values if they
don’t have the atomic value. There is need to decompose the table since the table
should have the 1 value in each field.
It is normalizing one Since it has two fields[UserName and dateCreate] in which both
have atomic values or data , is fully functional dependent, no transition dependency
etc.
d)
Every field must contain the single atomic value and the attribute like: skill, project,
contract and dependent attribute has one or more than the decompose table so that
the each and every field has atomic value which will increase the number of tuples
in the table name “employee”.
nd
In the 2 NF:
st
Each table should be at 1 NF.
● There should not be any functional dependency. So, in this case, after it is
st nd
in 1 NF table is in 2 NF Since the empId can find out all the attributes of
the employees.
rd
In 3 NF:
nd
● Table should be at 2 NF Form.
● There should not be any transitive dependency in the table in which the non-
primitive attribute can find another non-primitive attribute i.e., empName, skill,
dependent, project is the non-primitive attribute and they cannot find the each
other but the main prime attribute can or able to find all of them.
In BCNF:
rd
● Table should be at 3 NF.
● The LHS Side of attribute should have the candidate key or the super key. • So,
In this case empId { empName, skill, dependent, contract, project}, The
attribute empId is a primary key and can find out all other attributes.
th
In the 4 NF:
So, in current Employee Table context, Employee might contain the multivalued
dependency I.e.: skills, projects [0 or more], dependency [0 or more] and contract [1
or more]. So, there is lots of multivalued attributes or dependency on the empId
which might increase the no of entries in the table which might increase the no of
st
entries in the table after making it to 1 NF.
th
In the case of making the Employee table in 4 NF, it will decompose the
employee table into following tables: empId { empName, skill, dependent,
contract, project}
EmployeeSkils
empId,
empName, skill
EmployeeDependency empId, empName, dependent EmployeeContract empId,
empName,
contract
SQL Tutorial
SQL tutorial provides basic and advanced concepts of SQL. Our SQL tutorial is
designed for both beginners and professionals.
Suppose you want to perform the queries of SQL language on the stored data in the
database. You are required to install any database management system in your
systems, for example, Oracle, MySQL, MongoDB, PostgreSQL, SQL Server, DB2, etc.
What is SQL?
SQL is a short-form of the structured query language, and it is pronounced as S-Q-L or
sometimes as See-Quell.
This database language is mainly designed for maintaining the data in relational
database management systems. It is a special tool used by data professionals for
handling structured data (data which is stored in the form of tables). It is also
designed for stream processing in RDSMS.
You can easily create and manipulate the database, access and modify the table
rows and columns, etc. This query language became the standard of ANSI in the
year of 1986 and ISO in the year of 1987.
If you want to get a job in the field of data science, then it is the most important
query language to learn. Big enterprises like Facebook, Instagram, and LinkedIn, use
SQL for storing the data in the back-end.
Why SQL?
Nowadays, SQL is widely used in data science and analytics. Following are the
reasons which explain why it is widely used:
● The basic use of SQL for data professionals and SQL users is to insert, update, and
delete the data from the relational database.
● SQL allows the data professionals and users to retrieve the data from the relational
database
management systems.
● It also helps them to describe the structured data.
● It allows SQL users to create, drop, and manipulate the database and its tables.
● It also helps in creating the view, stored procedure, and functions in the relational database.
● It allows you to define the data and modify that stored data in the relational database.
● It also allows SQL users to set the permissions or constraints on table columns, views,
and stored procedures.
History of SQL
"A Relational Model of Data for Large Shared Data Banks" was a paper which was
published by the great computer scientist "E.F. Codd" in 1970.
The IBM researchers Raymond Boyce and Donald Chamberlin originally developed
the SEQUEL (Structured English Query Language) after learning from the paper given
by E.F. Codd. They both developed the SQL at the San Jose Research laboratory of
IBM Corporation in 1970.
At the end of the 1970s, relational software Inc. developed their own first SQL using
the concepts of E.F. Codd, Raymond Boyce, and Donald Chamberlin. This SQL was
totally based on RDBMS. Relational Software Inc., which is now known as Oracle
Corporation, introduced the Oracle V2 in June 1979, which is the first
implementation of SQL language. This Oracle V2 version operates on VAX
computers.
Process of SQL
When we are executing the command of SQL on any Relational database
management system, then the system automatically finds the best routine to carry
out our request, and the SQL engine determines how to interpret that particular
command.
Structured Query Language contains the following four components in its process:
● Query Dispatcher
● Optimization Engines
● Classic Query Engine
● SQL Query Engine, etc.
A classic query engine allows data professionals and users to maintain non-SQL
queries. The architecture of SQL is shown in the following diagram:
Some SQL Commands
The SQL commands help in creating and managing the database. The most common
SQL commands which are highly used are mentioned below:
1. CREATE command
2. UPDATE command
3. DELETE command
4. SELECT command
5. DROP command
6. INSERT command
CREATE Command
This command helps in creating the new database, new table, table view, and other
objects of the database.
UPDATE Command
SELECT Command
This command helps in accessing the single or multiple rows from one or multiple
tables of the database. We can also use this command with the WHERE clause.
DROP Command
This command helps in deleting the entire table, table view, and other objects
from the database.
INSERT Command
This command helps in inserting the data or records into the database tables. We can
easily insert the records in single as well as multiple rows of the table.
SQL vs No-SQL
The following table describes the differences between the SQL and NoSQL, which are
necessary to understand:
SQL No-SQL
2. The query language used in this 2. The query language used in the No-SQL
database system is a structured query database systems is a non-declarative query
language. language.
3. The schema of SQL databases is 3. The schema of No-SQL databases is a
predefined, fixed, and static. dynamic schema for unstructured data.
4. These databases are vertically scalable. 4. These databases are horizontally scalable.
5. The database type of SQL is in the form 5. The database type of No-SQL is in the form
of tables, i.e., in the form of rows and of documents, key-value, and graphs.
columns.
6. It follows the ACID model. 6. It follows the BASE model.
7. Complex queries are easily managed in
7. NoSQL databases cannot handle complex
the SQL database.
queries.
8. This database is not the best choice for 8. While No-SQL database is a perfect option
storing hierarchical data. for storing hierarchical data.
9. All SQL databases require object- 9. Many No-SQL databases do not require
relational mapping. object- relational mapping.
11. SQLite, Ms-SQL, Oracle, PostgreSQL, 11. Redis, MongoDB, Hbase, BigTable, CouchDB,
and and Cassandra are examples of NoSQL
MySQL are examples of SQL database database systems.
systems.
Advantages of SQL
SQL provides various advantages which make it more popular in the field of data
science. It is a perfect query language which allows data professionals and users to
communicate with the database. Following are the best advantages or benefits of
Structured Query Language:
SQL does not require a large number of coding lines for managing the database
systems. We can easily access and maintain the database by using simple SQL
syntactical rules. These simple rules make the SQL user-friendly.
A large amount of data is accessed quickly and efficiently from the database by using
SQL queries. Insertion, deletion, and updation operations on data are also performed in
less time.
3.Standardized Language
SQL follows the long-established standards of ISO and ANSI, which offer a
uniform platform across the globe to all its users.
4.Portability
The structured query language can be easily used in desktop computers, laptops,
tablets, and even smartphones. It can also be used with other applications according
to the user's requirements.
5.Interactive language
We can easily learn and understand the SQL language. We can also use this
language for communicating with the database because it is a simple query
language. This language is also
used for receiving the answers to complex queries in a few seconds.
The SQL language also helps in making the multiple views of the database structure
for the different database users.
Disadvantages of SQL
With the advantages of SQL, it also has some disadvantages, which are as follows:
1.Cost
The operation cost of some SQL versions is high. That's why some programmers
cannot use the Structured Query Language.
2.Interface is Complex
Another big disadvantage is that the interface of Structured query language is difficult,
which makes it difficult for SQL users to use and manage it.
The business rules are hidden. So, the data professionals and users who are using this
query language cannot have full database control.
@Entity
@Table(name = "account")
publicclassAccount {
transientEntityManagerentityManage
r; @Id
@GeneratedValue
privateLong id;
@Transactional
publicvoidpersist() {
if (this.entityManager == null) this.entityManager =
entityManager(); this.entityManager.persist(this);
}
@Transactional
public Account merge() {
if (this.entityManager == null) this.entityManager =
entityManager(); Accountmerged=this.entityManager.merge(this);
this.entityManager.flush();
return merged;
}
I've also tried adding implements CrudRepository<Account, Long> to the Account class to see
it'll give me that functionality via a Default Implementation, but what I'm getting is
simply empty classes that needs to be filled in.
I've had a look at the Spring Boot docs, they cover it very briefly omitting just enough
detail to so that it's not obvious what I'm missing.
@Configuration
@ComponentScan
@EnableAutoConfiguration
publicclassApplication {
spring.datasource.url: jdbc:mysql://localhost/test
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driverClassName=com.mysql.jdbc.Dri
ver spring.jpa.hibernate.ddl-auto=update
What is the correct way to persist entities in Spring Boot + JPA and if what I've
done is correct so far, how do I "autowire" or auto-create the entityManager?
JDBC Agile development principles
Below we will review each of the 12 agile principles and describe how they may
be practiced.
Agile Principle 1
“Our highest priority is to satisfy the customer through early and continuous delivery
of valuable software.”
The best ways to ensure you make customers happy while continuously delivering
valuable software are to ship early, iterate frequently, and listen to your market
continually.
● Product teams use minimum viable products and rapid experimentation to test
hypothesis and validate ideas.
● Frequent releases help fuel a continuous feedback cycle between customer and product.
● Shipped and done are not the same thing. Instead of releasing a “finished” product,
iterations continue to make incremental improvements to product based on customer
and market feedback.
Agile Principle 2
“Welcome changing requirements, even late in development. Agile processes
harness change for the customer’s competitive advantage.”
In the world around us, change is the only constant. Agile principles and values
support responding to these changes rather than moving forward in spite of them.
Previous approaches to product development were often change adverse; detailed,
well-documented
plans were made before development began and were set in stone regardless of new
findings. Agile principles support observing changing markets, customer needs, and
competitive threats and changing course when necessary.
● Product teams are guided by high-level strategic goals and perhaps even themes below
those goals. The product department’s success is measured against progress toward
those strategic goals rather than by delivery of a predefined feature set.
● Product constantly has its ear to the ground monitoring the market, customer feedback,
and other factors which could influence product direction. When actionable insight is
uncovered, plans are adjusted to better serve customer and business needs.
● Product strategy and tactical plans are reviewed, adjusted, and shared on a regular
cadence to reflect changes and new findings. As such, product needs to manage the
expectations of executive stakeholders appropriately and ensure they understand the
why behind changes.
Agile Principle 3
“Deliver working software frequently, from a couple of weeks to a couple of months,
with a preference to the shorter timescale.”
This agile approach, with short-term development cycles of smaller portions of the
product, results in less time spent drafting and poring over the large amounts of
documentation that characterizes Waterfall product development. More importantly,
this frequent-release approach creates more opportunities for you and your teams to
validate your product ideas and strategies from the qualified constituencies who see
each new release.
● Agile development cycles, often called “sprints” or “iterations” break down product
initiatives into smaller chunks that can be completed in a set timeframe. Often this
timeframe is between 2 and 4 weeks which truly is a sprint if you consider the marathon-
like development cycles waterfall teams often follow.
● Another popular alternative to agile sprints is continuous deployment. This method of
shipping software frequently works less in terms of predetermined time boxes and
more in terms of simply deciding what to do and doing it.
Agile Principle 4
“Business people and developers must work together daily throughout the project.”
● Cross-functional agile product development teams include product people. This means
that product is represented on the development team and bridges the gap between
technical and business aspects of the product.
● Daily update meetings, or standups, are one technique many agile shops use to
put this principle in practice and keep everyone connected.
Agile Principle 5
“Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.”
A key part of the agile philosophy is empowering individuals and teams through
trust and autonomy. The agile team needs to be carefully built to include the right
people and skill sets to get the job done, and responsibilities need to be clearly
defined before the beginning of a project. Once the work has begun, however, there’s
no place in agile for micromanagement or hand holding.
Agile Principle 6
“The most efficient and effective method of conveying information to and
within a development team is face-to-face conversation.”
With so many distributed or remote development teams these days, this principle gets
a bit of critique. But at the root of it, effective communication with developers means
getting these conversations out of Slack and email and favoring more human
interaction (even if done by video conference calls). The overall objective behind this
principle is to encourage product people and developers to truly communicate in real
time about the product, requirements, and the high-level strategy driving those things.
How it looks in practice:
Agile Principle 7
“Working software is the primary measure of progress.”
Proponents of the agile philosophy are quick to remind us that we’re in the business
of building software, and that’s where our time should be spent. Perfect, detailed
documentation is secondary to working software. This mentality pushes to get
products to the market quickly rather than let documentation or an “it’s not done until
it’s perfect” mentality become a bottleneck. The ultimate measure for success is a
working product that customers love.
● Designing and releasing “Minimum Viable Features” rather than fully-developed feature
sets means thinking first and foremost about the smallest things we can ship to start
getting customer feedback and validate as we continue to build software.
● A fail fast mentality means moving forward even in times of uncertainty and testing
ideas rapidly.
● Ship software often: a useful product now is better than a perfect one later.
Agile Principle 8
“Agile processes promote sustainable development. The sponsors, developers, and
users should be able to maintain a constant pace indefinitely.”
● Before every sprint, careful consideration of the amount of work that can be committed
to is made. Development teams don’t over promise on what they can and cannot
deliver. Effort estimations are a common practice in setting output expectations for
development teams.
● Everyone agrees on what will get done during a sprint. Once a sprint has begun, no
additional tasks are to be added except in rare cases.
● Product managers should act as gatekeepers to reduce the noise from other
stakeholders and to avoid squeezing in additional unplanned work during an ongoing
sprint.
● Product people should do their part in promoting a sense of psychological safety
across the cross-functional team that encourages open communication and freely
flowing feedback.
Agile Principle 9
“Continuous attention to technical excellence and good design enhances agility.”
While the agile philosophy encourages shorter cycles and frequent releases, it also
puts emphasis on the importance of keeping things neat and tidy so they don’t
cause problems in the future. Product managers often forget about this aspect of
development because they mostly don’t spend their days wading through their
products’ codebases, but it is still of the utmost importance to them.
● The team needs to be cognizant of technical debt and the technical debt implications of
any new features or initiatives added to the backlog. Developers and product need to
work together to understand if and when technical debt is acceptable.
● On a regular basis, product will need to allocate development resources to refactoring
efforts. Refactoring cannot be an afterthought, it needs to be an ongoing consideration.
Agile Principle 10
“Simplicity—the art of maximizing the amount of work not done—is essential.”
You’ve probably heard of the 80/20 rule—the concept that you can usually get 80%
of your intended results with just 20% of the work. Agile principles encourage
thinking this way; doing the things that can have the most impact. In a product
management context this means having a laser sharp focus on organizational
objectives and making some cutthroat prioritization decisions. Agile principles
discourage building merely for the sake of building by emphasizing the importance
of being strategic and building with purpose.
● Product managers need to make very focused product decisions and closely align
product strategy with organizational goals while being extremely picky about what user
stories and features actually make the cut. Using prioritization techniques to prioritize
initiatives by effort and predicted impact is one way product teams can apply this agile
principle to product development.
● The short sprints that agile is characterized by present many opportunities for rapid
testing and experimentation which can help reduce uncertainty around whether
initiatives will truly have the predicted impact. Using experiments to validate ideas
before building them up to spec is a great way to weed out bad ideas and identify good
ones.
Agile Principle 11
“The best architectures, requirements, and designs emerge from self-organizing
teams.”
● Self-organizing teams are autonomous groups within the organization who take control
and responsibility over their respective projects and have ownership of those areas.
Different organizations practice this principle differently. Spotify, for example uses
“product squads” to practice this.
Learn more about managing complex requirements in an agile world in the webinar
below.
By using Agile PLM on Oracle Cloud, replication from on-premise to cloud and cloud-to-cloud
platforms can easily be established and managed. You can also gain the benefits of faster
infrastructure updates, easier scaling up (and down), lower capital expenditure, and fewer
personnel dedicated to basic infrastructure maintenance.
Key Workload Requirements
The architectures that Oracle provides help you address these requirements:
You can deploy Agile PLM in a single availability domain while ensuring high
availability. Use this architecture when you want to ensure that your application is
available even when an application instance goes down. The other available
application instances in the availability domain continue to process the requests.
The load balancer receives requests from users, and then routes these requests to
the application tier. You can allow for redundancy (and scalability) by configuring
multiple instances of the WebLogic server for the core application, Tomcat for File
Manager, and RAC for database. You can augment redundancy through the use of
fault domains so that you can continue accessing the application even if an
instance goes down. All instances are active and receive traffic from the load
balancer.
There's a private Load Balancer between File Manager and Application Server to
distribute traffic to your application instances within a VCN. This service provides a
primary and a standby instance of the load balancer to ensure that if the primary
load balancer becomes unavailable, the standby load balancer forwards the
requests. The load balancer ensures that requests are routed to the healthy
application instances. If there’s a problem with an application instance, then the load
balancer removes that instance and starts routing requests to the remaining healthy
application instances.
The database server stores all product content and system settings and is placed in
the private subnet. This database is accessed only by the application server. For
performance and high availability requirements, Oracle recommends that you use two-
node Oracle Real Application Clusters (Oracle RAC) database systems in Oracle Cloud
Infrastructure.
Oracle Cloud provides Agile PLM implementations that ensure you can build disaster
recovery (DR) into your deployment in unforeseen events that would require you to
failover and still keep Agile PLM up and running.
The following image illustrates the reference architecture for deploying Agile
PLM in multiple regions with high availability and disaster recovery.
Description of the illustration
agile_plm_reference_architecture_high_availability_and_dr.png
Oracle Data Guard protects your database tier by replicating data across availability
domains.