サーブレットエッセンスをシミュレートする

サーブレットエッセンス

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

サーブレット(サーバーアプレット。Servはサーバー側を表し、letはアプレットを表します)は、Javaサーブレットの略語で、小さなサービスプログラムまたはサービスコネクタと呼ばれます。これは、Javaで記述されたサーバー側プログラムであり、プラットフォームやプロトコルに依存しない特性を備えています。およびその主な機能データをインタラクティブに参照および生成し、動的なWebコンテンツを生成することです。

(1)サーブレットは、JavaEEによって定義された一連の仕様です。

サーブレットは、SUNによって定義されたJavaEE仕様です。サーブレットインターフェイスは、サーブレット仕様のコアインターフェイスです。インターフェイスに注意を払うべき2つの場所は次のとおりです。発信者は誰ですか?実装者は誰ですか?

サーブレットインターフェイスは、ネットワークリクエストを処理するための一連の仕様を定義します。サーブレットを実装するすべてのクラスは、5つのメソッドを実装する必要があります。そのうち、最も重要なのは、init()とdestroy()の2つのライフサイクルメソッドと、リクエストされたサービスの1つの処理です。 ()、サーバー側のJavaアプレットは自由に作成できず、サーブレットインターフェイスを実装し、servlet()メソッドを実装する必要があります。

(2)サーブレットのB / Sアーキテクチャの役割とプロトコルの関係ここに画像の説明を挿入

写真の4人の参加者を接続する場合は、接続するために3つのプロトコルが必要です。ブラウザとWebサーバー間のhttpプロトコルはW3Cで定義され、サーブレットとjdbcは両方ともSUN。JavaEE仕様で定義されます。

2.サーブレットの本質をシミュレートします

JavaWebプログラマーがサーバー側のJavaアプレットを作成する場合、任意に作成することはできず、サーブレットインターフェイスを実装する必要があります。ここでは、コマンドラインウィンドウを使用して、データベースへの接続をシミュレートしてデータを削除し、ログイン操作のためにデータベースに接続します。

  • DeleteServletクラスを定義します
public class DeleteServlet implements Servlet {
    
    
    @Override
    public void servlet() {
    
    
        System.out.println("连接数据库,正在删除数据......");
    }
}
  • LoginServletクラスを定義します
public class LoginServlet implements Servlet {
    
    
    @Override
    public void servlet() {
    
    
        System.out.println("正在连接数据库,进行登录。。。");
    }
}
  • Tomcatサーバーの基本的な動作原理をシミュレートします。Tomcatはサーブレットインターフェイス用に呼び出されるWebコンテナです。
public class Tomcat {
    
    
    public static void main(String[] args) {
    
    
        System.out.println("服务器启动成功");
        Scanner input = new Scanner(System.in);
        try {
    
    
            while (true) {
    
    
                System.out.print("请打开浏览器,在浏览器上输入请求路径:");
                String resultPath = input.nextLine();
                //Tomcat读取web.xml文件
                FileReader reader = new FileReader("web.xml");
                Properties pro = new Properties();
                pro.load(reader);
                reader.close();

                //通过key获取value
                String servletClassName = pro.getProperty(resultPath);

                //通过反射机制创建对象
                Class c = Class.forName(servletClassName);
                Servlet servlet = (Servlet)c.newInstance();
		//调用servlet();方法
                servlet.servlet();
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
}
  • 構成ファイルを定義するweb.xmlユーザーが入力した要求パスとサーバー側のJavaアプレットのクラス名との関係を維持するため。サーバー側のJavaアプレットはJavaWebプログラマーによって作成されるため、対応する構成ファイルもJavaWebプログラマーによって作成される必要があります。
/login=LoginServlet
/delete=DeleteServlet
  • Tomcatサーバーはweb.xml構成ファイルの読み取りを担当します
FileReader reader = new FileReader("servlet//web.xml");
Properties pro = new Properties();
pro.load(reader);
reader.close();
  • キー(ユーザーが入力した要求パス)を介して値(サーバーJavaアプレットのクラス名)を取得します
String servletClassName = pro.getProperty(resultPath);
  • リフレクションメカニズムを介してサーバー側Javaアプレットのクラス名を取得し、オブジェクトを作成します
Class c = Class.forName(servletClassName);
Servlet servlet = (Servlet)c.newInstance();
//面向Servlet接口调用方法即可
servlet.servlet();

:上記は、サーブレットの性質と内容についての私自身の理解です。欠陥がある場合は、指摘してください。一緒に頑張りましょう!

おすすめ

転載: blog.csdn.net/hcz666/article/details/108469347