Java Web Development
Java Web Application
Java is a programming language and a platform. It has strong support for web development.Java Web Application is used to create dynamic websites. Java provides support for web application via Servlets and JSPs. We can create a website with static HTML pages but when we required information to be dynamic, we need web application.
Web Server and Client
Web Server is a software that process the client request and send the response back to the client. For instance, Apache is one of the most widely used web server. Web Server runs on physical machine and listens to client request on specific port.
A web client is a software which helps in communicating with the server .Examples of the most widely used web clients are Firefox, Google Chrome, Safari etc. When we request something(data) from server (through URL), web client takes care of creating a request and sending it to server and then parsing the server response and present it to the user.
Web Server and Web Client are two separate things (softwares), so there should be common language for communication. HTML is the common language between them and stands for HyperText Markup Language.
Web server and client needs a common communication protocol, HTTP (HyperText Transfer Protocol) is the communication protocol between server and client. HTTP runs on top of TCP/IP communication protocol.
Some of the important parts of HTTP Request are:
HTTP Method – action to be performed, usually GET, POST, PUT etc.
URL – Page to access
Form Parameters – similar to arguments in a java method, for example user,password details from login page.
URL is acronym of Universal Resource Locator and it’s used to locate the server and resource. Every resource on the web has it’s own unique address. Let’s see parts of URL with an example.
http:// – This is the first part of URL and provides the communication protocol to be used in server-client communication.
localhost – The unique address of the server, most of the times it’s the hostname of the server that maps to unique IP address. Sometimes multiple hostnames point to same IP addresses and web server virtual host takes care of sending request to the particular server instance.
8080 – This is the port on which server is listening, it’s optional and if we don’t provide it in URL then request goes to the default port of the protocol. Port numbers 0 to 1023 are reserved ports for well known services, for example 80 for HTTP, 443 for HTTPS, 21 for FTP etc.
FirstServletProject/jsps/hello.jsp – Resource requested from server. It can be static html, pdf, JSP, servlets, PHP etc.
Web servers are good for static contents HTML pages but they don’t know how to generate dynamic content or how to save data into databases, so we need another tool that we can use to generate dynamic content. There are several programming languages for dynamic content like PHP, Python, Ruby on Rails, Java Servlets and JSPs.
Java Servlet and JSPs are server side technologies to extend the capability of web servers by providing support for dynamic response and data persistence.
We will use “Eclipse IDE for Java EE Developers” for creating our first servlet application. Since servlet is a server side technology, we will need a web container that supports Servlet technology, so we will use Apache Tomcat server. It’s very easy to setup and I am leaving that part to yourself.
For ease of development, we can add configure Tomcat with Eclipse, it helps in easy deployment and running applications.
Go to Eclipse Preference and select Server Runtime Environments and select the version of your tomcat server, mine is Tomcat 7.
Now we are ready with our setup to create first servlet and run it on tomcat server.
Select File > New > Dynamic Web Project and use below image to provide runtime as the server we added in last step and module version as 3.0 to create our servlet using Servlet 3.0 specs.
You can directly click Finish button to create the project or you can click on Next buttons to check for other options.
Now select File > New > Servlet and use below image to create our first servlet. Again we can click finish or we can check other options through next button.
When we click on Finish button, it generates our Servlet skeleton code, so we don’t need to type in all the different methods and imports in servlet and saves us time.
Now we will add some HTML with dynamic data code in doGet() method that will be invoked for HTTP GET request. Our first servlet looks like below.
Before Servlet 3, we need to provide the url pattern information in web application deployment descriptor but servlet 3.0 uses java annotations that is easy to understand and chances of errors are less.
Now chose Run > Run on Server option from servlet editor window and use below images for the options.
If we run above JSP, we get output like below image.
Tomcat is a web container, when a request is made from Client to web server, it passes the request to web container and it’s web container job to find the correct resource to handle the request (servlet or JSP) and then use the response from the resource to generate the response and provide it to web server. Then web server sends the response back to the client.
When web container gets the request and if it’s for servlet then container creates two Objects HTTPServletRequest and HTTPServletResponse. Then it finds the correct servlet based on the URL and creates a thread for the request. Then it invokes the servlet service() method and based on the HTTP method service() method invokes doGet() or doPost() methods. Servlet methods generate the dynamic page and write it to response. Once servlet thread is complete, container converts the response to HTTP response and send it back to client.
Some of the important work done by web container are:
Communication Support – Container provides easy way of communication between web server and the servlets and JSPs. Because of container, we don’t need to build a server socket to listen for any request from web server, parse the request and generate response. All these important and complex tasks are done by container and all we need to focus is on our business logic for our applications.
Lifecycle and Resource Management – Container takes care of managing the life cycle of servlet. Container takes care of loading the servlets into memory, initializing servlets, invoking servlet methods and destroying them. Container also provides utility like JNDI for resource pooling and management.
Multithreading Support – Container creates new thread for every request to the servlet and when it’s processed the thread dies. So servlets are not initialized for each request and saves time and memory.
JSP Support – JSPs doesn’t look like normal java classes and web container provides support for JSP. Every JSP in the application is compiled by container and converted to Servlet and then container manages them like other servlets.
Miscellaneous Task – Web container manages the resource pool, does memory optimizations, run garbage collector, provides security configurations, support for multiple applications, hot deployment and several other tasks behind the scene that makes our life easier.
Java Web Applications are packaged as Web Archive (WAR) and it has a defined structure. You can export above dynamic web project as WAR file and unzip it to check the hierarchy. It will be something like below image.
web.xml file is the deployment descriptor of the web application and contains mapping for servlets (prior to 3.0), welcome pages, security configurations, session timeout settings etc.
*NOTE : "This study material is collected from multiple sources to make a quick refresh course available to students."