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要求メッセージの要求パラメータの メッセージフォーマットの例: 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 他の機能: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セット 要求転送:サーバ内部でのリソースジャンプ方式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):キーをキーで削除した値対
二、Http
* :
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
* 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.
* :
* get :tomcat 8 get
* post :
* : , request request.setCharacterEncoding("utf-8");