1.properties文件的应用
在<filter>写入配置
<filter> <filter-name>myFilter</filter-name> <filter-class>filter.MyFilter</filter-class> <init-param> <param-name>file</param-name> <param-value>/WEB-INF/sensitive.properties</param-value> </init-param> </filter>
在filter中提出
private Properties pp = new Properties(); String file = filterConfig.getInitParameter("file"); String realPath = filterConfig.getServletContext().getRealPath(file);// 获取真实路径 try { pp.load(new FileInputStream(realPath)); for (Object j : pp.keySet()) { String key = (String) j; // String newKey = new String((oldKey.getBytes("ISO8859-1")), // "UTF8"); output = output.replace(key, pp.getProperty(key));
2.HttpCharacterResponseWrapper extends HttpServletResponseWrapper
通过继承HttpServletResponseWrapper
在里面定义一个private CharArrayWriter charArrayWriter = new CharArrayWriter();来缓冲数据
重写getWriter()
写个一个getCharArrayWriter()来获得缓冲内容
HttpCharacterResponseWrapper
package filter; import java.io.CharArrayWriter; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; public class HttpCharacterResponseWrapper extends HttpServletResponseWrapper { private CharArrayWriter charArrayWriter = new CharArrayWriter(); public HttpCharacterResponseWrapper(HttpServletResponse response) { super(response); // TODO Auto-generated constructor stub } public PrintWriter getWriter() throws IOException { return new PrintWriter(charArrayWriter); } public CharArrayWriter getCharArrayWriter() { return charArrayWriter; } }
Filter
package filter; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintWriter; import java.util.Properties; 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 MyFilter implements Filter { private Properties pp = new Properties(); @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletResponse HttpResponse = (HttpServletResponse) response; HttpCharacterResponseWrapper MyResponse = new HttpCharacterResponseWrapper( HttpResponse); chain.doFilter(request, MyResponse); String output = MyResponse.getCharArrayWriter().toString(); for (Object j : pp.keySet()) { String key = (String) j; // String newKey = new String((oldKey.getBytes("ISO8859-1")), // "UTF8"); output = output.replace(key, pp.getProperty(key)); // output = output.replaceAll(newKey, pp.getProperty(oldKey)); } // System.out.println(output); PrintWriter out = response.getWriter(); out.write(output); } @Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub String file = filterConfig.getInitParameter("file"); String realPath = filterConfig.getServletContext().getRealPath(file);// 获取真实路径 try { pp.load(new FileInputStream(realPath)); /* * BufferedReader br = null; br = new BufferedReader(new * InputStreamReader(new FileInputStream( new File(realPath)), * "utf-8")); pp.load(br); */ } catch (IOException e) { } } }