ファイル拡張子を削除するか、URLを短縮することで、GlassfishV3アプリケーションにアクセスするためのURLを簡略化したいと思います。
アプリケーションをデフォルトのアプリケーションとして設定しているので、URLにコンテキストルートを含める必要はありません。
そうしたいです:
*ファイル拡張子を削除します
*フォルダ構造の奥深くにあるファイルへのURLを短くします
ファイルごとではなく、パターンマッチングを使用してこれを実行したいと思います(サイトは現時点では小さいですが、頻繁に変更され、拡大します)。
私がやりたいことのいくつかの例:
* foo.com/bar.html-> foo.com/bar
* foo.com/folder1/folder2/bar2.html-> foo.com/bar2
どんな助けでも大歓迎です。ありがとう。
乾杯、
ジン
http://www.Sun.com/bigadmin/sundocs/articles/urlrdn.jsp から取得これはあなたが探しているもののようです。
ドメイン内のURLリダイレクト
Redirect_プロパティのurl-prefix要素を使用して、同じドメイン内の別のURLにURLを転送できます。
次の手順は、Webサイトへの訪問者が http://www.mywebsite.com/myproduct1 と入力し、 http://www.mywebsite)にリダイレクトまたは転送できるようにする方法を示しています。 .com/mywarname/products/myproduct1.jsp 。
Server-configノードを展開します。
開発者ドメイン(クラスタリング機能を持たないドメイン)を実行している場合は、この手順を無視してください。
HTTPサービスを展開します。
redirect_1
」と入力します。Application Server 9.0を使用している場合は、[値]列にfrom=/<context-root>/myproduct1 url-prefix=/mywarname/mypages/products/myproduct1.jsp
と入力します。
注-ここで指定する<context-root>
の値は、web.xmlまたはアプリケーションで指定されたコンテキストルートの値と一致する必要があります。 xmlファイル。
Application Server 9.1を使用している場合は、[値]列にfrom=/myproduct1 url-prefix=/mywarname/mypages/products/myproduct1.jsp
と入力します。
この場合、短縮URLを認識し、リクエストを実際のターゲットに転送するjavax.servlet.Filter実装を作成する必要があります。
/**
*
* @author vrg
*/
@WebFilter(filterName = "SimplifiedUrlRequestDispatcher", urlPatterns = {"/*"})
public class ShortenedUrlRequestDispatcher implements javax.servlet.Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//reading configuration from filterConfig
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String shortURI = httpRequest.getRequestURI();
String realURI = getRealURI(shortURI);
if (realURI == null) {
//in this case the filter should be transparent
chain.doFilter(request, response);
} else {
//forwarding request to the real URI:
RequestDispatcher rd = request.getRequestDispatcher(realURI);
rd.forward(request, response);
}
}
/**
* Calculates the real URI from the given URI if this is a shortened one,
* otherwise returns null.
* @param shortURI
* @return
*/
private String getRealURI(String shortURI) {
//TODO implement your own logic using regexp, or anything you like
return null;
}
@Override
public void destroy() {
}
}
привет!優れた入門書ですが、もう1つ-RequestDispatcher rd = request.getRequestDispatcher(realURI);
はサーブレットパスで動作し、アプリケーション名でURIを取得すると、エラーが発生します。したがって、-req.getServletPath()
はコンテキストなしで正しいパスを提供し、ディスパッチャは正常に機能します。