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

发布时间 - 2026-01-11 02:35:16    点击率:

 重写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  # 验证码  # PHP curl模拟登录带验证码的网站  # PHP使用CURL实现对带有验证码的网站进行模拟登录的方法  # 重写  # 小编  # 在此  # 要想  # 给大家  # 所述  # 给我留言  # 感谢大家  # 清空  # 端口号  # 疑问请  # 有任何  # 实现了  # drawString  # num  # num_c  # request  # getSession  # valueOf 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何挑选最适合建站的高性能VPS主机?  重庆市网站制作公司,重庆招聘网站哪个好?  ,怎么在广州志愿者网站注册?  Laravel如何使用Vite进行前端资源打包?(配置示例)  如何在云主机上快速搭建网站?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  php结合redis实现高并发下的抢购、秒杀功能的实例  Laravel如何记录自定义日志?(Log频道配置)  如何快速使用云服务器搭建个人网站?  中国移动官方网站首页入口 中国移动官网网页登录  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何在IIS中配置站点IP、端口及主机头?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  如何在Ubuntu系统下快速搭建WordPress个人网站?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Android自定义控件实现温度旋转按钮效果  Python高阶函数应用_函数作为参数说明【指导】  高防服务器如何保障网站安全无虞?  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  微信小程序 闭包写法详细介绍  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  java获取注册ip实例  如何制作一个表白网站视频,关于勇敢表白的小标题?  详解Android图表 MPAndroidChart折线图  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  ,网页ppt怎么弄成自己的ppt?  WEB开发之注册页面验证码倒计时代码的实现  奇安信“盘古石”团队突破 iOS 26.1 提权  EditPlus中的正则表达式 实战(4)  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  如何快速上传建站程序避免常见错误?  详解vue.js组件化开发实践  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  如何在建站主机中优化服务器配置?  如何在局域网内绑定自建网站域名?  如何在万网ECS上快速搭建专属网站?  Python面向对象测试方法_mock解析【教程】  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  个人摄影网站制作流程,摄影爱好者都去什么网站?  如何快速搭建高效WAP手机网站?  网站页面设计需要考虑到这些问题  佛山网站制作系统,佛山企业变更地址网上办理步骤?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  javascript如何操作浏览器历史记录_怎样实现无刷新导航