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

📄 msgutil.java

📁 源码/软件简介: 云网论坛1.1RC国际版是采用JSP开发的集论坛、CMS(网站内容管理系统)、博客、聊天室、商城、交友、语音灌水等于一体的门户式社区。拥有CWBBS ( Cloud Web BBS
💻 JAVA
字号:
package com.redmoon.forum;

import cn.js.fan.util.StrUtil;
import java.util.Vector;
import org.htmlparser.Node;
import org.htmlparser.util.ParserException;
import org.htmlparser.nodes.TextNode;
import org.htmlparser.filters.OrFilter;
import org.htmlparser.NodeFilter;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.Parser;
import org.htmlparser.util.NodeList;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.tags.LinkTag;
import javax.servlet.http.HttpServletRequest;
import cn.js.fan.web.SkinUtil;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class MsgUtil {
    public static final int MAX_LEN2 = 3000;

    public MsgUtil() {
    }

    /**
     * 去掉左右空格后字符串是否为空
     * @param astr String
     * @return boolean
     */
    public static boolean isTrimEmpty(String astr) {
        if ((null == astr) || (astr.length() == 0)) {
            return true;
        }
        if (isBlank(astr.trim())) {
            return true;
        }
        return false;
    }

    /**
     * 字符串是否为空:null或者长度为0.
     * @param astr 源字符串.
     * @return boolean
     */
    public static boolean isBlank(String astr) {
        if ((null == astr) || (astr.length() == 0)) {
            return true;
        } else {
            return false;
        }
    }

    public static String getAbstract(HttpServletRequest request, MsgDb md, int len) {
        String content = md.getContent();
        // if (content.length() <= len)
        //    return content; // 考虑到上传图片路径的问题,还是必须要取摘要,以免产生相对路径问题,因为上传文件在forum/upfile目录下
        content = StrUtil.getLeft(content, len);

        // 对未完成的标签补齐,以免出现<im或<tab这样的标签
        int idx1 = content.lastIndexOf('<');
        int idx2 = content.lastIndexOf('>');
        // 如果截取时,未取到 > ,则继续往前取,直到取到为止
        // System.out.println("MsgUtil.java getAbstract: idx1=" + idx1 + " idx2=" + idx2);
        if ((idx2 == -1 && idx1 >= 0) || (idx1 > idx2)) {
            String ct3 = md.getContent();
            int idx3 = ct3.indexOf('>', idx1);
            if (idx3!=-1) {
                if (idx3 < MAX_LEN2) {
                    content = ct3.substring(0, idx3 + 1);
                }
            }
        }

        // 对于ActiveX对象进行预处理
        idx2 = content.toLowerCase().lastIndexOf("</object>");
        idx1 = content.toLowerCase().lastIndexOf("<object");
        if ((idx2 == -1 && idx1 >= 0) || idx1 > idx2) {
            String ct2 = md.getContent().toLowerCase();
            int idx3 = ct2.indexOf("</object>");
            if (idx3 != -1)
                content += md.getContent().substring(content.length(), content.length() + idx3 + 9);
            else
                content = md.getContent().substring(0, idx1);
        }

        String str = "";
        try {
            Parser myParser;
            NodeList nodeList = null;
            myParser = Parser.createParser(content, "utf-8");
            NodeFilter textFilter = new NodeClassFilter(TextNode.class);
            NodeFilter linkFilter = new NodeClassFilter(LinkTag.class);
            NodeFilter imgFilter = new NodeClassFilter(ImageTag.class);
            // 暂时不处理 meta
            // NodeFilter metaFilter = new NodeClassFilter(MetaTag.class);
            OrFilter lastFilter = new OrFilter();
            lastFilter.setPredicates(new NodeFilter[] {textFilter, linkFilter,
                                     imgFilter});
            nodeList = myParser.parse(lastFilter);
            Node[] nodes = nodeList.toNodeArray();
            for (int i = 0; i < nodes.length; i++) {
                Node anode = (Node) nodes[i];
                String line = "";
                if (anode instanceof TextNode) {
                    TextNode textnode = (TextNode) anode;
                    // line = textnode.toPlainTextString().trim();
                    line = textnode.getText();
                } else if (anode instanceof ImageTag) {
                    ImageTag imagenode = (ImageTag) anode;
                    String url = imagenode.getImageURL();
                    String ext = StrUtil.getFileExt(url).toLowerCase();
                    // 如果地址完整
                    if (ext.equals("gif") || ext.equals("png") || ext.equals("jpg") || ext.equals("jpeg") || ext.equals("bmp")) {
                        // System.out.println("MsgUtil.java getAbstract:" + imagenode.toHtml() + " url=" + imagenode.getImageURL());
                        if (imagenode.getImageURL().startsWith("http"))
                            ; // line = "<div align=center>" + imagenode.toHtml() + "</div>";
                        else if (imagenode.getImageURL().startsWith("/")) {
                            ; //line = "<div align=center>" + imagenode.toHtml() + "</div>";
                        }
                        else { // 相对路径
                            // line = "<div align=center><img src='" + request.getContextPath() + "/forum/" + imagenode.getImageURL() + "'></div>";
                            url = request.getContextPath() + "/forum/" + imagenode.getImageURL();
                        }
                        line = "<div align=center><a onfocus=this.blur() href=\"" + url + "\" target=_blank><IMG SRC=\"" + url + "\" border=0 alt=" +
                                SkinUtil.LoadString(request,
                                 "res.cn.js.fan.util.StrUtil",
                                    "click_open_win") + " onload=\"javascript:if(this.width>screen.width*0.4) this.width=screen.width*0.4\"></a></div><BR>";
                        // System.out.println(line);
                    }
                }
                if (isTrimEmpty(line))
                    continue;
                str += line;
            }
        }
        catch (ParserException e) {
            System.out.println("MsgUtil.java getAbstract:" + e.getMessage());
        }
        return str;
    }

    public static String getIcon(String fileName) {
        String ext = StrUtil.getFileExt(fileName).toLowerCase();
        // System.out.println("MsgUtil.java getIcon:ext=" + ext);

        if (ext.equals("jpeg"))
            ext = "jpg";
        else if (ext.equals("ini"))
            ext = "txt";
        String[] icons = {"gif", "rar", "zip", "txt", "png", "bmp", "jpg", "doc", "xls", "mp3", "swf"};
        int len = icons.length;
        for (int i=0; i<len; i++) {
            if (ext.equals(icons[i])) {
                return ext + ".gif";
            }
        }
        return "";
    }

    public static String getIconImg(MsgDb md) {
        Vector v = md.getAttachments();
        // System.out.println("MsgUtil.java getIconImg=" + v.size());
        if (v.size()>0) {
            Attachment att = (Attachment)v.get(0);
            String imgicon = getIcon(att.getDiskName());
            return imgicon;
        }
        return "";
    }
}

⌨️ 快捷键说明

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