当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 使用重写url机制实现验证码换一张功能

使用重写url机制实现验证码换一张功能

2017年12月12日  | 移动技术网IT编程  | 我要评论

 重写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<=4;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 onclick="changeimage()">换一张</a><br> 
  <input type="submit" > 
  </form> 
 </body> 
</html> 

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

总结

以上所述是小编给大家介绍的使用重写url机制实现验证码换一张功能,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网