diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/CharsetEncodingFilter.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/CharsetEncodingFilter.java
index 2f654f05e..d6a2c6a83 100644
--- a/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/CharsetEncodingFilter.java
+++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/CharsetEncodingFilter.java
@@ -7,6 +7,7 @@ import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@@ -15,17 +16,37 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class CharsetEncodingFilter implements Filter {
- public void init(FilterConfig filterConfig) throws ServletException {
- }
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ // Nothing to set up
+ }
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
- if( !ServletFileUpload.isMultipartContent((HttpServletRequest) servletRequest) )
- servletRequest.setCharacterEncoding("UTF-8");
- servletResponse.setContentType("text/html;charset=UTF-8");
- filterChain.doFilter(servletRequest, servletResponse);
- }
+ @Override
+ public void doFilter(ServletRequest servletRequest,
+ ServletResponse servletResponse, FilterChain filterChain)
+ throws IOException, ServletException {
+ HttpServletRequest req = (HttpServletRequest) servletRequest;
+ ServletContext ctx = req.getSession().getServletContext();
+ String url = req.getRequestURL().toString();
- public void destroy() {
- }
+ if (!ServletFileUpload.isMultipartContent(req)) {
+ servletRequest.setCharacterEncoding("UTF-8");
+ }
+
+ if (req.getContentType() == null) {
+ String typeFromContext = ctx.getMimeType(url);
+ if (typeFromContext == null) {
+ servletResponse.setContentType("text/html;charset=UTF-8");
+ } else {
+ servletResponse.setContentType(typeFromContext);
+ }
+ }
+
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+
+ @Override
+ public void destroy() {
+ // Nothing to tear down
+ }
}
-
diff --git a/webapp/web/WEB-INF/web.xml b/webapp/web/WEB-INF/web.xml
index 6c8a7db6b..720b72fb1 100644
--- a/webapp/web/WEB-INF/web.xml
+++ b/webapp/web/WEB-INF/web.xml
@@ -1238,8 +1238,63 @@
/selectLocale
-
+
+
+
+ css
+ text/css
+
+
+ gif
+ image/gif
+
+
+ GIF
+ image/gif
+
+
+ htm
+ text/html
+
+
+ html
+ text/html
+
+
+ ico
+ image/x-icon
+
+
+ jpeg
+ image/jpeg
+
+
+ jpg
+ image/jpeg
+
+
+ js
+ application/javascript
+
+
+ png
+ image/png
+
+
+ svg
+ image/svg+xml
+
+
+ txt
+ text/plain
+
+
+ xml
+ application/xml
+
+
+
/WEB-INF/tlds/database.tld