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


Posted in Javascript onAugust 01, 2017

 重写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机制实现验证码换一张功能

总结

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

Javascript 相关文章推荐
Js与下拉列表处理问题解决
Feb 13 Javascript
js校验表单后提交表单的三种方法总结
Feb 28 Javascript
JQuery中$(document)是什么意思有什么作用
Jul 21 Javascript
JS简单生成两个数字之间随机数的方法
Aug 03 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
JavaScript表单验证的两种实现方法
Feb 11 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
Apr 02 jQuery
js学习总结之DOM2兼容处理顺序问题的解决方法
Jul 27 Javascript
js弹性势能动画之抛物线运动实例详解
Jul 27 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
Feb 26 Javascript
vue中的模态对话框组件实现过程
May 01 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
Nov 01 Javascript
js实现拖拽上传图片功能
Aug 01 #Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
Aug 01 #jQuery
angularjs2 ng2 密码隐藏显示的实例代码
Aug 01 #Javascript
使用JavaScript进行表单校验功能
Aug 01 #Javascript
SpringMVC简单整合Angular2的示例
Jul 31 #Javascript
vue.js声明式渲染和条件与循环基础知识
Jul 31 #Javascript
在ABP框架中使用BootstrapTable组件的方法
Jul 31 #Javascript
You might like
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
Prototype String对象 学习
2009/07/19 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
javascript操作数组详解
2014/12/17 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
python脚本实现查找webshell的方法
2014/07/31 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
python计算auc指标实例
2017/07/13 Python
Python语言描述最大连续子序列和
2017/12/05 Python
python使用tornado实现登录和登出
2018/07/28 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
自荐信格式技巧有哪些呢
2013/11/19 职场文书
高中毕业自我鉴定
2013/12/16 职场文书
社区七一党员活动方案
2014/01/25 职场文书
职工代表大会主持词
2014/04/01 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
南京导游词
2015/02/03 职场文书
毕业生党员个人总结
2015/02/14 职场文书
离婚被告代理词
2015/05/23 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
python process模块的使用简介
2021/05/14 Python
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