JavaWeb学习——Servlet

Servlet简介:

Servlet是一项用于开发动态web资源的技术,Sun在其API中提供了一个servlet接口,用户如果想要发送一个动态资源,需要完成以下两步:

1.编写一个Java类,实现servlet接口

2.把开发好的类部署到web服务器上

按成约定俗成的称呼习惯,通常我们也把实现servlet接口的java程序称为Servlet
JavaWeb学习——Servlet

JavaWeb学习——Servlet
JavaWeb学习——Servlet

Servlet调用过程:

  1. 浏览器向服务器发出请求,浏览器与服务器开始建立连接
  2. 浏览器向客户端发出http请求,服务器接收到http请求后,如果服务器发现客户端首次请求,则创建目标Servlet
  3. Web服务器根据请求信息解析出客户端想要访问的主机、应用和web资源
  4. Web服务器装载并创建该Servlet的一个实例对象,并调用该实例对象的init()方法
  5. Web服务器创建用于封装HTTP请求和响应信息的对象HttpServletRequest和HttpServletResponse对象,并调用Servlet的service()方法将请求和响应对象作为参数封装
  6. 执行完Servlet的service()方法后,Servlet将数据写入HttpServletResponse对象,并返回给Web服务器
  7. Web服务器从HttpServletResponse对象中读取响应的信息,并向浏览器发出http响应

Servlet与普通Java类的区别:

​ Servlet是一个供其它Java程序调用的Java类(Servlet引擎),不能独立运行,它的运行完全由Servlet引擎来控制和调度。

​ 客户端如果多次发送Servlet请求,服务器只会创建一个Servlet对象,这个对象将驻留在内存当中,直到web容器退出,这个实例对象才会销毁。

​ 在Servlet的整个生命周期中,Servlet的init方法只会被调用一次,对Servlet的每次访问请求都会调用Servlet的service()方法,并且每次访问请求,Servlet请求都会创建一个新的HttpServletRequest请求对象和HttpResponse响应对象,然后将这两个对象作为参数传入service()方法中,service再根据请求方式来调用doGet或doPost方法

Servlet接口实现类:

Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServletHttpServlet

HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。

HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。

参考文章:
javaweb学习总结(五)——Servlet开发(一)