1.什么是servlet?
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
------------------------------------------------------------------------------ 摘自百度.
简单理解一下:
a.servlet的作用是服务器和浏览器交互的连接器.
b.对于java来讲,servlet就是一个java的接口,凡是实现了该接口的实例就是servlet.
2.servet相关接口及其相关.
servlet 接口中一共定义了5个方法
1. init()
2. service()
3. destroy()
4. getServletConfig()
5. getServletInfo()
Servlet API 中主要接口及实现类,包括:
与Servlet实现相关的Servlet接口
Servlet接口
GenericServlet抽象类
HttpServlet抽象类
与请求和响应相关的接口
ServletRequest接口
ServletResponse接口
HttpServletResquest接口
HttpServletResponse接口
与Servlet配置相关的接口
ServletConfig接口
Servlet上下文
ServletContext接口
请求转发
RequestDispatcher接口
GenericServlet抽象类
该类定义了一个通用的、不依赖于具体协议的Servlet,他实现了Servlet接口和ServletConfig接口。
由于该类给出了除了service()方法的其他4个方法的简单实现。所以,通过继承GenericServlet来编写Servlet类,只需要实现service()方法即可。
HttpServlet抽象类
大多数的网络应用中,都是客户端通过HTTP协议去访问服务器端的资源,而我们所编写的Servlet也主要用于HTTP协议的请求和响应。为了快速开发应用于HTTP协议的Servlet类,Sun公司在javax.servlet.http包中给我们提供了一个抽象的类HttpServlet,它继承自GenericServlet类,用于创建适合Web站点的HTTP Servlet。
另外,针对HTTP1.1中定义的7种请求方法GET,POST,HEAD,PUT,DELETE,TRACE,OPTIONS,HttpServlet分别提供了7个处理方法:
doGet(),doPost(),doHead(),doPut(),doDelete(),doTrace(),doOptions()
当容器接收到一个针对HttpServlet对象的请求时,调用该对象中的方法的顺序如下:
1. 调用公共(public) service()方法。
2. 在公共的 service() 方法中,首先将参数类型转换为HttpServletRequest和HttpServletResponse,然后调用保护的(protected) service()方法,将转换后的HttpServletRequest对象和HttpServletResponse对象作为参数传递进去。
3. 在保护的service()方法中,首先调用HttpServletRequest对象的getMethod()方法,获取HTTP请求方法的名字,然后跟去请求方法的类型,调用相应的doXxx()方法。
因此我们在编写HttpServlet派生类的时候,一般不需要去覆盖service()方法,而只需要重写相应的doXxx()方法即可。
HttpServlet对这7种方法的实现:
1. TRACE和OPTIONS做了适当实现,不需要去覆盖。
2. 其他5个提供的实现都是返回HTTP错误。
与请求和响应相关的接口
Servlet由Servlet容器管理,当用户请求到来时,容器创建一个ServletRequest对象,封装请求数据,同时创建一个ServletResponse对象,封装响应数据。这两个对象被容器作为service()方法的参数传递给Servlet,Servlet利用ServletRequest对象获取客户端发送来的请求数据,利用ServletResponse对象发送响应数据。
对于HttpServletRequest对象和HttpServletResponse对象分别继承与ServletRequest对象和ServletResponse对象,并且在原有方法基础上新增一些方法。但都是用作封装请求数据和响应数据。