Вы можете игнорировать тип контента, который устанавливает страница JSP. Это будет достаточно хорошо?
Как дела с сантехникой?
Основной идеей было бы реализовать ServletResponseWrapper, переопределить вызов setContentType и затем использовать фильтр для передачи этого ответа в JSP, а не в реальный.
ResponseWrapperToIgnoreContentType.java
import javax.servlet.ServletResponse;
import javax.servlet.ServletResponseWrapper;
public class ResponseWrapperToIgnoreContentType extends ServletResponseWrapper{
public ResponseWrapperToIgnoreContentType(final ServletResponse response) {
super(response);
}
@Override
public void setContentType(final String type) {
System.out.println("Ignoring call to set the content type to : " + type);
}
}
Фильтр для его применения:
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class ResponseContentTypeFilter implements Filter{
@Override
public void destroy() {
}
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, new ResponseWrapperToIgnoreContentType(response));
}
@Override
public void init(final FilterConfig filterConfig) throws ServletException {
}
}
РЕДАКТИРОВАТЬ: Просто обнаружил недостаток в моей логике. Тип контента должен быть установлен до того, как вы сможете вызвать response.getWriter (), чтобы он мог использовать правильную кодировку символов.
Не знаю, повлияет ли это на вас или нет.