📄 smartxslfilter.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 + -