前台显示页面:
welcome.jsp
<%@ page language="java" contentType="text/html; utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>修改个人信息</title> <script> function createXMLHttpRequest() { //表示当前浏览器不是ie,如ns,firefox if(window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } } function validate(field) { var div=document.getElementById("divbid"); // var reg=/[^A-Za-z0-9_]{7,10}/g; if (field.value.length != 0) { //创建XMLHttpRequest createXMLHttpRequest(); var url = "codevalidate.jsp?authcode=" + field.value + "×tamp=" + new Date().getTime();//加时间戳防止缓存重复 xmlHttp.open("GET", url, true); //方法地址,处理完成后自动调用,回调 xmlHttp.onreadystatechange=function() { //匿名函数 if(xmlHttp.readyState == 4) { //Ajax引擎初始化成功 if (xmlHttp.status == 200) { //http协议成功 document.getElementById("divbid").innerHTML =xmlHttp.responseText; }else { alert("请求失败,错误码=" + xmlHttp.status); } } }; //将参数发送到Ajax引擎 xmlHttp.send(null); }else { div.innerHTML="<div class=\"wrong\">验证码不能为空</div>" } } function reloadImage(imgurl){ var getimagecode=document.getElementById("codeimg"); getimagecode.src= imgurl + "?id=" + Math.random(); var code=<%=session.getAttribute("code")%>; alert(code) } </script> </head> <body> <form action="authcode.jsp" method="post" name="loginform"> 输入验证码:<input type="text" name="authcode" id="authcode" maxlength="4" size="10" onblur="validate(this)" ><span id="divbid"></span> <img id="codeimg" name="codeimg" border=0 src="authcode.jsp"> <a href="javascript:reloadImage('authcode.jsp')">看不清</a><br/> </form> <script language="javascript" type="text/javascript"> function reloadImage(imgurl){ var getimagecode=document.getElementById("codeimg"); getimagecode.src= imgurl + "?id=" + Math.random(); var code=<%=session.getAttribute("code")%>; alert(code) } </script> </body> </html>
产生图片页面
authcode.jsp
<%@ page contentType="image/JPEG" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="GBK"%> <%!Color getRandColor(int fc, int bc) {//给定范围获得随机颜色 Random random = new Random(); if (fc > 255) fc = 255; if (bc > 255) bc = 255; int r = fc + random.nextInt(bc - fc); int g = fc + random.nextInt(bc - fc); int b = fc + random.nextInt(bc - fc); return new Color(r, g, b); }%> <% //设置页面不缓存 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); // 在内存中创建图象 int width = 60, height = 20; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取图形上下文 Graphics g = image.getGraphics(); //生成随机类 Random random = new Random(); // 设定背景色 g.setColor(getRandColor(200, 250)); g.fillRect(0, 0, width, height); //设定字体 g.setFont(new Font("Times New Roman", Font.PLAIN, 18)); //画边框 //g.setColor(new Color()); //g.drawRect(0,0,width-1,height-1); // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 g.setColor(getRandColor(160, 200)); for (int i = 0; i < 100; i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x, y, x + xl, y + yl); } // 取随机产生的认证码(4位数字) String sRand = ""; for (int i = 0; i < 4; i++) { String rand = String.valueOf(random.nextInt(10)); sRand += rand; // 将认证码显示到图象中 g.setColor(new Color(20 + random.nextInt(110), 20 + random .nextInt(110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 g.drawString(rand, 13 * i + 6, 16); System.out.println(rand); } // 将认证码存入SESSION session.setAttribute("code", sRand); // 图象生效 g.dispose(); // 输出图象到页面 ImageIO.write(image, "JPEG", response.getOutputStream()); %>
ajax动态验证页面
codevalidate.jsp
<%@ page language="java" import="java.util.*,java.util.*,java.text.*,com.neusoft.xkxt.dao.*,com.neusoft.xkxt.bean.*,com.neusoft.xkxt.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <% String authcode=request.getParameter("authcode"); String code=(String)session.getAttribute("code"); if(authcode.equals(code)){ out.println("<div class='right'>√</div>");} else{ out.println("<div class='wrong'>验证码不正确</div>");} %>
相关推荐
通过对上述内容的理解,我们可以看出,使用JSP和Ajax相结合的方法,能够有效地提高Web应用的用户体验,特别是在需要实时数据校验和页面局部刷新的场景中,这种方法显得尤为高效。希望本文的实例能够帮助开发者在类似...
在身份证号的输入框中,通过`onblur`事件触发`check`函数,当失去焦点时自动验证身份证号。 ```html <input type="text" name="trainUser.cardNo" onblur="check()" /> ``` 2. **JavaScript验证** 使用...
每个输入字段都有一个`onblur`事件监听器,当用户离开输入框时触发验证函数。 ```html 用户名: <td><input type="text" name="name" id="username" onblur="verifyName()" /> 密码: <td><input type...
1. **前端准备**:利用JavaScript或jQuery监听用户输入事件,如表单元素的`onkeyup`、`onblur`等,当触发这些事件时,调用Ajax函数。 2. **发送请求**:创建XMLHttpRequest对象,打开连接到服务器的通道,设置HTTP...
具体实现上,首先在JSP页面`register.jsp`中定义了表单,用户在用户名输入框中输入信息后,`onblur`事件会触发`findByName()`函数。该函数会向Struts2的`login!findByName`这个action发送POST请求,请求中包含了用户...
JavaScript中的 `onsubmit` 事件触发检查表单的合法性,以及 `onblur` 事件用于用户名字段失去焦点时的异步校验。 #### 2. 用户输入验证 在用户注册过程中,前端验证是重要的一环。使用了JS进行校验,例如检查...