web-dev-qa-db-ja.com

この表現言語$ {pageContext.request.contextPath}はJSP ELで正確に何をしますか?

ホーム、プロファイルなどのさまざまなナビゲーションアンカータグがあるWebアプリがあります。

私が欲しいもの:

Homeやprofileなどのアンカータグを押すと。現在のユーザーがそのタグ/ JSPページで情報を取得できるようにしたいだけです。

私が試しているサンプル例:

<a  href="${pageContext.request.contextPath}/JSPAddress.jsp">Profile</a>
36
a k

pageContextは、JSPで使用可能な暗黙的なオブジェクトです。 ELのドキュメント は言う

JSPページのコンテキスト。以下を含むさまざまなオブジェクトへのアクセスを提供します。
servletContext:...
セッション:...
リクエスト:...
response:...

したがって、この式は現在のHttpServletRequestオブジェクトを取得し、現在のリクエストの コンテキストパス を取得し、それに/JSPAddress.jspを追加してリンクを作成します(リンクがこのリソースが変更時にアクセスされるコンテキストパス)。

この式の主な目的は、リンクをアプリケーションコンテキストに対して「相対」に保ち、それらをアプリケーションパスの変更から隔離することです。


たとえば、thisJSP.jspでJSP(http://myhost.com/myWebApp/thisJSP.jspという名前)にアクセスする場合、コンテキストパスはmyWebAppになります。したがって、生成されるリンクhrefは/myWebApp/JSPAddress.jspになります。

いつかcorpWebAppのコンテキストパスを使用して別のサーバーにJSPをデプロイすることにした場合、リンク用に生成されたhrefは、ユーザーの作業なしで/corpWebApp/JSPAddress.jspに自動的に変更されます。

65

jSP式言語で_${pageContext.request.contextPath}_の代わりにrequest.getContextPath()を使用します。

_<%
String contextPath = request.getContextPath();
%>
out.println(contextPath);
_

出力:willPrintMyProjectcontextPath

2
bekur

含む<%@ page isELIgnored="false"%> jspページの上部。

2
NaveenG

私のプロジェクトのセットアップでは、「$ {pageContext.request.contextPath}」=は「src/main/webapp」を指します。別の方法は、Eclipseでプロジェクトを右クリックし、[プロパティ]に移動することです。

enter image description here

0
Gene