Glassfish上的JSF Web应用程序的强制特定响应标头

时间:2011-04-27 18:07:10

标签: java jsf java-ee http-headers

我们有一个Java EE 6 Web应用程序,在Glassfish 3.1上运行JSF 2.0。

我们遇到了一个奇怪的错误:Glassfish向客户端发送的响应头的Mime类型取决于浏览器发送的请求头中允许的Mime类型的顺序。所以在某些情况下(取决于浏览器),响应的Mime类型是错误的,导致html页面损坏。 但解释这件事需要很长时间。因此,要解决此问题,我们现在只想做一件事:

强制整个网络应用程序的响应标头类型为“text / html”。

目前,我们使用Web.xml中配置的Servlet过滤器执行此操作:

@WebFilter("/BaseFilter")
public class BaseFilter implements Filter {
     public BaseFilter() {
     }

     public void destroy() {
     }

     public void doFilter(ServletRequest request, ServletResponse response, 
                          FilterChain chain) throws IOException, ServletException {
         response.setContentType("text/html;charset=UTF-8");
         chain.doFilter(request, response);
     }

     public void init(FilterConfig fConfig) throws ServletException {
     }
 }
web.xml中的

配置:

<filter>
  <filter-name>BaseFilter</filter-name>
  <filter-class>com.company.web.filter.BaseFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>BaseFilter</filter-name>
  <url-pattern>/*</url-pattern> 
  <!-- these patterns should match cached resources -->
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>FORWARD</dispatcher>
</filter-mapping>

所以我的问题是,是否有更好的方法来强制执行特定的响应标头,特别是通过配置它而不是实现ServletFilter?

有没有Glassfish选项可以做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用contentType的{​​{1}}属性在默认模板中指定它。

<f:view>