001 package railo.servlet.pic; 002 003 import java.io.FileNotFoundException; 004 import java.io.IOException; 005 import java.io.InputStream; 006 import java.io.OutputStream; 007 008 import javax.servlet.ServletException; 009 import javax.servlet.http.HttpServlet; 010 import javax.servlet.http.HttpServletRequest; 011 import javax.servlet.http.HttpServletResponse; 012 013 import railo.commons.io.IOUtil; 014 015 016 /** 017 * Die Klasse PicServlet wird verwendet um Bilder darzustellen, 018 * alle Bilder die innerhalb des Deployer angezeigt werden, 019 * werden �ber diese Klasse aus der railo.jar Datei geladen, 020 * das macht die Applikation flexibler 021 * und verlangt nicht das die Bilder f�r die Applikation an einem bestimmten Ort abgelegt sein m�ssen. 022 */ 023 public final class PicServlet extends HttpServlet { 024 025 /** 026 * Verzeichnis in welchem die bilder liegen 027 */ 028 public final static String PIC_SOURCE= "/resource/img/"; 029 030 /** 031 * Interpretiert den Script-Name und l�dt das entsprechende Bild aus den internen Resourcen. 032 * @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) 033 */ 034 protected void service(HttpServletRequest req, HttpServletResponse rsp) 035 throws ServletException, IOException { 036 // get out Stream 037 038 // pic 039 String[] arrPath=(req.getServletPath()).split("\\."); 040 String pic=PIC_SOURCE+"404.gif"; 041 if(arrPath.length>=3) { 042 pic=PIC_SOURCE+((arrPath[arrPath.length-3]+"."+arrPath[arrPath.length-2]).replaceFirst("/","")); 043 044 // mime type 045 String mime="image/"+arrPath[arrPath.length-2]; 046 rsp.setContentType(mime); 047 } 048 049 // write data from pic input to response output 050 OutputStream os=null; 051 InputStream is=null; 052 try { 053 os = rsp.getOutputStream(); 054 is = getClass().getResourceAsStream(pic); 055 if(is==null) { 056 is = getClass().getResourceAsStream(PIC_SOURCE+"404.gif"); 057 } 058 059 byte[] buf = new byte[4*1024]; 060 int nread = 0; 061 while ((nread = is.read(buf)) >= 0) { 062 os.write(buf, 0, nread); 063 } 064 } catch (FileNotFoundException e) { 065 } catch (IOException e) { 066 } finally { 067 IOUtil.closeEL(is, os); 068 } 069 } 070 071 072 }