【发布时间】:2011-03-07 09:57:21
【问题描述】:
我正在按照我在此页面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>
托管 bean:
@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 类(源代码可以在上面的链接中找到)是一个 servlet,我在我的项目中添加到名为 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
我认为我无法正确实现此功能的原因之一是 web.xml 中 MyCaptcha.java 的路径不正确。我怎么能解决这个问题?另外我想提一下,我不想添加更改图像选项,只有图像适合我。
【问题讨论】:
-
other.MyCaptcha在哪里?它在类路径上吗? -
它在我的项目中,位于 C:\jee6workspace\BBS\src\other\MyCaptcha.java 我如何将它添加到类路径中?
标签: java jsf jakarta-ee jsf-2 captcha