Servlet和web服务器关系

原创 2015年07月07日 10:49:28
前面的博客我详细的罗列了下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>


  • 第三点:Servlet的注册与运行

Servlet程序必须通过Servlet容器来启动运行,并且储存目录有特殊要求,通需要存储在<WEB应用程序目录>\WEB-INF\classes\目录中。 Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问路径,才可以被Servlet引擎加载和被外界访问。一个<servlet>元素用于注册一个Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。 一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径。


最后这里以2张图片结束本篇博客:

1,tomcat的目录层次结构,前面博客也有详细整理,这里只做复习


2,Servlet规范中定义了web应用程序的目录层次



版权声明:本文为博主原创文章,欢迎大家转载。如有错误请多多指教。

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

转载自http://blog.csdn.net/iAm333之前在开源中国看到一篇文章《初学 Java Web 开发,请远离各种框架,从 Servlet 开发》,觉得很不错。想到自己之前一直对各种框架...
  • lz233333
  • lz233333
  • 2017年03月29日 21:39
  • 1535

Tomcat与Servlet之间的关系

Servlet(小服务程序)是一个与协议无关的、跨平台的Web组件,它基于Java技术开     发,由Servlet容器所管理。和运行在客户端浏览器中的Applet(小应用程序)相似,Servle...
  • u013770825
  • u013770825
  • 2014年03月02日 16:10
  • 3020

各种容器与服务器的区别与联系:Servlet容器 WEB容器 Java EE容器 应用服务器 WEB服务器 Java EE服务器

经常看到各种容器名称:Servlet容器、WEB容器、Java WEB容器、Java EE容器等,还有各种服务器名称:应用服务器、WEB服务器、WEB应用服务器、Java WEB应用服务器、Java ...
  • tjiyu
  • tjiyu
  • 2016年11月13日 11:48
  • 6190

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

Web服务器(软件): Apache http server, 这个它的网址,http://httpd.apache.org/download.cgi#apache24,实现的是HTTP协议,提供的...
  • wangkai0681080
  • wangkai0681080
  • 2012年12月28日 10:09
  • 5040

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

今天学习tomcat时发现一篇写的比较好的文章,故分享给大家 Web服务器(软件): Apache http server, 这个它的网址,http://httpd.apache.org/...
  • u014044812
  • u014044812
  • 2016年06月23日 15:46
  • 2553

web容器和servlet的关系

CGI(Common Gateway Interface),通用网关接口 通用网关接口,简称CGI,是一种根据请求信息动态产生回应内容的技术。通过CGI,Web 服务器可以将根据请求不同启动不同...
  • zhaoyue007101
  • zhaoyue007101
  • 2012年08月12日 17:17
  • 345

servlet版本与tomcat版本对应关系,各版本web.xml头信息写法

Apache官方对各版本的解释:http://tomcat.apache.org/whichversion.html The mapping between the specificatio...
  • zzy7075
  • zzy7075
  • 2017年03月13日 15:32
  • 1962

Java Web 开发必须了解的 HTTP 知识点和 Servlet 之间对应关系

有很多人认为 Web 开发无非就是了解一些框架,做做页面,如果只是这样的话,就会一直停留在很低的水平,不断干重复的工作,加班累到吐血。之前我们是从 Servlet 讲起,今天需要更深入一步,进入Web...
  • shengzhoutao
  • shengzhoutao
  • 2013年06月23日 10:24
  • 441

初学者对Servlet、JSP及Web容器之间关系的理解

Servlet就是一个Java程序,一个Servlet应用程序经常包含一个或者多个Servlet也就是当用户发送请求,例如提交表单,那么需要一个或多个Servlet协同作用,而访问的jsp页面也是一个...
  • u012318703
  • u012318703
  • 2015年09月05日 23:08
  • 1255

servlet和web容器之间的关系

Java是一种动态加载和运行的语言。也就是说当应用程序持有一个类的地址(CLASSPATH)和名称(包名和类名)的情况下,可以在程序运行期 间任何时候加载这个类,并创建和使用该类的对象。Servlet...
  • JIESA
  • JIESA
  • 2017年03月17日 12:06
  • 260
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Servlet和web服务器关系
举报原因:
原因补充:

(最多只允许输入30个字)