サーブレットオブジェクト

サーブレットとは何ですか

  • 実際には、のウェブサーバ上で実行中のサーブレットである小さなJavaプログラムのWebクライアントからの要求を処理するための、および要求に応答します。

サーブレットテクノロジーの概要

本質的に、インタフェースサーブレット仕様でその一つの技術仕様のJavaEE 13、

Servlet仕様は、JavaEEの技術プラットフォームで、サーバ側のJavaアプレット上で実行されているサーブレットは、Webサーバー(Tomcatの)でのみ実行されます。

JavaWebサーブレットは、3つの成分の一つである(サーブレット、フィルター、リスナー)、そして最も重要な。

処置:要求を受けたが、応答します

幅広いサーブレット:すべてのカテゴリを達成するために、Servletインタフェース

狭いサーブレット:具体サーブレット・インターフェースを指し

サーブレットのクイックスタートプログラム

サーブレットは、エントリー手続きを達成するため、Javaサーブレットは、クライアントブラウザがアクセスするサーバ側のプログラム、になります。

  • 実装手順:
    • サーブレットは、クラスのインタフェース定義を実装します
    • すべての抽象メソッド書き換えインタフェース(5)
    • web.xmlにサーブレットの設定
ここでは、インタフェースQuickStartServletサーブレットを実装するクラスの定義は次のとおりです。
package com.ccc.servlet;
/*
 * 实现Servlet快速入门
 *   1、创建一个类实现Servlet接口(Tomcat)
 *   2、重写Servlet接口中的所有抽象方法(5个)
 *   3、在当前项目的web.xml文件中,对Servlet进行配置
 */
public class QuickStartServlet implements Servlet{
    /*
        service方法用于接收客户端的请求,给客户端进行响应
            ServletRequest:接收客户端的请求
            ServletResponse:给客户端进行响应
    */
     
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Servlet快速入门");
        
        // 参数servletResponse方法getWriter()获取字符输出流
        Writer w = servletResponse.getWriter();
        
        //输出流的方法write,数据写到客户端浏览器
        w.write("hello world");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

このクラスは、web.xmlに配置されました

<servlet>
	<!--quick这个名字随便起,但要跟下面的<servlet-name>内的名字对应-->
    <servlet-name>quick</servlet-name>
    <!--这个名字是前面那个实现接口Servlet的类的全路径-->
    <servlet-class>com.ccc.servlet.QuickStartServlet</servlet-class>
</servlet>

<servlet-mapping>
	<!--quick这个名字随便起,但要跟上面的<servlet-name>内的名字对应-->
    <servlet-name>quick</servlet-name>
    <!--使用浏览器访问Servlet的虚拟路径-->
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

サーブレットへのアクセス
HTTPを:// localhostを:8080 / day01 /こんにちは
これは、このパケットが属するパッケージcom.ccc.servletのday01でモジュール名を。
ここに画像を挿入説明

サーブレットプログラム実行原則(重要)

ここに画像を挿入説明

サーブレットオブジェクトのライフサイクル

サーブレットのライフサイクル:作成からオブジェクトの破壊にサーブレットのプロセス。

  • それが破壊されたとき、それが作成されたサーブレットがありますか?

そこサーブレットのinit、サービス、破壊する方法を、これらの方法は、関連するサーブレットのライフサイクル・アプローチと呼ばれています。

  • オブジェクトが呼び出しで作成された初期化方法のinit(のServletConfig設定)サーブレット・オブジェクト

    オブジェクトは、サーブレットを作成した場合

    • オブジェクトが作成されたサーブレットのデフォルトの最初の訪問

    • オブジェクトTomcatサーバーの起動を作成し、あなたが(通常は設定されていない)のweb.xmlを変更する必要があります

        <!--
        	Tomcat服务器启动的时候,自动创建Servlet对象
        	配置的数字是设置启动的优先级
       	可以写任意的整数,数字越小,优先级越高
        -->
      <load-on-startup>5</load-on-startup>
      
  • サービス(リクエスト、レスポンス)クライアントアクセス時間、実行時間

  • )(Destoryは、オブジェクトがサーブレットを破壊される前に呼び出されます

  • オブジェクトは、サーブレットを破壊された場合

    • Tomcatサーバーを停止します
    • WEB項目は、サーバーから削除します

Web.xmlのサーブレットの構成

<!--
  Servlet的详细配置
-->
<servlet>
    <!-- name,定义名字,随意-->
    <servlet-name>path</servlet-name>
    <!-- class 配置类的全名,反射-->
    <servlet-class>com.itheima.servlet.PathServlet</servlet-class>
</servlet>

<servlet-mapping>
    <!-- name 必须和上面name相同-->
    <servlet-name>path</servlet-name>
    <!-- url-pattern 配置的是浏览器访问的虚拟路径,需要最后将“\”后的名字输入到浏览器-->
    <url-pattern>/path</url-pattern>
</servlet-mapping>

URLパターンの設定

  • 1、完全一致

    / Abcの:ブラウザのアドレスバーに/ ABCを書き込む必要があります(ABC例の便利な方法のみ)

    <url-pattern>/path</url-pattern>
    
  • 2、一致するディレクトリ

    / AAA / BBB / *:ブラウザのアドレスバーには書くことができます/ AAA / BBB /任意の

  • 3、マッチングサフィックス

    * .Abc:ブラウザのアドレスバーは、任意の.abcに書き込むことができます

    Directoryのマッチングと拡張マッチングを使用することはできません

    /aaa/bbb/*.abc紛争

サーブレットを作成するために、IDEA(重要)

ここに画像を挿入説明

public class MyServlet extends HttpServlet {
    /**
     *   doGet方法对应了客户端浏览器的提交方式GET
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().print("MyServlet run");
    }
    /**
     *   doPost方法对应了客户端浏览器的提交方式POST
     *   无论:是POST提交,还是GET,统一处理,都使用doGet
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //调用doGet
        doGet(request,response);
    }
}

原理は継承されたのHttpServlet

これは、JavaEEのServlet仕様、標準的な方法サーブレット・インターフェース・サービスメソッドであります
ここに画像を挿入説明

サーブレットは(知っている)テンプレートを変更します

ここに画像を挿入説明

ServletConfigオブジェクト

サーブレット構成オブジェクトを表すServletConfigオブジェクト

サーブレットプログラムがあり、対応するターゲットのServletConfigがあるでしょう

  • ServletConfigオブジェクトを取得します。

    • initメソッドのパラメータ(のServletConfigのServletConfig)は、発呼者はTomcatエンジン、ServletConfigオブジェクトは、Tomcatエンジンによって作成されています
    • 親クラスは、メソッドのServletConfigのgetServletConfigを(定義)
  • どのようなオブジェクトを行います

    • サーブレット名を取得し、文字列getServletName()

         <servlet-name>config</servlet-name>
      
    • サーブレットの初期化パラメータ、文字列getInitParameter(「キー」)を取得します

      <init-param>
                  <param-name>heima</param-name>
                  <param-value>java</param-value>
      </init-param>
      
      public class ConfigServlet extends HttpServlet {
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              /*
                  使用父类的方法getServletConfig()方法,获取ServletConfig对象
                  ServletConfig是接口 org.apache.catalina.core.StandardWrapperFacade
                  接口的实现类(Tomcat重写)
               */
              ServletConfig config = getServletConfig();
              System.out.println(config);//org.apache.catalina.core.StandardWrapperFacade@63b85cd
              //获取Servlet名字
              String servletName = config.getServletName();
              System.out.println(servletName);//config
              //获取Servlet初始化参数
              String value = config.getInitParameter("heima");
              System.out.println(value);//340
          }
      }
      

おすすめ

転載: blog.csdn.net/qq_45083975/article/details/92012289