struts2项目中静态html在firefox下乱码的解决 (二)

2014-11-24 07:34:36 · 作者: · 浏览: 1
tType = getContentType(name);
if (contentType != null) {
response.setContentType(contentType);
}

if (serveStaticBrowserCache) {
// set heading information for caching static content
response.setDateHeader("Date", now);
response.setDateHeader("Expires", expires);
response.setDateHeader("Retry-After", expires);
response.setHeader("Cache-Control", "public");
response.setDateHeader("Last-Modified", lastModifiedMillis);
} else {
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "-1");
}

try {
copy(is, response.getOutputStream());
} finally {
is.close();
}
return;
}
}
}

response.sendError(HttpServletResponse.SC_NOT_FOUND);
}

// ..

protected InputStream findInputStream(String name, String packagePrefix) throws IOException {
String resourcePath;
if (packagePrefix.endsWith("/") && name.startsWith("/")) {
resourcePath = packagePrefix + name.substring(1);
} else {
resourcePath = packagePrefix + name;
}

resourcePath = URLDecoder.decode(resourcePath, encoding);

return ClassLoaderUtil.getResourceAsStream(resourcePath, getClass());
}


可以看到,由 ClassLoaderUtil.getResourceAsStream 载入静态资源,然后回送。ClassLoaderUtil 还是用了 xwork 的 lib,struts2并没有重写这个类。这个回送过程中,FilterDispatcher 并没有指定回送字符集,因此输出页面会采用服务器默认字符集,当然跟具体操作系统也有关系。目前还没看到有默认以UTF-8作为服务器字符集的。


摘自 GoldenAges1989