zoukankan      html  css  js  c++  java
  • Servlet--HttpServlet

    一.Servlet 接口(javax.servlet)
    定义:
         public interface Servlet
         Implemented by: FacesServlet, GenericServlet, JspPage
    介绍:
         servlet 是运行在 Web 服务器中的小型 Java 程序。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。
         要实现此接口,可以编写一个扩展 javax.servlet.GenericServlet 的一般 servlet,或者编写一个扩展 javax.servlet.http.HttpServlet 的 HTTP servlet。
         此接口定义了初始化 servlet 的方法、为请求提供服务的方法和从服务器移除 servlet 的方法。这些方法称为生命周期方法,它们是按以下顺序调用的:
         1)构造 servlet,然后使用 init 方法将其初始化。
         2)处理来自客户端的对 service 方法的所有调用。
         3)从服务中取出 servlet,然后使用 destroy 方法销毁它,最后进行垃圾回收并终止它。
         除了生命周期方法之外,此接口还提供了 getServletConfig 方法和 getServletInfo 方法,servlet 可使用前一种方法获得任何启动信息,而后一种方法允许 servlet     返回有关其自身的基本信息,比如作者、版本和版权。
    常用方法:
         public void destroy():由 servlet 容器调用,指示将从服务中取出该 servlet。此方法仅在 servlet 的 service
                                 方法已退出或者在过了超时期之后调用一次。在调用此方法之后,servlet容器不会再对此 servlet 调用 service 方法。
         public ServletConfig getServletConfig():返回 ServletConfig 对象,该对象包含此 servlet 的初始化和启动参数。返回的 ServletConfig 对象是传递给 init 方法的对象.
                                 此接口的实现负责存储 ServletConfig 对象,以便此方法可以返回该对象。实现此接口的 GenericServlet 类已经这样做了。
         public String getServletInfo():返回有关 servlet 的信息,比如作者、版本和版权.此方法返回的字符串应该是纯文本,不应该是任何种类的标记(比如 HTML、XML,等等).
         public void init(ServletConfig config) throws ServletException:由 servlet 容器调用,指示将该 servlet 放入服务.servlet 容器仅在实例化 servlet 之后调用 init 方法一次。
                                                         在 servlet 可以接收任何请求之前,init 方法必须成功完成.
         public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException:由 servlet 容器调用,以允许 servlet 响应某个请求。此方法仅在 servlet 的 init()
                                                                     方法成功完成之后调用,应该为抛出或发送错误的 servlet 设置响应的状态代码。

    二.HttpServlet 类(javax.servlet.http)
    继承关系:
         java.lang.Object--javax.servlet.GenericServlet--javax.servlet.http.HttpServlet
    定义:
         public abstract class HttpServlet extends GenericServlet implements Serializable
    介绍:
         提供将要被子类化以创建适用于 Web 站点的 HTTP servlet 的抽象类。HttpServlet 的子类至少必须重写一个方法,该方法通常是以下这些方法之一:
             doGet,如果 servlet 支持 HTTP GET 请求
             doPost,用于 HTTP POST 请求
             doPut,用于 HTTP PUT 请求
             doDelete,用于 HTTP DELETE 请求
             init 和 destroy,用于管理 servlet 的生命周期内保存的资源
             getServletInfo,servlet 使用它提供有关其自身的信息
    构造方法:
         public HttpServlet():不执行任何操作,因为这是一个抽象类。
    常用方法:
         protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{}:由服务器调用(通过 service 方法),以允许 servlet 处理 GET 请求。
                                                                                 req 包含客户端对 servlet 发出的请求的 HttpServletRequest 对象;
                                                                                 resp 包含 servlet 向客户端发送的响应的 HttpServletResponse 对象.
         protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{}:由服务器调用(通过 service 方法),以允许 servlet 处理 POST 请求。
                                                                                 HTTP POST 方法允许客户端一次将不限长度的数据发送到 Web 服务器,这在发送诸如信用卡号之类的信息时很有用.       
         protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{}:由服务器调用(通过 service 方法),以允许 servlet 处理 PUT 请求,
                                                                                 PUT 操作允许客户端将文件放在服务器上,类似于通过 FTP 发送文件。
         public void service(ServletRequest req, ServletResponse res) throws ServletException,IOException:将客户端请求分发给受保护的 service 方法。无需重写此方法。

    三.web执行流程
         1.实现项目,发布到服务器下(Tomcat的webapps文件夹下);
         2.启动Tomcat服务器(实际上是启动了ServerSocket对象,监听8080端口,等待客户端连接);
         3.当用户在浏览器地址栏输入网址时,即向服务器发起请求(此时浏览器底层建立起Socket对象,将HTTP的请求部分(请求行/请求头/请求体)发送至服务器);
         4.服务器(Servlet接口或其实现类)分析请求,通过service方法判断是请求动态资源还是静态资源,如果是动态资源则使用反射技术,创建对象;如果是静态资源,则直接读取文件夹中的内容;
         5.服务器(Tomcat)结合http协议响应部分和输出流向客户端进行响应;
         6.浏览器通过输入流接收来自服务器的数据,进行解析和处理,并展现给用户;

    四.Servlet生命周期
    1_当用户通过浏览器首次访问某个Servlet时,tomcat会调用servlet的构造函数创建一个Servlet对象,之后调用servlet下的init方法(仅执行一次);
    2_调用servlet下的service方法,在service方法中判断本次是GET/POST方法,调用servlet下的doget/dopost方法;
    3_以后从客户端浏览器每次向服务端对当前servlet发起请求,仅仅只执行其下的service__>doget/dopost;
    4_停止服务器(正常/中断)/重新加载项目 servlet销毁;
       正常停止服务器/重新加载项目会执行destory方法
         注意: 单实例多线程模式,会有效率问题,安全问题

  • 相关阅读:
    shell test -n -z
    java -d64
    shell export
    topngroupcollector
    stat 查看文件修改时间
    随机30道小学计算题02(修改)
    设计四则运算2程序单元测试用例
    学习进度02
    随机30道小学计算题02
    随机30道小学计算题01
  • 原文地址:https://www.cnblogs.com/huguangqin/p/7223143.html
Copyright © 2011-2022 走看看