liferay过滤器(四)
1、ThemePreviewFilter过滤器
主要代码:
ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
???WebKeys.THEME_DISPLAY);
??Pattern cssPattern = Pattern.compile(
???themeDisplay.getPathThemeCss());
??Matcher cssMatcher = cssPattern.matcher(content);
??content = cssMatcher.replaceAll("css");
??Pattern imagePattern = Pattern.compile(
???themeDisplay.getPathThemeImages());
??Matcher imageMatcher = imagePattern.matcher(content);
??content = imageMatcher.replaceAll("images");
功能:判断是否是要预览,如果是预览,替换response中的themeDisplay.getPathThemeCss()为“css”,themeDisplay.getPathThemeImages()为“images”。(预览时不加载layout)
?
2、Sharepoint过滤器
主要代码:
protected void setGetHeaders(HttpServletResponse response) {
??response.setContentType("text/html");
??response.setHeader(
???"Public-Extension", "http://schemas.microsoft.com/repl-2");
??response.setHeader(
???"MicrosoftSharePointTeamServices", SharepointUtil.VERSION);
??response.setHeader("Cache-Control", "no-cache");
?}
?protected void setOptionsHeaders(HttpServletResponse response) {
??response.setHeader("MS-Author-Via", "MS-FP/4.0,DAV");
??response.setHeader("MicrosoftOfficeWebServer", "5.0_Collab");
??response.setHeader(
???"MicrosoftSharePointTeamServices", SharepointUtil.VERSION);
??response.setHeader("DAV", "1,2");
??response.setHeader("Accept-Ranges", "none");
??response.setHeader("Cache-Control", "no-cache");
??response.setHeader(
???"Allow",
???"COPY, DELETE, GET, GETLIB, HEAD, LOCK, MKCOL, MOVE, OPTIONS, " +
????"POST, PROPFIND, PROPPATCH, PUT, UNLOCK");
?}
?protected void setPostHeaders(HttpServletResponse response) {
??response.setContentType("application/x-vermeer-rpc");
??response.setHeader(
???"MicrosoftSharePointTeamServices", SharepointUtil.VERSION);
??response.setHeader("Cache-Control", "no-cache");
??response.setHeader("Connection", "close");
?}
主要功能:设置返回的html的头协议。
?
3、VirtualHostFilter 过滤器
主要代码:
String friendlyURL = request.getRequestURI();
??if ((Validator.isNotNull(contextPath)) &&
???(friendlyURL.indexOf(contextPath) != -1)) {
???friendlyURL = friendlyURL.substring(contextPath.length());
??}
??friendlyURL = StringUtil.replace(
???friendlyURL, StringPool.DOUBLE_SLASH, StringPool.SLASH);
主要功能:把虚拟主机的地址隐射成新的地址。
?
4、ThreadLocalFilter过滤器
主要代码:
if (threadLocalSet == null) {
???return;
??}
??for (ThreadLocal<?> threadLocal : threadLocalSet) {
???threadLocal.remove();
??}
功能:用户请求完成后,从线程池中移除此线程
?
5、StripFilter 过滤器
主要代码:
boolean skipped = false;
??for (int i = charBuffer.position(); i < charBuffer.limit(); i++) {
???char c = charBuffer.get();
???if ((c == CharPool.SPACE) || (c == CharPool.TAB) ||
????(c == CharPool.RETURN) || (c == CharPool.NEW_LINE)) {
????skipped = true;
????continue;
???}
???else {
????charBuffer.position(i);
????break;
???}
??}
??if (skipped) {
???writer.write(CharPool.SPACE);
??}
主要功能:去掉空行,加快页面的展示速度。