ホーム、プロファイルなどのさまざまなナビゲーションアンカータグがあるWebアプリがあります。
私が欲しいもの:
Homeやprofileなどのアンカータグを押すと。現在のユーザーがそのタグ/ JSPページで情報を取得できるようにしたいだけです。
私が試しているサンプル例:
<a href="${pageContext.request.contextPath}/JSPAddress.jsp">Profile</a>
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
に自動的に変更されます。
jSP式言語で_${pageContext.request.contextPath}
_の代わりにrequest.getContextPath()
を使用します。
_<%
String contextPath = request.getContextPath();
%>
out.println(contextPath);
_
出力:willPrintMyProjectcontextPath
含む<%@ page isELIgnored="false"%>
jspページの上部。