使用重写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 相关文章推荐
Sample script that displays all of the users in a given SQL Server DB
Jun 16 Javascript
js 屏蔽鼠标右键脚本附破解方法
Dec 03 Javascript
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
jquery使用append(content)方法注意事项分享
Jan 06 Javascript
Bootstrap开发实战之第一次接触Bootstrap
Jun 02 Javascript
使用JavaScript开发跨平台的桌面应用详解
Jul 27 Javascript
Node.js笔记之process模块解读
May 31 Javascript
AngularJS ui-router刷新子页面路由的方法
Jul 23 Javascript
单页面vue引入百度统计的使用方法示例详解
Oct 13 Javascript
JS实现动态星空背景效果
Nov 01 Javascript
vue 实现click同时传入事件对象和自定义参数
Jan 29 Vue.js
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
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
php中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
2015/11/07 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
JS实现秒杀倒计时特效
2020/01/02 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
Python骚操作之动态定义函数
2019/03/26 Python
python函数的作用域及关键字详解
2019/08/20 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
骨干教师培训方案
2014/05/06 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
公司离职证明标准范本
2014/10/05 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
违纪开除通知书
2015/04/25 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server