StrutsのURLリライティングを無効化

StrutsのURLリライティングを強制的に無効化する。バッドノウハウです。
一応、ファイルアップロードやファイルダウンロードでもアプリは動いてた。

ResponseWrapper

レスポンスクラスのURLエンコードを強制的に無効化するラッパー。


import javax.servlet.http.*;

public class ResWrap extends HttpServletResponseWrapper {

public ResWrap(HttpServletResponse res) {
super(res);
}

public String encodeUrl(String url) {
return url;
}

public String encodeURL(String url) {
return url;
}

}

ResponseWrappingFilter

レスポンスにラッパーを被せるフィルタ。


import java.io.IOException;

import javax.servlet.*;

public class ResWrapFilter implements Filter {

public void init(FilterConfig config) throws ServletException {
}

public void doFilter(
ServletRequest req,
ServletResponse res,
FilterChain chain)
throws IOException, ServletException {
chain.doFilter(req, new ResWrap( (HttpServletResponse) response ) );
}

public void destroy() {
}

}