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

📄 tbuyextensionsfilter.java

📁 tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛
💻 JAVA
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的,如有技术问题请与本人联系! */package biz.tbuy.common.components;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.List;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 建立这个类主要是为了帮助自定义组件向客户端中输出相关资源,js or image file... * @version 1.0 * @author huliqing * <p><b>qq:</b>31703299 * <p><b>E-mail:</b><a href="mailto:huliqing.cn@gmail.com">huliqing.cn@gmail.com</a> * <p><b>Homepage:</b><a href="http://www.tbuy.biz/">http://www.tbuy.biz/</a> */public class TbuyExtensionsFilter implements Filter{    private FilterConfig filterConfig = null;    /** return /TbuyExtension */     public final static String TBUY_EXT_ID = "/TbuyExtension/";    /** script request<br>return script*/     public final static String REQUEST_SCRIPT = "script";    /** lrc request<br>return lrc */     public final static String REQUEST_LRC = "lrc";    /** img request<br>return img */    public final static String REQUEST_IMG = "img";                /** 允许输出的文件类型 */    private final static List<String> _types = new ArrayList<String>(5);    static {        _types.add("js");        _types.add("lrc");        _types.add("jpg");        _types.add("gif");        _types.add("png");    }        public void init(FilterConfig filterConfig) {        this.filterConfig = filterConfig;    }        /**     * @param filterConfig The filter configuration object     */    public void setFilterConfig(FilterConfig filterConfig) {        this.filterConfig = filterConfig;    }        /**     * Return the filter configuration object for this filter.     * @return fileterConfig     */    public FilterConfig getFilterConfig() {        return this.filterConfig;    }    public void doFilter(ServletRequest request,             ServletResponse response, FilterChain chain)             throws IOException, ServletException {                HttpServletRequest requestHttp = (HttpServletRequest)request;        HttpServletResponse responseHttp = (HttpServletResponse)response;                String uri = requestHttp.getRequestURI();        String uri2 = uri.substring(uri.indexOf(TBUY_EXT_ID) + TBUY_EXT_ID.length());        String id = uri2.substring(0, uri2.indexOf("="));        String value = uri2.substring(uri2.indexOf("=") + 1);                // 以下检查客户端来的文件请求类型.        String type = uri.substring(uri.lastIndexOf(".") + 1);        if (!_types.contains(type.trim().toLowerCase())) {            return;        }                // 1.如果请求的是script资料,则向客户端输出script资源        // 2.如果请求的是lrc歌词资料,则向客户端输出歌词        if (id.equals(REQUEST_SCRIPT)) {            writeScript(responseHttp, value);        } else if (id.equals(REQUEST_LRC)) {            writeLrc(responseHttp, value);        } else if (id.equals(REQUEST_IMG)) {            writeImg(responseHttp, value);        }    }        /**     * 向客户端输出script资源     */     private void writeScript(HttpServletResponse response, String path)             throws IOException {        URL url = getClass().getClassLoader().getResource(path);        URLConnection conn = null;        InputStream stream = null;        BufferedReader buffReader = null;        OutputStreamWriter osw = null;        String curLine = null;        try {            response.setCharacterEncoding("UTF-8");            osw = new OutputStreamWriter(response.getOutputStream());            conn = url.openConnection();            conn.setUseCaches(false);            stream = conn.getInputStream();            buffReader = new BufferedReader(new InputStreamReader(stream));            response.setContentType("text/javascript");            response.setHeader("Cache-Control", "no-cache");            while ((curLine = buffReader.readLine()) != null) {                osw.write(curLine + "\n");                //System.out.println(curLine);            }            osw.close();            buffReader.close();        } catch (Exception e) {            //Elog.log("Exception:TbuyExtensionsFilter:writeScript:" + e.getMessage());            System.out.println("Exception:" + e.getMessage());        }    }        /**     * 输出歌词资源,由客户端xmlHttp接收     */     private void writeLrc(HttpServletResponse response, String path) throws IOException {        InputStreamReader isr = null;        try {            if (path.trim().toLowerCase().startsWith("http://")) {                isr = new InputStreamReader(                        new URL(path.trim()).openConnection().getInputStream());            } else {                isr = new InputStreamReader(                        new FileInputStream(                        new File(filterConfig.getServletContext().getRealPath("/") + path)));            }        } catch (Exception e) {            System.out.println("Exception:TbuyExtensionsFilter:" + e.getMessage());        }        try {            BufferedReader buffReader = new BufferedReader(isr);            response.setCharacterEncoding("UTF-8");            response.setContentType("text/html");            PrintWriter pw = response.getWriter();            String curLine = null;            while ((curLine = buffReader.readLine()) != null) {                pw.write(curLine + "\n");            }            buffReader.close();            pw.close();        } catch (Exception e) {            System.out.println("Exception:TbuyExtensionsFilter:" + e.getMessage());        }    }        private void writeImg(HttpServletResponse response, String path) {        try {            String contentType = path.substring(path.lastIndexOf(".") + 1);            InputStream isr = getClass().                    getClassLoader().                    getResource(path).                    openConnection().                    getInputStream();            OutputStream out = response.getOutputStream();            response.setContentType("image/jpeg");            byte[] buff = new byte[1024];            int len;            while ((len = isr.read(buff, 0, buff.length)) != -1) {                out.write(buff, 0, len);                //System.out.println(buff);            }            out.flush();            out.close();            isr.close();        } catch (Exception e) {            System.out.println("Exception:TbuyExtensionFilter:" + e.getMessage());        }    }    public void destroy() {}}

⌨️ 快捷键说明

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