Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > JCaptcha не показывается картинка


Автор: 4epT 21.2.2011, 19:48
Добрый вечер! Хочу сделать капчу на  сайте. Использую jcaptcha. Сделал все как сказано в инстуркции:

1) Подключил либы к проекту
2) Сделал сингелтон класс CaptchaServiceSingleton
3) Скопипастил сам сервлет и поменял doGet на doPost, так как форма у меня отправляется методом post.
4) Добавил в web.xml собственно сервлет и мапинг на него.
Код

<servlet>
        <servlet-name>jcaptcha</servlet-name>
        <servlet-class>ImageCaptchaServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>jcaptcha</servlet-name>
        <url-pattern>/jcaptcha.jpg</url-pattern>
    </servlet-mapping>

5) и на jsp пытаюсь показать капчу:
Код

<img src="/jcaptcha.jpg">
<input type='text' name='j_captcha_response' value=''>


когда захожу на jsp картинка не находится =(

Подскажите с чего начать искать проблему ?


Автор: powerOn 21.2.2011, 22:27
я когда с ней работал, генерировал картинку самостоятельно, а потом уже отправлял на отрисовку:

Код

import com.octo.captcha.Captcha;
import com.octo.captcha.service.image.DefaultManageableImageCaptchaService;
import java.awt.Image;

public class CaptchaHolderImpl implements CaptchaHolder<Image>
{
    public Captcha captcha;


    public CaptchaHolderImpl()
    {
    }


    protected Captcha createCaptcha()
    {
        return new DefaultManageableImageCaptchaService().getEngine().getNextCaptcha();
    }


    @Override
    public boolean checkCaptcha(String code)
    {
        Captcha current = captcha;
        this.captcha = null;
        return current != null && current.validateResponse(code).booleanValue();
    }


    @Override
    public Image getCaptcha()
    {
        this.captcha = createCaptcha();
        return (Image) captcha.getChallenge();
    }
}


Автор: 4epT 21.2.2011, 22:38
Цитата(powerOn @ 21.2.2011,  22:27)
я когда с ней работал, генерировал картинку самостоятельно, а потом уже отправлял на отрисовку:

Код

import com.octo.captcha.Captcha;
import com.octo.captcha.service.image.DefaultManageableImageCaptchaService;
import java.awt.Image;

public class CaptchaHolderImpl implements CaptchaHolder<Image>
{
    public Captcha captcha;


    public CaptchaHolderImpl()
    {
    }


    protected Captcha createCaptcha()
    {
        return new DefaultManageableImageCaptchaService().getEngine().getNextCaptcha();
    }


    @Override
    public boolean checkCaptcha(String code)
    {
        Captcha current = captcha;
        this.captcha = null;
        return current != null && current.validateResponse(code).booleanValue();
    }


    @Override
    public Image getCaptcha()
    {
        this.captcha = createCaptcha();
        return (Image) captcha.getChallenge();
    }
}

а не скинешь рабочий пример ? =)

Автор: powerOn 21.2.2011, 23:07
набросал мавен проект


Автор: 4epT 21.2.2011, 23:28
Цитата(powerOn @ 21.2.2011,  23:07)
набросал мавен проект

спасибо большое за пример ) но для меня это как то сложно для понимания. мне намного проще понимать как это через сервлет делается. 

Автор: powerOn 21.2.2011, 23:48
сгенерируй картинку с помощью сервиса, отрендерь на странице через сервлет. 

Автор: 4epT 22.2.2011, 08:56
Посмотрел через отладку, у меня в сервлет даже не дергается ... может я в мапинге ошибся ? или из за чего еще может быть такое?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)