サーブレットフィルターを使用して受信サーブレットリクエストのURLを変更するにはどうすればよいですか
http://nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123
に
http://nm-java.appspot.com/Check_License?Contact_Id=My_Obj_123
?
更新:以下のBalusCの手順に従って、私は次のコードを考え出しました:
public class UrlRewriteFilter implements Filter {
@Override
public void init(FilterConfig config) throws ServletException {
//
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
String requestURI = request.getRequestURI();
if (requestURI.startsWith("/Check_License/Dir_My_App/")) {
String toReplace = requestURI.substring(requestURI.indexOf("/Dir_My_App"), requestURI.lastIndexOf("/") + 1);
String newURI = requestURI.replace(toReplace, "?Contact_Id=");
req.getRequestDispatcher(newURI).forward(req, res);
} else {
chain.doFilter(req, res);
}
}
@Override
public void destroy() {
//
}
}
の関連エントリは次のweb.xml
ようになります。
<filter>
<filter-name>urlRewriteFilter</filter-name>
<filter-class>com.example.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>urlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
サーバー側とクライアント側の両方のリダイレクトを試しましたが、期待どおりの結果が得られました。BalusCに感謝します。
関連質問:stackoverflow.com/questions/2723829/…–
—
BalusC、
使用しているサーブレット仕様のバージョンは何ですか?リクエストを転送する方法は、バージョンによって異なります。
—
ロメインヒッポー
この投稿を参照してください。また、希望
—
どおりの
元のURLにパラメーター(nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123?** param1 = A&param2 = B **)が含まれている場合、これらのパラメーターも次のサーブレット/ jspに転送されることに注意してください。(HttpServletRequestWrapperを使用してのみ)元のパラメーターを削除または置き換える方法が見つかりませんでした。任意のアイデア?..更新:http : //ocpsoft.org/opensource/how-to-safely-add-modify-servlet-request-parameter-values/がこの問題に対処しているようです。
—
ロポトゥン
ありがとう、URLの書き換えと暗号化の例を探していました。
—
Aditya Yada