Servlet和web服务器关系

前面的博客我详细的罗列了下Servlet的常用的类和接口,然后在前面的前面我类似tomcat模拟了一套web服务器,这里来做一个统一的整理,这样子可以更好的把握Servlet,也可以更好的了解下web服务器原理。

  • 第一点:

Servlet是一套规范,也就是说其中的一部分的类抽象成了接口,实际过程中Servlet运行在web服务器中,具体的实现要有web服务器来实现,这个和JDBC的驱动一个道理。

在Servlet中,Servlet是一个接口,在Servlet中的init方法用来初始化这个Servlet,其中方法参数ServletConfig也是一个接口。然后呢,javax.servlet包为了我们提供了一个抽象类GenericServlet来实现这2个接口,然后HttpServlet抽象类继承GenericServlet,我们如果底层来写自己的Servlet也就是来继承这个抽象类。为什么HttpServlet没有抽象方法但是它却被定义成是一个抽象类呢?个人觉得是这里的HttpServlet只是一个模板,将service方法也就是提供服务的方法具体的抽象成了doXXX等方法,所以这里定义成抽象类,我们开发自己的Servlet的时候具体的讲doXXX重写就OK。

  • 第二点:

Servlet是用来处理请求和响应的,Servlet为我们提供了request和response2个接口,web服务器就是实现了这2个接口用来处理请求和响应,我们要是自己想开发一套web服务器,其实最核心的也就是实现这2个接口。前面的博客里面也已经说过,自己写一个server,启动一个serverSocket用来监听一个端口,然后自己实现一个request和一个response就可以跑一个web项目了,至于如何跳转页面,如果传递参数,这些就在request和response里面自己写IO流就好了。

最后,我们自己写一个自己的Servlet来看看里面具体的对象吧。

package linkin;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class LinkinServlet implements Servlet
{

	@Override
	public void destroy()
	{

	}

	@Override
	public ServletConfig getServletConfig()
	{
		return null;
	}

	@Override
	public String getServletInfo()
	{
		return null;
	}

	@Override
	public void init(ServletConfig arg0) throws ServletException
	{
		System.out.println(arg0);
	}

	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException
	{
		System.out.println(arg0);
		System.out.println(arg1);
	}

}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<servlet>
		<servlet-name>LinkinServlet</servlet-name>
		<servlet-class>linkin.LinkinServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>LinkinServlet</servlet-name>
		<url-pattern>/LinkinServlet</url-pattern>
	</servlet-mapping>

</web-app>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-24 07:02:45

Servlet和web服务器关系的相关文章

php与web服务器关系

在解析这个问题前,先要讲述一个概念,什么是cgi程序? 1.什么是cgi程序,cgi与fastcgi的区别 CGI的中文名称是通用网关接口,是外部应用程序与web服务器之间的接口标准.CGI规范允许web服务器执行外部程序,并将它们的输出发送给web浏览器.而fastcgi则是一个常驻型的cgi,它可以一直执行着,不需求每次请求都必须fork进程来处理,此外,它还支持分布式运算,接受来自其他服务器的请求. 以下表格总结出它们的异同点:   web服务器 处理进程 CGI fork一个新的进程处理

理解Servlet和Servlet容器、Web服务器等概念

转载自http://blog.csdn.net/iAm333 之前在开源中国看到一篇文章<初学 Java Web 开发,请远离各种框架,从 Servlet 开发>,觉得很不错.想到自己之前一直对各种框架执迷不悟,顿感惭愧.于是,看了孙鑫的<Servlet/JSP深入详解:基于Tomcat的Web开发>.林信良的<JSP&Servlet学习笔记(第二版)>以及网上其他一些相关的资料,将自己的理解整理如下. Web技术 随着互联网技术的发展,基于HTTP和HTML的

【玩转SpringBoot】翻身做主人,一统web服务器

