Javaアクセスパス関連

3503 ワード

Javaのパスの問題を初めて学びます
  • URL , URI
  • アクセスパスの問題
  • の/先頭の相対パスの例:
  • パス名で始まる例:
  • URL , URI
    URLはアドレスであり、URIはリソースである.URIはリソースタグに名前を付けることを強調し、URLはリソースロケーションURIが統一リソース識別子であり、URLが統一リソースロケーション記号であることを強調する.したがって,要約すると,各URLはURIであるが,必ずしも各URIがURLであるとは限らない.これは、URIには、リソースの名前が付けられているが、リソースの位置付け方法が指定されていない統合リソース名(URN)というサブクラスも含まれているためです.Javaクラスライブラリでは、URIクラスにはリソースへのアクセス方法が含まれていません.唯一の役割は解析です.逆に、URLクラスはリソースに到達するストリームを開くことができます.
    アクセスパスの問題
    URLまたはURIにかかわらず、一般的に2つの部分に分けられ、リソースパスとリソース名パスの最後の/後はリソース名、/前はリソースパス、リソースパスが独立してリソースの正確な位置付けを完了できるかどうかに基づいて、アクセスパスを絶対パスと相対パス、絶対パス=参照パス+相対パスに分け、ブラウザまたはサーバが自動的に相対パスに参照パスを追加する相対パスは、/先頭とパス名先頭の2種類に分けられます./先頭はフロントパス(役割:検索)とバックグラウンドパス(役割:識別)に分けられます.
    ##  /       
    

    /先頭のフロントパス:ブラウザ解析によって実行されるコードに含まれるパス、例えばhtml、css、jsのパスとJSPの静的パス(htmlのパス)、フロントパスの参照パスはwebサーバのルートパス、プロトコル+ホストアドレス、すなわちhttp://127.0.0.1:8080
    /で始まるバックグラウンドパス:サーバ解析によって実行されるコードに含まれるパス、javaコードのパス、jspの動的部分パス、xmlで構成されたパス;バックグラウンドパスの参照パスは、Webアプリケーションのルートパス、すなわちWebRoot、プロトコル+ホストアドレス+プロジェクト名、すなわちhttp://127.0.0.1:8080/serlvlet_01
    ##         
    

    参照パスは、現在のアクセスパスのリソースパスです.
    /で始まる相対パスの例:
    /で始まるフロントパス:例1:htmlの1つのピクチャラベルは、上述したHTMLであるためフロントパスであるため、プラス/;参照パスはhttp://127.0.0.1:8080変換された絶対パスはhttp://127.0.0.1:8080/imgs/car.jpgあ、webサーバの下にimgsというディレクトリがないと、webサーバの下にservlet_が表示されません01このディレクトリのため、表示することができます.したがって、この画像アドレスにはプロジェクト名を付けなければなりません.例2:htmlのフォームパスを追加します.通常、アクセスフォーマットは以下の通りです.結果としてアクセス不可であり、webサーバの下にsomeServiceletがないため、404を報告する.追加するには、プロジェクト名を付けなければなりません.このsomeServiceletはsomeServiceletです.01このプロジェクトの下の;Action=「/someServicelet_01/someServicelet」の例3:servletのバックグラウンドパスは、someServiceletでotherServicelet requestへの転送を要求する.getRequestDispatcher("/otherServlet").forward(request,response); このotherServiceletパスに/を付けるかどうかはわかりませんが、バックグラウンドパスとして考えると、バックグラウンドパス参照パスはhttp://127.0.0.1:8080/+ serlvlet_01(プロジェクト名)絶対パスはhttp://127.0.0.1:8080/serlvlet_01/otherServletああ、これはサーバ解析ですが、サーバでOtherServiceletに指定されたアクセスパスはxmlに/otherServiceletが登録されています.この登録されたバックグラウンドパスの絶対パスはhttp://127.0.0.1:8080/serlvlet_01(プロジェクト名)+/otherServiceletは、上記の要求のパスと一致するため、otherServiceletはリソースインスタンス4にアクセスするために追加/追加する必要がある:リダイレクトに関する特例response.sendRedirect("/otherServlet");このバックグラウンドパスは、我々のインスタンス3の解析に従ってリソースにアクセスできるはずであるが、結果404(実際のアクセスパス)http://127.0.0.1:8080/otherServlet),http://127.0.0.1:8080/下にotherServiceletはありません.プロジェクト名が少なくなりました.sendRedirectメソッドの本質が決定するため(このメソッドは他のリソースにジャンプすることができる)、その参照パスはhttp://127.0.0.1:8080/serlvlet_01ではなくhttp://127.0.0.1:8080;responseをジャンプするには、プロジェクトのルートパスを追加する必要があります.sendRedirect("/serlvlet_01/otherServlet");プロジェクトのルートパスは死なないのでresponse.sendRedirect(request.getContextPath() + "/otherServlet"); これだけが特例であることに注意してください.将来私たちが学ぶ他の方法で実現されるリダイレクトは特例ではありません.
    パス名で始まる例:
    パス名で始まる、現在のアクセスパスであるリソースパスの例5:index.htmlのパスとこのフロントパスの両方に表示できる参照パスは、現在のアクセスパスのリソースパス、すなわちページを初期化するリソースパスであり、http://127.0.0.1:8080/serlvlet_01/index.htmlのリソースパスhttp://127.0.0.1:8080/serlvlet_01を選択し、imgs/carを追加します.jpgはhttp://127.0.0.1:8080/serlvlet_01/imgs/car.jpgを選択します.formフォームのaction属性がパスで始まるのもこの原理例6 requestである.getRequestDispatcher(“otherServlet”).forward(request,response); この非加算/は、参照パスが現在のアクセスパスです(http://127.0.0.1:8080/serlvlet_01/someServlet)のリソースパス(http://127.0.0.1:8080/serlvlet_01);その絶対パスはhttp://127.0.0.1:8080/serlvlet_01/otherServletああ、だからアクセスできるresponse.sendRedirect(“otherServlet”);アクセスも可能で、追加/は必要ありません.これはパスで始まる特例の注意ではありません.プラス/、プラス/しない場合は、プラス/のパスの参照パスがwebサーバまたはアプリケーションのルートパスであるため、プラス/を推奨します.加算/しない参照パスが現在のアクセスパスであるリソースパスは可変です