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() {
}}