寄人篱下的日子 一直以来受传统影响,我们的web工程总是打成war包,然后放入tomcat的webapps目录下面. 如下图01: 当tomcat启动时,会去解压war包,然后运行web工程.这大家都非常熟悉了. 用一个抽象的图形表示,就是这样子.如下图02: 在一个大大的tomcat里面,有一个小小的war包,貌似没有地位啊. 不知道有没有人思考过这两个问题: 1)Spring在哪里? 2)tomcat和war包是如何联系上的呢? 对于第一个问题,因为我们的web工程是使用spring-web

web服务器中的容器以及工作流程

杂谈:项目到现在,已经有几个Phase过去了,杂乱的js,jsp,杂乱的action,代码已经是面目全非,更别提什么高内聚,低耦合这一说了.现在的工作状态是,要不就是绞尽脑汁地改以前留下来的巨坑bug,要不就是无聊地加各种if ,else增加新的需求.趁这段时间不忙,赶紧复习一下以前的知识,做做笔记,否则就只会写if else了. 容器相当于是一个代理的角色,请求和响应都需要容器的参与. #1,通信支持 利用容器提供的方法,你可以轻松的让servlet与web服务器进行通信,而不用创建serve

web服务器,应用程序服务器,http服务器的区别

WEB服务器.应用程序服务器.HTTP服务器有何区别?IIS.Apache.Tomcat.Weblogic.WebSphere都各属于哪种服务器? 这个概念很重要. Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL.与客户端的浏览器配合.因为Web服务器主要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的. 应用程序服务器(简称应用服务器),我们先看一下微软对它的定义:"我们把应用程序服务器定义为"作为服务器执

web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么?

web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么? 这是我在网上找的一些资料:1. Web浏览器除了可以在本地硬盘上打开网页文档外,还可以使用http网络协议从网络上的Web服务器(也叫www服务器)上获取网页文档的内容. 2. Web浏览器与Web服务器分别代表着TCP网络程序的客户机和服务器. 3. 无论网站规模的大小,最起码的工作就是要在用做Web服务器的计算机上安装某种Web服务器软件.只要在一台计算机上安装了Web服务器软件,从功能上讲,这台计算机就可以成为

Web服务器(Apache)与Servlet容器(Tomcat)

之前一直比较迷惑Apache与Tomcat的关系,通过查询资料,有所了解,现记录于此. Apache与Tomcat 两者定位:Apache是HTTP Web服务器,Tomcat是Web容器. 有一个非常形象的比喻:Apache是一辆车,可以装载静态的物件(HTML静态网页等):但不能装动态的水(JSP.CGI等),要装水就需要桶(容器),当然桶也可以不放在车上而单独存放,则该容器即为Tomcat. 两者的主要区别: Apache是世界上最流行的Web服务器(其次是微软的IIS),可以处理浏览器的

servlet和web容器之间的关系

Java是一种动态加载和运行的语言.也就是说当应用程序持有一个类的地址(CLASSPATH)和名称(包名和类名)的情况下,可以在程序运行期 间任何时候加载这个类,并创建和使用该类的对象.Servlet就是基于这个机制与Web容器融合在一起的.目前已知的所有支持Java Servlet的Web容器都是采用Java开发的.当Web容器接收到来自客户端的请求信息之后,会根据URL中的Web元件地址信息到Servlet 队列中查找对应的Servlet对象,如果找到则直接使用,如果没有找到则加载对应的类,

认识JavaWeb,servlet, JSP, Tomcat, http协议,Web服务器

JavaWeb通常指服务器端的Java应用开发. 一般来说,服务器是在网络通信条件下工作的,这就离不开http协议. HTTP协议,是为服务器和客户端通信提供的规范,其中规定了信息的格式,符合规范格式的信息就能由服务器识别,并反馈信息.请求(request)指客户端向服务噐发送的信息:响应(response)指服务器向客户端反馈的信息. Tomcat,一款Servlet容器,可以运行在Web服务器上,可以运行Java Servlet,但它并未实现J2EE规范. JSP,Jav服务页面,是为减轻编