Я следую учебному пособию, которое я нашел на этой странице http://javahunter.wordpress.com/2010/09/25/integrating-captcha-in-jsf-2-0/, чтобы интегрировать капчу в мою регистрационную форму пользователя, созданную в JSF 2.0, но у меня возникли некоторые проблемы, возможно, кто-то может мне помочь Это то, что я сделал до сих пор:
Страница JSF:
<h:graphicImage id="capimg" value="#{facesContext.externalContext.requestContextPath}/../Captcha.jpg"/>
<h:inputText id="captchaUserInput" value="#{registrationController.captchaUserInput}"/>
<br />
<h:commandButton value="Register"
action="#{registrationController.doRegisterBuyer}">
</h:commandButton>
Управляемый компонент:
@ManagedBean
@RequestScoped
public class RegistrationController {
...
private String captchaUserInput;
...
public String doRegisterBuyer() throws Exception {
...<code for setting the values of the user>
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
Boolean isResponseCorrect = Boolean.FALSE;
javax.servlet.http.HttpSession session = request.getSession();
String parm = captchaUserInput;
String c = (String) session.getAttribute(MyCaptcha.CAPTCHA_KEY);
if (parm.equals(c)) {
buyersRegistratorEJB.createBuyer(buyer);
} else {
return "failed";
}
return "registrationSucceded.xhtml";
}
Класс MyCaptcha.java (источник можно найти по ссылке выше) - это сервлет, который я добавил в пакет с именем other внутри моего проекта
Конфигурация web.xml:
<servlet>
<servlet-name>Captcha</servlet-name>
<servlet-class>other.MyCaptcha</servlet-class>
<init-param>
<description>passing height</description>
<param-name>height</param-name>
<param-value>30</param-value>
</init-param>
<init-param>
<description>passing height</description>
<param-name>width</param-name>
<param-value>120</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Captcha</servlet-name>
<url-pattern>/Captcha.jpg</url-pattern>
</servlet-mapping>
Я думаю, что это часть проблемы, потому что, когда я перехожу на страницу регистрации, я вижу это в консоли:
WARNING: StandardWrapperValve[Captcha]: PWC1382: Allocate exception for servlet Captcha
java.lang.ClassNotFoundException: other.MyCaptcha
Я думаю, что одна из причин, по которой я не могу реализовать это правильно, заключается в том, что путь к MyCaptcha.java в web.xml неверен. Как я могу это исправить? Также я хотел бы отметить, что я не хочу добавлять опцию изменения изображения, мне подходит только изображение.