📄 imagedispatcherservlet.java
字号:
/*
* OPIAM Suite
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package opiam.admin.faare.struts.servlets;
//DW/2621/BeginPatch
import opiam.admin.faare.MessageUtil;
//DW/2621/EndPatch
import opiam.admin.faare.persistence.javabeans.JBTop;
import opiam.admin.faare.service.UserContext;
import opiam.admin.faare.service.services.StandardService;
import opiam.admin.faare.struts.utils.SessionContext;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.log4j.Logger;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* This servlets allows to get a photo loaded from an entry, or a default photo if the
* entry does not have a photo.<br>
* HTTP PARAMETERS :<br>
* <li>objname : name of the object conveying the entry</li>
* <li>attname : attribute containing the photo</li>
*<br>
* WARNING : do not forget to configure the servlet in web.xml.
*/
public class ImageDispatcherServlet extends HttpServlet
{
/** Logger de log4j. */
private static Logger _logger = Logger.getLogger(ImageDispatcherServlet.class);
/** Default image. */
private static byte[] _defaultImage = null;
/**
* Initializes the serlvet.
* Servlet parameter defines the default photo.
* see javax.servlet.GenericServlet#init().
* @throws ServletException see javax.servlet.GenericServlet#init().
*/
public void init() throws ServletException
{
super.init();
String imageParam = this.getInitParameter("default_image");
_logger.debug("imageParam = " + imageParam);
String defaultPhotoFile = getServletContext().getRealPath(imageParam);
try
{
if (defaultPhotoFile != null)
{
_logger.info("defaultPhotoFile = " + defaultPhotoFile);
File file = new File(defaultPhotoFile);
int size = (int) file.length();
_defaultImage = new byte[size];
BufferedInputStream bufin = new BufferedInputStream(new FileInputStream(
file));
int b;
int i = 0;
while ((b = bufin.read()) >= 0)
{
_defaultImage[i] = (byte) b;
i++;
}
bufin.close();
_logger.debug("_defaultImage size = " + i);
}
else
{
_logger.debug(
"NO defaultPhotoFile, not specified in servlet init param ");
}
}
catch (Exception e)
{
_logger.debug("NO defaultPhotoFile car error " + e.getMessage());
_defaultImage = null;
}
}
/**
* Servlet processing method.
* See HttpServlet.doGet
*
* @param request HTTP request
* @param response HTTP response
*
* @throws java.io.IOException see HttpServlet
* @throws javax.servlet.ServletException see HttpServlet
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
/*DW/2561*/
/*BeginPatch*/
String dn = request.getParameter("dn");
/*DW/2561*/
/*EndPatch*/
String attname = request.getParameter("attname");
_logger.debug("dn = " + dn);
_logger.debug("attname = " + attname);
//DW/2621/BeginPatch
if ((dn == null) || dn.trim().equals(""))
{
throw new ServletException(MessageUtil.getMessageString("MSG_ARGUMENT_NULL"));
}
if ((attname == null) || attname.trim().equals(""))
{
attname = "photo";
}
//DW/2621/EndPatch
try
{
//R閏up閞ation de la session
HttpSession session = request.getSession();
/*DW/2561*/
/*BeginPatch*/
//R閏up閞ation du contexte de session
SessionContext sessionContext = SessionContext.getInstance(session);
UserContext userContext = sessionContext.getUserContext();
JBTop entry = StandardService.load(dn, userContext);
//DW/2610/BeginPatch
Object olistBytes = null;
try
{
olistBytes = PropertyUtils.getProperty(entry, attname);
}
catch (Exception ex)
{
_logger.debug("no photo");
}
if (olistBytes instanceof Collection)
{
Collection listBytes = (Collection) olistBytes;
_logger.debug("is a collection");
if (!listBytes.isEmpty())
{
_logger.debug("listBytes.size() : " + listBytes.size());
byte[] byteArray = (byte[]) listBytes.iterator().next();
_logger.debug("byteArray length : " + byteArray.length);
response.setContentType("image/jpeg");
ServletOutputStream servletOutputStream = response.getOutputStream();
servletOutputStream.write(byteArray, 0, byteArray.length);
servletOutputStream.flush();
// Flush and close streams
servletOutputStream.close();
return;
}
}
else if (olistBytes != null)// not a collection
{
byte[] byteArray = (byte[]) olistBytes;
_logger.debug("byteArray length : " + byteArray.length);
if (byteArray.length > 0)
{
response.setContentType("image/jpeg");
ServletOutputStream servletOutputStream = response.getOutputStream();
servletOutputStream.write(byteArray, 0, byteArray.length);
servletOutputStream.flush();
//Flush and close streams
servletOutputStream.close();
return;
}
}
// no photo
if (_defaultImage != null)
{
// image par defaut existe, la renvoyer
_logger.debug("Attribut vide, renvoyer l'image par defaut");
response.setContentType("image/jpeg");
ServletOutputStream servletOutputStream = response.getOutputStream();
servletOutputStream.write(_defaultImage, 0, _defaultImage.length);
servletOutputStream.flush();
// Flush and close streams
servletOutputStream.close();
}
else
{
_logger.debug("Attribut vide, sans image par defaut");
}
return;
}
//DW/2610/EndPatch
catch (Exception se)
{
se.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -