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