/**
*
* Copyright (c) 2014, the Railo Company Ltd. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
**/
package lucee.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 lucee.commons.io.IOUtil;
import lucee.runtime.net.http.ReqRspUtil;
/**
* Die Klasse PicServlet wird verwendet um Bilder darzustellen,
* alle Bilder die innerhalb des Deployer angezeigt werden,
* werden ueber diese Klasse aus der lucee.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)
*/
@Override
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];
ReqRspUtil.setContentType(rsp,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);
}
}
}