# Web Server

* A web server is the combination of computer and the program installed on it.
* Web server interacts with the client through a web browser. It delivers the web pages to the client and to an application by using the web browser and the HTTP protocols respectively.
* We can also define the web server as the package of large number of programs installed on a computer connected to Internet or intranet for downloading the requested files using File Transfer Protocol, serving e-mail and building and publishing web pages.
* A web server works on a **client-server** model. A computer connected to the Internet or Intranet must have a server program. While talking about Java language, a web server is a server that is used to support the web component like the _Servlet_ and _JSP_. Note that the web server does not support to EJB _(business logic component)_ component.
* A computer connected to the Internet for providing the services to a small company or a departmental store may contain the HTTP server _(to access and store the web pages and files)_, SMTP server _(to support mail services)_, FTP server _(for files downloading)_ and NNTP server _(for newsgroup)_. The computer containing all the above servers is called the web server.
* Internet service providers and large companies may have all the servers like HTTP server, SMTP server, FTP server and many more on separate machines.
* The term web server can refer to either the hardware _(the computer)_ or the software _(the computer application)_ that helps to deliver web content that can be accessed through the Internet.
* The most common use of web servers is to host websites, but there are other uses such as gaming, data storage or running enterprise applications.
* The primary function of a web server is to deliver web pages to clients. The communication between client and server takes place using the Hypertext Transfer Protocol _(HTTP)_. Pages delivered most frequently are HTML documents, which may include images, style sheets and scripts in addition to text content.
* A user agent, commonly a web browser or web crawler, initiates communication by making a request for a specific resource using HTTP and the server responds with the content of that resource or an error message if unable to do so. The resource is typically a real file on the server's secondary storage, but this is not necessarily the case and depends on how the web server is implemented.
* While the primary function is to serve content, a full implementation of HTTP also includes ways of receiving content from clients. This feature is used for submitting web forms and uploading of files.
* Many generic web servers also support server-side scripting using Active Server Pages _(ASP)_, PHP, or other scripting languages. This means that the behaviour of the web server can be scripted in separate files, while the actual server software remains unchanged. Usually, this function is used to create HTML documents dynamically ("on-the-fly") as opposed to returning static documents. The former is primarily used for retrieving and/or modifying information from databases. The latter is typically much faster and more easily cached but cannot deliver dynamic content.

## Introduction to TomCat Server

* Refer [this](https://www.jrebel.com/blog/what-is-apache-tomcat) for more info.

## Web server Layers

![web-app-layers](https://574639531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJDnjsv52I3fJ56WbLgHu%2Fuploads%2Fgit-blob-2a1408313c35933952a169114014b42d99b892cf%2Fweb-app-layers.bmp?alt=media)

## Clients

* Refer [this](https://en.wikipedia.org/wiki/Client_\(computing\)#Types) for types of client.
