IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Frameworks Web Java Discussion :

[JCaptcha] Integrer SimpleCatpcha dans une application


Sujet :

Frameworks Web Java

  1. #1
    Membre régulier Avatar de silverfab34
    Inscrit en
    Mars 2006
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2006
    Messages : 203
    Points : 91
    Points
    91
    Par défaut [JCaptcha] Integrer SimpleCatpcha dans une application
    Bonjour à tous,
    Je suis sur un site Java / J2ee (jdk 1.4) et je voudrais valider un formulaire dans une FTL (frameworker) par une image Captcha. J'utilise SimpleCaptcha mais évidemment, ca ne fonctionne pas. JE n'arrive pas à afficher l'image (dans un 1er temps).

    Ma FTL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Image : <img src="Captcha.jpg" />
    <input type="text" name="imageText" maxlength="4"/>
     
    <%
    	String imageText = 
    (String)session.getAttribute(nl.captcha.servlet.Constants.SIMPLE_CAPCHA_SESSION_KEY);
    %>


    Mon web.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     <servlet>
    	<servlet-name>Captcha</servlet-name>
    	<display-name>Captcha</display-name>
    	<servlet-class>nl.captcha.servlet.CaptchaServlet</servlet-class>
     
    	<!-- optional font array for the captcha-->
    	<init-param>
    		<param-name>cap.font.arr</param-name>
    		<param-value>Arial,Helvetica,Courier,TimesRoman</param-value>
    	</init-param>
     
    </servlet>
     
    <servlet-mapping>
    	<servlet-name>Captcha</servlet-name>
    	<url-pattern>/Captcha.jpg</url-pattern>
    </servlet-mapping>
    Et mon erreur :
    View with name "null/Captcha.jpg" not found

    Si certains ont déjà utilisé Jcaptcha, je suis interessé (surtout c'est pour ll'integrer dans le framework Ofbiz).
    Merci d'avance pour votre aide.

  2. #2
    Membre régulier Avatar de silverfab34
    Inscrit en
    Mars 2006
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2006
    Messages : 203
    Points : 91
    Points
    91
    Par défaut
    Et qui a essayé JCaptcha avec succès car apparemment, SimpleCaptcha n'est pas fiable !

  3. #3
    Membre régulier Avatar de silverfab34
    Inscrit en
    Mars 2006
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2006
    Messages : 203
    Points : 91
    Points
    91
    Par défaut
    Bon, j'ai résolu mon problème :
    j'ai recupéré jcaptcha-all.jar que j'ai integré dans mon appli
    J'ai rien mis dans mon web.xml, tout est dans mon controller.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <request-map uri="jcaptcha">
    	 <security https="false" auth="false"/>
          	<event type="java" path="com.captcha.tellAFriend.ImageCaptchaServlet" invoke="doGet"/>
     	<response name="success" type="view" value="jcaptcha"/> </request-map>
     
    <view-map name="jcaptcha" page="/jcaptcha"/>
    Ensuite, dans ma FTL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img name="imageCaptcha" src="/jcaptcha" />
    Et j'ai créé les classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    public class ImageCaptchaServlet implements Serializable {
     
       	public static final String module = ImageCaptchaServlet.class.getName();
     
     
        public static String doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
     
           byte[] captchaChallengeAsJpeg = null;
           // the output stream to render the captcha image as jpeg into
            ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
            try {
     
            // get the session id that will identify the generated captcha.
            //the same id must be used to validate the response, the session id is a good candidate!
            String captchaId = httpServletRequest.getSession().getId();
            Enumeration captchaAttribute= httpServletRequest.getSession().getAttributeNames();
     
            // call the ImageCaptchaService getChallenge method
                BufferedImage challenge =
                        CaptchaServiceSingleton.getInstance().getImageChallengeForID(captchaId,
                                httpServletRequest.getLocale());
     
                // a jpeg encoder
                JPEGImageEncoder jpegEncoder =
                        JPEGCodec.createJPEGEncoder(jpegOutputStream);
     
                jpegEncoder.encode(challenge);
     
            } catch (IllegalArgumentException e) {
                httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
                return "error";
            } catch (CaptchaServiceException e) {
                httpServletResponse.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                return "error";
            }
     
            captchaChallengeAsJpeg = jpegOutputStream.toByteArray();
     
            // flush it in the response
            httpServletResponse.setHeader("Cache-Control", "no-store");
            httpServletResponse.setHeader("Pragma", "no-cache");
            httpServletResponse.setDateHeader("Expires", 0);
            httpServletResponse.setContentType("image/jpeg");
     
            ServletOutputStream responseOutputStream =
                    httpServletResponse.getOutputStream();
            responseOutputStream.write(captchaChallengeAsJpeg);
            responseOutputStream.flush();
            responseOutputStream.close();
            return "success";
        }
    }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class CaptchaServiceSingleton {
     
        private static ImageCaptchaService instance = new DefaultManageableImageCaptchaService();
     
        public static ImageCaptchaService getInstance(){
            return instance;
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. integrer IrisSkin dans une application vb net
    Par sihammaster dans le forum VB.NET
    Réponses: 0
    Dernier message: 08/01/2010, 12h58
  2. [AUDIO]Integrer son dans une application
    Par guxou dans le forum Multimédia
    Réponses: 0
    Dernier message: 14/04/2009, 19h00
  3. problème d'integration swing dans une application RCP
    Par insatien09 dans le forum Eclipse Platform
    Réponses: 5
    Dernier message: 02/05/2008, 01h08
  4. Integration Birt dans une application ?
    Par touane dans le forum BIRT
    Réponses: 5
    Dernier message: 13/06/2007, 16h11
  5. Doit-on integrer IPv6 dans une application?
    Par Franck.H dans le forum Développement
    Réponses: 3
    Dernier message: 28/10/2005, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo