使用 Jboss6.1 设置 Http header

Set Http header using Jboss6.1

有什么方法可以使用 Jboss6.1 的配置文件来设置 HttpHeader。这些配置适用于整个项目。

我想使用其配置文件在 Jboss6.1 服务器中设置波纹管属性。

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0);

我用 domain.xml 试过了,但没有用。

不要让自己复杂化。如果您希望每个响应都具有此 header 配置,请创建您自己的过滤器来执行此操作。这样你就不会和JBoss耦合,得到你想要的。

这里有一个过滤器示例:

package your.package;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class NoCacheFilter implements Filter {

          @Override
          public void destroy() {
          }

          @Override
          public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
                  HttpServletResponse hsr = (HttpServletResponse) res;
                  hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
                  hsr.setHeader("Pragma", "no-cache");
                  hsr.setDateHeader("Expires", 0);
                  chain.doFilter(req, res);
          }

          @Override
          public void init(FilterConfig arg0) throws ServletException {
          }
}

那么您只需将它配置到您的 web.xml 中或多或少这样:

<filter>
    <filter-name>noCacheFilter</filter-name>
    <filter-class>your.package.NoCacheFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>noCacheFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

此映射对所有请求均有效,但您可以对其进行调整。

希望对您有所帮助!