⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smartxslfilter.java

📁 JAVA Servlet2.3外文书籍源码
💻 JAVA
字号:
package filters;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;

public final class SmartXSLFilter implements Filter {

  private FilterConfig filterConfig = null;
  private TransformerFactory xsltFactory = null;
  private Templates xsltTemplates = null;

  public void doFilter(ServletRequest request, 
                       ServletResponse response,
                       FilterChain chain)
    throws IOException, ServletException {

    String browserUsed = ((HttpServletRequest)request).getHeader("User-Agent").toLowerCase();
    boolean isMSIE = (browserUsed.indexOf("msie") >= 0);
    if (!isMSIE)  {
      PrintWriter realOutput = response.getWriter();
      OutputCapturer myCapture = new OutputCapturer((HttpServletResponse) response);
      chain.doFilter(request,  myCapture);
      try {
        Source xfrmSrc = new StreamSource(new StringReader(myCapture.toString()));
        Transformer tpXfrmer = xsltTemplates.newTransformer();
        CharArrayWriter finalOut = new CharArrayWriter();
        StreamResult xfrmResult  = new StreamResult(finalOut);
        tpXfrmer.transform(xfrmSrc, xfrmResult);
        response.setContentLength(finalOut.toString().length());
        realOutput.write(finalOut.toString());
        filterConfig.getServletContext().log("SmartXSLFilter activated - completed transform"  );
      } catch(Exception ex) {
        filterConfig.getServletContext().log(
                     "SmartXSLFilter - XSLT transformation failed - "
                     + ex.toString());
      }
    } else
      chain.doFilter(request, response);
  }

  public void destroy() {
    this.filterConfig = null;
    this.xsltFactory = null;
    this.xsltTemplates = null;
  }

  public void init(FilterConfig filterConfig) {
    this.filterConfig = filterConfig;
    this.xsltFactory = TransformerFactory.newInstance();
    String xsltfile = filterConfig.getInitParameter("xsltfile");
    
    try {
      String path = this.filterConfig.getServletContext().getRealPath(xsltfile);
      StreamSource stmSource = new StreamSource(path);
      this.xsltTemplates = xsltFactory.newTemplates(stmSource);
    } catch (TransformerConfigurationException ex) {
      System.err.println("Initialization error. " + ex.toString());
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -