package railo.servlet.pic;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import railo.commons.io.IOUtil;
/**
* Die Klasse PicServlet wird verwendet um Bilder darzustellen,
* alle Bilder die innerhalb des Deployer angezeigt werden,
* werden ueber diese Klasse aus der railo.jar Datei geladen,
* das macht die Applikation flexibler
* und verlangt nicht das die Bilder fuer die Applikation an einem bestimmten Ort abgelegt sein muessen.
*/
public final class PicServlet extends HttpServlet {
/**
* Verzeichnis in welchem die bilder liegen
*/
public final static String PIC_SOURCE= "/resource/img/";
/**
* Interpretiert den Script-Name und laedt das entsprechende Bild aus den internen Resourcen.
* @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
protected void service(HttpServletRequest req, HttpServletResponse rsp)
throws ServletException, IOException {
// get out Stream
// pic
String[] arrPath=(req.getServletPath()).split("\\.");
String pic=PIC_SOURCE+"404.gif";
if(arrPath.length>=3) {
pic=PIC_SOURCE+((arrPath[arrPath.length-3]+"."+arrPath[arrPath.length-2]).replaceFirst("/",""));
// mime type
String mime="image/"+arrPath[arrPath.length-2];
rsp.setContentType(mime);
}
// write data from pic input to response output
OutputStream os=null;
InputStream is=null;
try {
os = rsp.getOutputStream();
is = getClass().getResourceAsStream(pic);
if(is==null) {
is = getClass().getResourceAsStream(PIC_SOURCE+"404.gif");
}
byte[] buf = new byte[4*1024];
int nread = 0;
while ((nread = is.read(buf)) >= 0) {
os.write(buf, 0, nread);
}
} catch (FileNotFoundException e) {
} catch (IOException e) {
} finally {
IOUtil.closeEL(is, os);
}
}
}