zoukankan      html  css  js  c++  java
  • Servlet学习笔记

    一,Servlet在web应用程序中的位置:

     二,基本工作流程:

    1. 客户机将请求发送到服务器;
    2. 服务器上的Web容器实例化(装入)Servlet;
    3. Web容器将请求信息发送到Servlet;
    4. Servlet创建一个响应,并将其返回到Web容器;
    5. web容器将响应发回客户机;
    6. 服务器官必或Servlet空闲时间超过一定限度时,调用destory()方法退出。

     三,主要功能:

    • 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
    • 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
    • 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
    • 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
    • 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

    就像是一个浏览器(客户端)和服务器的一个小助手,服务器收到客户机的请求后,web容器召唤来Servlet并把请求信息交给它:“小老弟,接下来看你的了!”Servlet这个小助手立马就创建了一个响应然后去找Web容器:“顺利完成任务,这是响应结果!”,“做得很棒,这可是你的专长啊”随后Web容器将响应发回客户机;(客户机与Servlet间没有直接的交互。无论客户机对Servlet的请求还是Servlet对客户端的响应,都是通过Web服务器来实现的,这使得Servlet的可移植性大大提高

    四,与Applet和JSP比较

     与Applet比较:

    • 相同之处:(1)它们不是独立的应用程序,没有main()方法;       

                                       (2)它们不是由用户调用,而是由另外一个应用程序(容器)调用;

                              (3)它们都有一个生存周期,包含init()和destroy()方法;

    • 不同之处:

                              (1)Applet运行在客户端,具有丰富的图形界面;

                              (2)Servlet运行在服务器端,没有图形界面;

    与JSP比较:

     JSP转译后的.java文件与Servlet的处理方式一样;Servlet是JSP技术的基础

    (1)JSP使人们把显示和逻辑分隔成为可能,这意味着显示和逻辑开发可以并行进行;而Servlet并没有将输出HTML代码和逻辑处理分离开

    (2)JSP是HTML与Java代码结合的嵌套型语言;而Servlet是纯Java;

    所以在设计应用界面时,很难充分利用Web页面开发工具,如果这种工具用于开发Web页面布局,所生成的HTML就必须手工嵌入到Servlet代码中;

     五,开发Servlet的三种方法:

    1,实现Servlet接口:

     //Servlet的生命周期:从Servlet被创建到Servlet被销毁的过程
    //一次创建,到处服务
    //一个Servlet只会有一个对象,服务所有的请求
    /*
     * 1.实例化(使用构造方法创建对象)
     * 2.初始化  执行init方法
     * 3.服务     执行service方法
     * 4.销毁    执行destroy方法
     */
    public class ServletDemo1 implements Servlet {
    
        //public ServletDemo1(){}
    
         //生命周期方法:当Servlet第一次被创建对象时执行该方法,该方法在整个生命周期中只执行一次
        public void init(ServletConfig arg0) throws ServletException {
    //TODO:Add your code here
    System.out.println(
    "=======init========="); } //生命周期方法:对客户端响应的方法,该方法会被执行多次,每次请求该servlet都会执行该方法 //这个函数用于处理业务逻辑,程序员应把业务逻辑代码写在这里 //request:用于获得客户端(浏览器)的信息 //response:用于向客户端(浏览器)返回信息 public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { //TODO:Add your code here System.out.println("service it"); PrintWriter pw=response.getWriteer(); pw.println("hellow world"); } //生命周期方法:当Servlet被销毁时执行该方法(释放内存) public void destroy() { System.out.println("******destroy**********"); } //当停止tomcat时也就销毁的servlet。 public ServletConfig getServletConfig() { return null; } //包含关于Servlet的信息,如作者,创建日期,描述等 public String getServletInfo() { return null; } }

     生命周期图解:

     

    2,继承GenericServlet

    扩展了GenericServlet类的Servlet,最常用于构建网络应用程序,这些应用程序使用定制协议或其他非HTTP协议,如FTP,POP3协议等

    1 public class ServletDemo2 extends GenericServlet {
    2 
    3     @Override
    4     public void service(ServletRequest arg0, ServletResponse arg1)
    5             throws ServletException, IOException {
    6         System.out.println("BOOGIE");
    7 
    8     }
    9 }

    3,继承HttpServlet

    一般不覆盖Service()方法,在这种情况下,默认的service()方法将自动调用另一个方法来响应客户的请求;

    扩展了Httpservlet类的servlet,它用于构建web应用程序;Httpservlet类扩展了GenericServleet,因此继承了它所有的功能,主要用于生成处理基于Http的连接要求;

     1 public class ServletDemo3 extends HttpServlet {
     2 
     3     @Override
     4     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
     5             throws ServletException, IOException {
     6         System.out.println("ISEE");
     7     }
     8 
     9     @Override
    10     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    11             throws ServletException, IOException {
    12         System.out.println("up");
    13         doGet(req,resp);
    14     }
    15 
    16 }

    总结:

    • 所有的Servlet必需直接或间接的实现javax.servlet.Servlet接口
    • 如果编写的Servlet程序与HTTP协议无关,那么必须继承GenericServlet类;若有关,必须继承HttpServlet类;
    • 在创建支持HTTP协议的Servlet类的时候,我们必须扩展javax.servlet.HttpServlet类。

     

  • 相关阅读:
    SharePoint 集成OWA概述
    SharePoint Online 创建和使用栏
    SharePoint Online 创建资产库
    SharePoint Online 创建图片库
    SharePoint Online 创建文档库
    SharePoint Online 创建列表库
    SharePoint Online 设置网站集
    SharePoint Online 创建网站集
    SharePoint Online 创建用户和组
    【BLE】CC2541之发现服务与特征值
  • 原文地址:https://www.cnblogs.com/boogie-xy/p/11516319.html
Copyright © 2011-2022 走看看