1 /*
2 * This software was designed and created by Jason Carroll.
3 * Copyright (c) 2002, 2003, 2004 Jason Carroll.
4 * The author can be reached at jcarroll@cowsultants.com
5 * ITracker website: http://www.cowsultants.com
6 * ITracker forums: http://www.cowsultants.com/phpBB/index.php
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it only under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 */
18
19 package org.itracker.web.filters;
20
21 import javax.servlet.*;
22 import java.io.IOException;
23
24
25 /**
26 * This class will set the chracter encoding of each request that uses the filter. It
27 * will use the encoding specifried in the init parameter, or if that is not present,
28 * fall back to a default value of UTF-8.
29 */
30 public class SetRequestCharacterEncoding implements Filter {
31
32 public static final String DEFAULT_ENCODING = "UTF-8";
33
34 private FilterConfig filterConfig = null;
35 private String encoding = null;
36
37 /**
38 * Set the character encoding in the request.
39 *
40 * @param request the current ServletRequest object
41 * @param response the current ServletResponse object
42 * @param filterChain the current FilterChain
43 * @throws IOException if any io error occurs
44 * @throws ServletException any other servlet error occurs
45 */
46 public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
47 request.setCharacterEncoding(getEncoding());
48 filterChain.doFilter(request, response);
49 }
50
51 /**
52 * Initialize the filter.
53 *
54 * @param filterConfig the current filter configuration
55 */
56 public void init(FilterConfig filterConfig) throws ServletException {
57 this.filterConfig = filterConfig;
58 setEncoding(filterConfig.getInitParameter("encoding"));
59 }
60
61 /**
62 * Returns the encoding of the request.
63 */
64 public String getEncoding() {
65 return (encoding == null ? DEFAULT_ENCODING : encoding);
66 }
67
68 /**
69 * Sets the encoding of the request.
70 */
71 public void setEncoding(String value) {
72 if (value != null) {
73 encoding = value;
74 }
75 }
76
77 /**
78 * Reset the filter settings.
79 */
80 public void destroy() {
81 encoding = null;
82 filterConfig = null;
83 }
84
85 public FilterConfig getFilterConfig() {
86 return filterConfig;
87 }
88
89 public void setFilterConfig(FilterConfig filterConfig) {
90 this.filterConfig = filterConfig;
91 }
92 }
93