国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JSP > 正文

JSP動(dòng)態(tài)生成驗(yàn)證碼存儲(chǔ)在session作用范圍內(nèi)

2024-09-05 00:18:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  小編一直認(rèn)為能夠生成驗(yàn)證代碼的人都是很厲害的人,直到今天,我很幸運(yùn)地學(xué)會(huì)了生成動(dòng)態(tài)驗(yàn)證代碼的方法,其實(shí)這并不像我們想象的那么困難。所以,今天錯(cuò)新技術(shù)頻道小編將和大家分享JSP動(dòng)態(tài)生成驗(yàn)證碼存儲(chǔ)在session.html" target="_blank">session作用范圍內(nèi)的介紹,希望對(duì)你有所幫助!

(1)在登錄應(yīng)用中,為防止惡意登錄,常常需要服務(wù)器動(dòng)態(tài)生成驗(yàn)證碼并存儲(chǔ)在session作用范圍中,最后以圖像形式返回給客戶端顯示

(2)下邊的代碼實(shí)現(xiàn)的功能:寫一個(gè)JSP頁(yè),動(dòng)態(tài)生成一個(gè)驗(yàn)證碼,存儲(chǔ)在session作用范圍內(nèi),并以圖像形式返回給客戶端顯示。

另寫一個(gè)JSP頁(yè)面,引用此JSP頁(yè)面生成的驗(yàn)證碼;

authen.jsp代碼如下:

<%@ page import="java.awt.*,java.awt.image.*,java.util.*,com.sun.image.codec.jpeg.*" %> <%! //根據(jù)提供的ab產(chǎn)生隨機(jī)的顏色變化范圍 Color getColor(int a,int b){ int n=b-a; Random rd=new Random(); int cr=a+rd.nextInt(n); int cg=a+rd.nextInt(n); int cb=a+rd.nextInt(n); return new Color(cr,cg,cb); } %> <% //下邊三行取消客戶端游覽器緩存驗(yàn)證碼的功能 response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); int width=60, height=20; //在內(nèi)存中生成一個(gè)圖像 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); Random random = new Random(); g.setColor(getColor(200,250)); g.fillRect(0, 0, width, height); g.setFont(new Font("Times New Roman",Font.BOLD,18)); g.setColor(getColor(160,200)); for (int i=0;i<160;i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x,y,x+xl,y+yl); } String number=String.valueOf(1000+random.nextInt(8999)); String name=request.getParameter("name"); session.setAttribute(name,number); g.setColor(getColor(20,130)); int x=(int)(width*0.2); int y=(int)(height*0.8); g.drawString(number,x,y); g.dispose(); JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(response.getOutputStream()); encoder.encode(image); out.close(); %>

再建一個(gè)test.jsp頁(yè)面 調(diào)用驗(yàn)證碼:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>無(wú)標(biāo)題文檔</title> </head> <body> <% //同樣實(shí)現(xiàn)取消客戶端緩存 response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); String name="loginCode"; %> 驗(yàn)證碼:<img src="authen.jsp?name=<%=name%>" /> </body> </html>

(3)在上述的兩個(gè)頁(yè)面中都有取消客戶端緩存的功能,這是因?yàn)樵儆械挠斡[器中,比如使用的IE游覽器的游覽方式,

會(huì)先將圖片放在緩存中,當(dāng)再次請(qǐng)求的時(shí)候會(huì)現(xiàn)在內(nèi)存中查找是不是已經(jīng)有了,有的話就不在請(qǐng)求,這使得在刷新驗(yàn)

證碼的時(shí)候 失敗,所以要使游覽器不讀取緩存的圖片,就需要取消緩存;

(4)OK!到此結(jié)束!

  以上所有內(nèi)容就是錯(cuò)新技術(shù)頻道小編JSP動(dòng)態(tài)生成驗(yàn)證碼存儲(chǔ)在session作用范圍內(nèi)的介紹,相信大家看了之后有了進(jìn)一步的了解,也希望大家可以分配好時(shí)間進(jìn)行學(xué)習(xí)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 井冈山市| 嵩明县| 东辽县| 云安县| 屏南县| 彝良县| 昌邑市| 花垣县| 汪清县| 灵川县| 兴城市| 阿巴嘎旗| 台北县| 五台县| 金川县| 莎车县| 准格尔旗| 隆德县| 思南县| 宁海县| 衡阳县| 固始县| 多伦县| 乐至县| 海门市| 广东省| 公主岭市| 景德镇市| 措勤县| 双辽市| 张掖市| 淳安县| 浦城县| 交城县| 德庆县| 政和县| 海兴县| 稻城县| 漯河市| 秭归县| 新余市|