推荐设备MORE

免费制作网页

免费制作网页

公司新闻

小程序业务上线通知_使用重写url机制完成验证码

日期:2021-01-11
我要分享
使用重写url机制实现验证码换一张功能       重写URL机制:为了保证一个url的地址唯一,可每次向服务器传递的参数不一样即可。此处在实现验证码的换一张的功能时,就是利用了改变参数列表的值进行刷新。具体详细代码大家参考下本文

 重写URL机制:为了保证一个url的地址唯一,可每次向服务器传递的参数不一样即可。

由数据请求的抱头信息可分析到:抱头信息包括http协议,IP地址,端口号,工程名,请求参数列表,要想访问的资源不发生变化,只能变化参数连表。

此处在实现验证码的换一张的功能时,就是利用了改变参数列表的值进行刷新。

详细代码实现:

 %@page import="javax.imageio.ImageIO"% 
 %@page import="java.awt.Font"% 
 %@page import="java.awt.Color"% 
 %@page import="java.awt.Graphics"% 
 %@page import="java.awt.image.BufferedImage"% 
 %@ page contentType="image/jpeg" language="java" import="java.util.*" pageEncoding="UTF-8"% 
int w=100; 
int h=30; 
BufferedImage bi=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB); 
Graphics g=bi.getGraphics(); 
Color c=g.getColor(); 
Font f=g.getFont(); 
Random r=new Random(); 
Color bg=new Color(150+r.nextInt(100),150+r.nextInt(100),150+r.nextInt(100)); 
g.setColor(bg); 
g.fillRect(0, 0, w, h); 
String code=""; 
for(int i=1;i i++){ 
int num=r.nextInt(10); 
code=code+num; 
Color num_c=new Color(r.nextInt(150),r.nextInt(150),r.nextInt(150)); 
g.setColor(num_c); 
g.drawString(String.valueOf(num), 20*i, h/2); 
request.getSession().setAttribute("code", code); 
//清空缓存 
response.setHeader("pragma", "bo-cache"); 
response.setHeader("cache-control", "bo-cache"); 
response.addDateHeader("expires", 0); 
ImageIO.write(bi, "jpeg", response.getOutputStream()); 
out.close(); 
 % 

添加登录页面: 

 %@ page contentType="text/html; charset=utf-8" 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% " rel="external nofollow" 
 title My JSP 'login.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" 
 !-- 
 link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" 
 script type="text/javascript" 
function changeimage(){ 
var d=new Date();//生成时间戳, 
document.getElementById("img").src="image.jsp t="+d;//由变化的时间使参数连表发生变化,url重写 
 /script 
 /head 
 body 
 font color="red" ${requestScope.msg } /font 
 form action="loginServlet" method="post" 
 name: input type="text" name="uname" br 
 pwd: input type="pwd" name="upwd" br 
 code: input type="text" name="code" size="5" img id="img" alt="" src="image.jsp " a 换一张 /a br 
 input type="submit" 
 /form 
 /body 
 /html 

利用时间的变化,每次生成时间戳,传参给请求的url,达到重写url的目的,从而实现了换一张的刷新功能。

总结

以上所述是小编给大家介绍的使用重写url机制实现验证码换一张功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对凡科网站的支持!