filter または servlet を使用して requestURL を変更する方法。
たとえば、リクエストが「http://servername1:8080」の場合、同じものを「http://servername2:7001」に変更したい
filter または servlet を使用して requestURL を変更する方法。
たとえば、リクエストが「http://servername1:8080」の場合、同じものを「http://servername2:7001」に変更したい
次のサーブレット フィルタをアプリケーションに追加します。
public class RequestUrlRewritingFilter implements Filter {
//Empty init()/destroy() here
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
final HttpServletRequestWrapper wrapped = new HttpServletRequestWrapper(request) {
@Override
public StringBuffer getRequestURL() {
final StringBuffer originalUrl = ((HttpServletRequest) getRequest()).getRequestURL();
return new StringBuffer("http://servername2:7001");
}
};
chain.doFilter(wrapped, response);
}
}
インターセプトするすべてのリクエストは、それを通過する必要があります。ご覧のとおり、元のメソッドを取り、別の値を返すことでrequest
メソッドをオーバーライドします。getRequestURL()
古い URL に基づいて新しい URL を作成する場合は、元のリクエストに引き続きアクセスできます。
最後に、リクエストの処理を続行する必要がありますがchain.doFilter()
、元のリクエストではなく、ラップされたリクエストを提供する必要があります。