是否可以在响应时使JSP页面没有设置任何内容类型?在我的设置中,JSP不直接生成响应,而是直接生成中间表示,然后由另外的Java代码处理,该代码基于此创建HTML或JSON。那么,我能以某种方式使JSP 不在响应上设置内容类型并将其留给中间代码吗?如果我只删除JSP中的contentType="..."
,它仍然默认为text/html
。
答案 0 :(得分:1)
您可以忽略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 {
}
}
答案 1 :(得分:0)
不。
为什么不将首选内容类型存储在您正在创建的类中并为其生成访问器并让JSP从那里获取?