⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagedispatcherservlet.java

📁 OPIAM stands for Open Identity and Access Management. This Suite will provide modules for user & rig
💻 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 + -