サーブレット:サーバーアプレット
*コンセプト:サーバー側のアプレットを実行する
サーブレットは、ブラウザ(Tomcatの認識)がアクセスするJavaクラスのルールを定義するインタフェースであります*。
*今後の私たちは、クラス、Servletインタフェース複製方法をカスタマイズします。
* はじめに:
1.のJavaEEプロジェクト作成
Servletインタフェースを実装するクラスを定義します。2.を
パブリッククラスServletDemo1は、サーブレットを実装します
3.抽象インタフェースのメソッドを実装
4.サーブレットが配置
web.xmlに配置されました:
<! - 設定サーブレット - > <servlet> <servlet-name>のDEMO1 </サーブレット名> <servlet-class>のcn.itcast.web.servlet.ServletDemo1 </サーブレットクラス> </サーブレット> <のservlet-mapping> <servlet-name>のDEMO1 </サーブレット名> <url-pattern> / DEMO1 </のurl-pattern> </のservlet-mapping>
* 原則の実装:
サーバは、クライアントのブラウザからのリクエストを受信1.リクエストのURLパスを解析するには、リソースへのパスサーブレットへのアクセスは、アクセス
の<url-pattern>がある場合は、2検索web.xmlファイルをタグ対応ボディコンテンツ。
3.存在する場合、対応の<servlet-class>の完全なクラス名を見つける
メモリにロードされたファイルをバイトコードになる4. Tomcatを、その目的を作成することです
、そのメソッドを呼び出す5.
* サーブレットでのライフサイクル・アプローチ:
1が作成されます。initメソッド、一度だけ
*サーブレットたときに作成されていますか?
*デフォルトでは、それがアクセスされた最初の時間は、サーブレットが作成された
*は、サーブレットは、機会を作成、実行するように構成することができます。
*に設定<サーブレット>タグ
1の場合に最初にアクセスし、作成された
*の<load-on-startup>負の値
2.サーバが作成起動
0 *の<load-on-startup>値をまたは正の整数
*サーブレットの初期化方法は、1つのオブジェクトのみがメモリ内に存在するサーブレットを示し、一度だけ行わ、サーブレットは、シングルトンである
複数のユーザが同時に*アクセスすると、スレッド安全性の問題が存在してもよいです。
*解決策:サーブレットでのメンバ変数を定義しないようにしてください。あなたはメンバ変数を定義した場合でも、の値を変更しないでください
2.サービスの提供:サービス実行方法は、複数の実行
*あなたがサーブレットを訪れるたびに、サービスメソッドが一度呼び出されます。
3.破壊される:実装では、方法は、一度だけ実行される破壊
*サーブレットが破棄された場合に実行されます。サーバーがシャットダウンされると、サーブレットが破壊され
、通常は閉じ*サーバーのみ、destroyメソッドを実行します。
サーブレットが実行破壊される前に*一般的なリリースのリソースに対して、法を破壊します
* Servlet3.0:
*メリット:注釈の設定のためのサポート。あなたは、web.xmlを必要としない場合があります。
*手順:
1. web.xmlの作成することはできません、JavaEEのプロジェクトを選択しサーブレットのバージョン3.0以上を作成
Servletインタフェース実装するクラスの2.定義
3.レプリケーションの方法
クラスの4 @WebServlet注釈を設定
1 @WebServlet( "リソース・ルート" ) 2 @Target(ElementType.TYPE {}) 3。 @Retention(RetentionPolicy.RUNTIME) 4。 @Documented 5。 パブリック @のインターフェイスWebServlet { 6。 文字列名()デフォルト ""; // 同等<名前サーブレット> 7 。8 文字列[]の値()デフォルト {}; // 代表urlPatterns()属性構成 9。 10 列[] urlPatterns()デフォルト {}; // 等価<URLパターン> 。11 12であり、 int型 loadOnStartup( )デフォルト-1; // 相当于の<load-on-startup> 13 14 WebInitParam [] initParams()デフォルト{}。 15 16 ブール asyncSupported()デフォルト はfalse ; 17 18 文字列smallIcon()デフォルト "" 。 19 20 文字列largeIcon()デフォルト "" 。 21 22 文字列の記述()デフォルト「」。 23 24 文字列のdisplayName()デフォルト "" ; 25 }
* Servletアーキテクチャ
サーブレット-インタフェース
|
GenericServletから-抽象クラス
|
のHttpServlet -抽象クラス
*でGenericServlet:Servletインタフェースはデフォルトの空の実装を行うための他の方法は、抽象として、唯一のサービス()メソッドです
* GenericServletからを継承することができ、将来のサーブレットクラスを定義する場合、サービスを実現()メソッドは、することができ
* HttpServletを:操作簡素化するために、HTTPプロトコルのパッケージ、
1クラスを定義するには、HttpServletを継承します
。2.複製のdoGet / doPostメソッドを
* Servlet構成
1. URL-partten:サーブレットアクセスパスが
1サーブレットがアクセスパスを複数定義することができる。@WebServlet({ "/ D4"を、 "/ DD4"、 "/ DDD4"})
2.パス定義ルール:
1. / XXX:一致パス
2 / XXX / XXX:多層パス、ディレクトリ構造
3 * .doという:拡張マッチ(か要求またはPOST要求は、* .doというを使用することができます)
* のServletContextオブジェクト:
1.コンセプト:ウェブアプリケーションの代表的な、通信するための容器もよいプログラム(サーバ)
2.取得:
1. Get要求オブジェクト
request.getServletContextを();
のHttpServletによって得られた2
this.getServletContext()。
3.機能:
1.取得のMIMEタイプ:
* MIMEタイプ:インターネットデータ通信プロセスの文書型定義
型の大型/小型タイプtext / htmlのイメージ/ JPEG:*フォーマット
*取得:のgetMimeType文字列(文字列ファイル)
2.ドメインオブジェクト:共有データ
1のsetAttribute(文字列名、オブジェクト値)
2のgetAttribute(文字列名)
3. removeAttribute(文字列名)
*のServletContext対象範囲:すべてのユーザーはすべてのデータを要求された
実際のファイル(サーバー)のパスを取得3.
文字列getRealPath(文字列のパス):1.メソッドを
ServletContextコンテキスト= request.getServletContext()。
列B = context.getRealPath( "/ B.TXT "); //ウェブディレクトリのアクセスリソースの下
のSystem.out.println(b)は、
文字列C = context.getRealPath( "/ WEB-INF / c.txt");ディレクトリアクセスの下のリソース// WEB-INF
のSystem.out.println(c)は、
文字列A = context.getRealPath( "/ WEB-INF /クラス/ A.TXT");ディレクトリアクセスの下// SRC資源
システム。 out.printlnを(A)。