2015-12-07 2 views
1

Попытка использовать Captcha в моей странице JSP, как показано нижеValidate Защитный код в JSP страницы с помощью AJAX

<%@ page import="net.tanesha.recaptcha.ReCaptcha" %> 
<%@ page import="net.tanesha.recaptcha.ReCaptchaFactory" %> 
<html> 
<head> 
<title>Sample Application JSP Page</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<script type="text/javascript" language="javascript" src="ajax.js"></script> 
</head> 

<body bgcolor=white> 
<form action="CaptchaServlet"> 
<table border="0" cellpadding="10"> 
<tr> 
<td width="10" align="center" height="10"> 
<img src="SimpleServletPath"> 
</td> 
<td> 
<h1>Sample Application JSP Page</h1> 
</td> 
</tr> 
<tr> 
<td> 
Please Enter your Comments 
<p> 
<% 
ReCaptcha c = ReCaptchaFactory.newReCaptcha 
("6LdlHOsSAAAAAM8ypy8W2KXvgMtY2dFsiQT3HVq- ", "6LdlHOsSAAAAACe2WYaGCjU2sc95EZqCI9wLcLXY", false); 
out.print(c.createRecaptchaHtml(null, null)); 
%> 
<INPUT TYPE="TEXT" NAME="text1"> 
<input type="submit" value="submit" /> 
</p> 
</td> 
</tr> 
</table> 

</form> 
</body> 
</html> 

сервлета выглядит следующим образом

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    String remoteAddr = request.getRemoteAddr(); 
    ReCaptchaImpl reCaptcha = new ReCaptchaImpl(); 
    reCaptcha.setPrivateKey("6LdlHOsSAAAAACe2WYaGCjU2sc95EZqCI9wLcLXY"); 

    String challenge = request.getParameter("recaptcha_challenge_field"); 
    String uresponse = request.getParameter("recaptcha_response_field"); 
    ReCaptchaResponse reCaptchaResponse = reCaptcha.checkAnswer(remoteAddr, challenge, uresponse); 
    PrintWriter out= response.getWriter(); 
    if (reCaptchaResponse.isValid()) { 
     String user = request.getParameter("user"); 
     out.write("CAPTCHA Validation Success! User "+user+" registered."); 
    } else { 
     out.write("CAPTCHA Validation Failed! Try Again."); 
    } 
} 

Это работает хорошо, но страница JSP получает обновляется при Отправить значение нажата. Как передать значения Captcha в Servlet с помощью AJAX и вернуть значение, которое Capcha является действительным или нет, без обновления страницы.

ответ

1

Вот эта стратегия.

Имейте отправку, отслеживаемую методом javascript. Этот метод отправит данные кэширования на сервер. и по поводу ошибок или ошибок javascript обновит dom с сообщением об ошибке, отправленным сервером/Servlet.

Следуйте по ссылке https://gist.github.com/madan712/4972634.

В ссылке выше этого использует другой JSP для проверки (работает как сервлет), но вы можете дать имя отображения URL там в URL: [your_servlet_path]

+0

Спасибо Neo. Был способен выполнить приведенный выше код, используя приведенный вами пример. – Rehan

+0

@Rehan, тогда вы должны принять мой ответ, щелкнув галочку, это хорошая практика –