使用重写url机制实现验证码换一张功能
程序员文章站
2022-05-26 08:10:10
重写url机制:为了保证一个url的地址唯一,可每次向服务器传递的参数不一样即可。
由数据请求的抱头信息可分析到:抱头信息包括http协议,ip地址,端口号,...
重写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机制实现验证码换一张功能,希望对大家有所帮助
上一篇: Node.js REPL (交互式解释器)实例详解
下一篇: Vue-Cli中自定义过滤器的实现代码
推荐阅读