تطبيق Captcha بـ ADF
Applying Captcha in ADF
لتنفيذ الـ captcha نحتاج إلى تحميلsimplecaptcha-1.2.1.jar وإضافتها إلى المشروع
الموضوع بسيط فقط لنتابع الخطوات:
1-
إنشاء تطبيق (Application) (fusion middleware web
application).
2-
إنشاء صفحة معmanage bean بالطريقة
المعتاد عليها
3-
الآن نقوم بإضافة المكتبة simplecaptcha-1.2.1.jar إلى المشروع من خلال right click على إسم المشروع بعدها Project Properties بعدها نختار Labraries and
Classpath وبالضغط على ADD JAR/Labraries ويتم إضافة ملف الـ simplecaptcha-1.2.1.jar كما في الصورة أدناه :
4- الآن قم بإضافة الكود التالي على ملف web.xmlوكما موضح في الصورة في أدناه
<servlet>
<servlet-name>CaptchaServlet</servlet-name>
<servlet-class>nl.captcha.servlet.SimpleCaptchaServlet</servlet-class>
<init-param>
<param-name>width</param-name>
<param-value>250</param-value>
</init-param>
<init-param>
<param-name>height</param-name>
<param-value>75</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>CaptchaServlet</servlet-name>
<url-pattern>/captchaservlet</url-pattern>
</servlet-mapping>
(الإنتباه والمراعاة
مكان الإضافة على ملف web.xml )
5-
نعمل save لحفظ التعديلات
6-
نكون تصميم الصفحة كما في
الشكل التالي:
code source الصفحة يكون التالي :
<af:panelFormLayout id="pfl1">
<f:facet name="footer"/>
<af:outputText value="Captcha Ascension"
inlineStyle="font-size:22pt;"/>
<af:image source="/captchaservlet" id="i1"
inlineStyle="width:239px;
height:60.0px;"/>
<af:panelLabelAndMessage label="Enter the Text : "
id="plam1">
<af:panelGroupLayout id="pgl1"
layout="horizontal" halign="left">
<af:inputText id="it1"
value="#{requestScope.enterTxt}"/>
<af:commandButton text="Done" id="cb1"
actionListener="#{backingBeanScope.captchaAscension.verifyAnswer}"
partialSubmit="true" immediate="false"
icon="/img/okay.png"/>
<af:spacer width="11" height="17"
id="s1"
binding="#{backingBeanScope.captchaAscension.s1}"/>
<af:commandButton
text="Refresh" id="cb2" partialSubmit="false" icon="/img/refresh.png"/>
</af:panelGroupLayout>
<af:message
id="m1" for="it1"/>
</af:panelLabelAndMessage>
</af:panelFormLayout>
7-
الآن لم يتبقى سوى كتابة
الـ (code) التابع للزر (Done) ليتم التحقق من الرمز
المكتوب
مع صورة الـcaptcha في manage bean ، قم بنسخ الكود التالي :
مع صورة الـcaptcha في manage bean ، قم بنسخ الكود التالي :
public void
verifyAnswer(ActionEvent actionEvent)
{
FacesContext fctx =
FacesContext.getCurrentInstance();
ExternalContext ectx =
fctx.getExternalContext();
HttpServletRequest
request = (HttpServletRequest)ectx.getRequest();
Captcha captcha =
(Captcha)ectx.getSessionMap().get(Captcha.NAME);
try
{
request.setCharacterEncoding("UTF-8");
}
catch
(UnsupportedEncodingException e)
{
System.out.println("UTF not supported
!");
}
String answer
= (String)ectx.getRequestMap().get("enterTxt");
if (answer != null &&
captcha.isCorrect(answer))
{
message("You are correct boss.");
}
else
{
message("You are wrong.Please try again.");
UIComponent
panelLabelAndMessage =
((UIComponent)actionEvent.getSource()).getParent().getParent();
UIComponent
panelFormlayout = panelLabelAndMessage.getParent();
AdfFacesContext.getCurrentInstance().addPartialTarget(panelFormlayout);
}
}
private void
message(String str)
{
FacesContext fctx
= FacesContext.getCurrentInstance();
fctx.addMessage("it1", new
FacesMessage(str));
}
الآن إن شاء
الله نقوم بعمل حفظ للمشروع ((save وبعدها run لنرى النتيجة كما في الصورة المرفقة