读书人

liferay过滤器(4)

发布时间: 2012-10-30 16:13:36 作者: rapoo

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);
??}

主要功能:去掉空行,加快页面的展示速度。

读书人网 >软件架构设计

热点推荐