使用JSP、servlet和ajax实现无刷新获取验证码
来源:互联网 发布:淘宝联盟去哪找客服 编辑:程序博客网 时间:2024/05/16 00:26
实现效果如下图所示:
首先编写服务器端的代码,实现向客户端输出随机的验证码,具体代码如下:
package com.wxq.servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.Random;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Server extends HttpServlet {private static final long serialVersionUID = 8582738039656068176L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();//创建一个随机数生成器类Random random = new Random(); String strRand ="";char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J','K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W','X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; for (int i = 0; i < 4; i++) {//得到随机产生的验证码数字。strRand += String.valueOf(codeSequence[random.nextInt(36)]); }out.println(strRand);out.flush();out.close();}}
同时,在web.xml配置文件中配置servlet和访问路径,具体配置如下:
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>Server</servlet-name> <servlet-class>com.wxq.servlet.Server</servlet-class> </servlet> <servlet-mapping> <servlet-name>Server</servlet-name> <url-pattern>/servlet/Server</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
接下来编写客户端的代码,实现点击按钮获取随机验证码,具体代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><script type="text/javascript">function loadXMLDoc(){var xmlhttp;if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); }else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } }xmlhttp.open("GET","<%=path%>/servlet/Server?t=" + Math.random(),true);xmlhttp.send();}</script></head><body><div id="myDiv"><h2>验证码</h2></div><input type="button" onclick="loadXMLDoc()" value="获取验证码"></body></html>
这里需要指明的是在上面的请求路径中需要添加如下代码:
t=" + Math.random()
这是因为如果不加上面的代码,得到的结果是缓存的结果,为了避免这种情况,在请求的 URL 中添加一个唯一的 ID。
具体的ajax方面的知识,可以访问http://www.w3school.com.cn/ajax/index.asp
交流探讨到我的新浪微博:http://weibo.com/tianrui1990
欢迎关注技术分享微信公众号:JavaQ
- 使用JSP、servlet和ajax实现无刷新获取验证码
- ajax+servlet实现无刷新验证码实例
- AJAX+jsp无刷新验证码实例
- AJAX+jsp无刷新验证码实例
- AJAX+jsp无刷新验证码实例
- AJAX+jsp无刷新验证码实例
- AJAX+jsp无刷新验证码实例
- AJAX+jsp无刷新验证码实例
- AJAX+jsp无刷新验证码实例
- ajax+jsp无刷新验证码
- AJAX+jsp无刷新验证码实例
- AJAX+jsp无刷新验证码实例
- AJAX+jsp无刷新验证码实例
- AJAX+jsp无刷新【验证码】实例
- AJAX+jsp无刷新验证码实例
- AJAX+jsp无刷新验证码实例
- 使用Ajax和JSP实现无刷新的登录页面
- jsp无刷新获取验证码
- MessageBox shellcode
- 程序员学英语三部曲[转]
- 32位cpu寻址小结
- Eclipse Plug-in 通过PropertTest设置菜单权限
- DAVINCI DM365-DM368开发攻略——U-BOOT-2010.12及UBL的移植
- 使用JSP、servlet和ajax实现无刷新获取验证码
- ping 的实现
- 怎么在项目中应用委托
- 理解Java线程的中断
- 基础加强学习
- 设计草图
- iOS开发7:自动旋转与调整大小
- oracle的回滚和撤销机制
- 关于windows重装原先wubi安装的Ubuntu启动项消失的解决办法