JAVAはゼロから知識整理を勉強します。HTML——day 08-【Servlet&request】

3995 ワード

一、Servlet
  • 概念
  • ステップ
  • 実行原理
  • ライフサイクル
  • Servlet 3.0注釈構成
  • ServletのアーキテクチャServlet–インターフェースのGeneraicServlet–抽象クラスのHttpServlet–抽象クラス
  • GeneraicServlet:Servletインターフェース内の他の方法をデフォルトの空実装し、service()方法だけを抽象的*将来Servletクラスを定義すると、GenericServletを継承し、service()方法を実現すれば
  • HttpServlet:httpプロトコルのパッケージ化について、簡略化動作1.定義クラス継承HttpServlet 2.複写doGet/doPost方法
  • Servlet関連構成1.urlpartten:Servletアクセスパス1.一つのServletは複数のアクセスパスを定義できます。@WebServlet(\"/d 4"、//ddd4")2.パス定義ルール:1.xxx:経路マッチング2./xxx/多重層パス、拡張テーブル構造7956 do
    二、Http
  • 概念:Hyper Text Transfer Protocol超テキスト転送プロトコル
  • 転送プロトコル:クライアントとサーバが通信する場合、データを送信するフォーマット
  • を定義しました。
  • 特徴:
  • TCP/IPベースのハイレベルプロトコル
  • デフォルトポート番号:80
  • は、要求/応答モデルに基づいている。一次要求は、一次応答
  • に対応する。
  • 無状態:各要求間が独立しており、相互作用ができないデータ
  • 歴史バージョン:
  • 1.0:要求応答ごとに新しい接続が確立されます。
  • 1.1:多重接続
  • 要求メッセージデータフォーマット
  • 要求行の要求方式は、url要求プロトコル/バージョンGET/loging.HTTP/1.1
  • を要求する。
  • 要求方式:
  • HTTPプロトコルは7つの要求方式があり、よく使われるのは2つの
  • です。
  • GET:1.要求パラメータは、要求行において、url後である。2.要求されたurlの長さに制限がある3.あまり安全ではない
  • POST:1.要求パラメータが要求体にある2.要求されたurl長に制限がない3.相対安全
  • 要求ヘッダ:クライアントブラウザはサーバにいくつかの情報要求ヘッダ名を教えます。要求ヘッダ値*共通の要求ヘッダ:1.User-Agent:ブラウザはサーバに教えて、私はあなたが使用するブラウザバージョン情報にアクセスします。*このヘッダの情報をサーバ端で取得して、ブラウザの互換性問題を解決します。2.Referer:http://localhost/login.html
  • サーバに教えてください。どこから来ましたか?
  • 作用:1.防犯チェーン:2.統計業務:
  • は、POST要求の要求ヘッダと要求体を分割するための空行を要求する。
  • 要求体(本文):
  • パッケージPOST要求メッセージの要求パラメータの
  • メッセージフォーマットの例:
    *      :
    POST /login.html HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101
    Firefox/60.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Referer: http://localhost/login.html
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    username=zhangsan
    
  • request機能:1.取得要求メッセージデータ1.取得要求行データ*GET/day 14/demo 1?name=zhangsan HTTP/1.1*方法:1.取得要求方式:GET*String getMethod()2.()仮想ディレクトリを取得する:/day 14*String getConttextPath()3.Servletパスを取得する:/demo1*String getServletPath(4.get)取得要求パラメータ:nagentingggggggtututututuryryryryststststingggggggsantryryryryststingsant 14(Stagagagagagagagagagagagagagagagtrtrtrtrtrtrtrtrtrtrtrtrtrtrtrtreng)要求要求要求パラメータ:Stagagagagagagagag:/day 14/demo 1*StringBuffer get Request URL():http://localhost/day14/demo1
     				* URL:        : http://localhost/day14/demo1	       
     				* URI:        : /day14/demo1					   
     			
     			6.        :HTTP/1.1
     				* String getProtocol()
    
     			7.       IP  :
     				* String getRemoteAddr()
     			
     	2.        
     		*   :
     			* (*)String getHeader(String name):               
     			* Enumeration getHeaderNames():          
     		
     	3.        :
     		*    :  POST    ,     ,        POST       
     		*   :
     			1.      
     				*  BufferedReader getReader():       ,        
     				*  ServletInputStream getInputStream():       ,          
     					*            	
     			2.          
    
  • 他の機能:1.取得要求パラメータ共通方式:getまたはpost要求方式を問わず、要求パラメータ1.String getParameter(String name):パラメータ名からパラメータ値username=zs&password=123 2.String[]getParameterValues[]を取得します。:パラメータ名からパラメータ値を取得する配列hobry=xx& hobry=game 3.Enumeration get ParameterNames():要求されたすべてのパラメータ名を取得する4.Map getParameterMap():すべてのパラメータを取得するmapセット
     		*       :
     			* get  :tomcat 8    get         
     			* post  :   
     				*   :      ,  request   request.setCharacterEncoding("utf-8");
    
  • 要求転送:サーバ内部でのリソースジャンプ方式1.ステップ:1.requestオブジェクト取得要求トランスミッタオブジェクト:Request DispartgetRequest DispartDisplatch 2.Requingpatchオブジェクトを用いて転送:forward(ServletRequest request)2479。
  • 共有データ:*ドメインオブジェクト:作用範囲があるオブジェクトは、範囲内でデータ*requestドメインを共有することができます。一度の要求の範囲を表し、転送を要求するために一般的に使用される複数のリソースの中でデータを共有する方法:1.void set Attribute(String name,Object Object Obbbbbbject Obbj):データを格納します。:キーで取得した値3.void removeAttribute(String name):キーをキーで削除した値対