java web笔记——随机图片验证码实现看不清换一张
来源:互联网 发布:linux 软件安装方式 编辑:程序博客网 时间:2024/06/05 14:21
Servlet和JS实现的随机验证码图片,并且点击换一张不会刷新清空已填写的内容。
Servlet类代码:
package myweb;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class ResponseDemo4 */public class ResponseDemo4 extends HttpServlet { private static final long serialVersionUID = 1L; private static final int WIDTH = 150; private static final int HEIGHT = 25; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub BufferedImage image = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB ); Graphics g = image.getGraphics(); setBackgroud(g); setBorder(g); setRandomLine(g); setRandomDataChinese(g); response.setHeader("Expires", "-1"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); response.setContentType("image/jpeg"); ImageIO.write(image, "jpg", response.getOutputStream()); } private void setRandomDataChinese(Graphics g) { g.setColor(Color.ORANGE); g.setFont(new Font("宋体",Font.BOLD,16)); String base = "\u7684\u4e00\u662f\u4e86\u6211\u5782\u4ed6\u5927\u5730\u5230\u548c\u751f\u591a\u5fc3\u4ee5\u5b66\u4e48\u770b\u9053\u73b0\u4f46\u524d\u6b21\u8f66\u65b0\u5c06\u5e76\u6bd4"; StringBuffer s = new StringBuffer(); for(int i=0;i<5;i++) { int num = new Random().nextInt(base.length()); s.append(base.charAt(num) + " "); //charAt(index) 返回指定索引处的char值 } g.drawString(s.toString(), 10, 20); } private void setRandomLine(Graphics g) { // TODO Auto-generated method stub g.setColor(Color.ORANGE); for(int i=0;i<10;i++) { int x1 = new Random().nextInt(WIDTH); int y1 = new Random().nextInt(HEIGHT); int x2 = new Random().nextInt(WIDTH); int y2 = new Random().nextInt(HEIGHT); g.drawLine(x1, y1, x2, y2); } } private void setBackgroud(Graphics g) { // TODO Auto-generated method stub g.setColor(Color.WHITE); g.fillRect(0, 0, WIDTH, HEIGHT); } private void setBorder(Graphics g) { // TODO Auto-generated method stub g.setColor(Color.RED); g.drawRect(1, 1, WIDTH-2, HEIGHT-2); //x,y,x+width(1+WIDTH-2=WIDTH-1),y+height(1+HEIGHT-2=HEIGHT-1),边框画在image图片的边界不会显示 } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}
js代码:
<!DOCTYPE html><html> <head> <title>MyHtml.html</title> <meta charset="UTF-8"> <meta name="keywords" content="keyword1,keyword2,keyword3"> <meta name="description" content="this is my page"> <meta name="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> <script> window.onload=function () { var oCh = document.getElementById('change'); oCh.onclick=function () { document.getElementById('imgcode').src="/practice/ResponseDemo4?K="+Math.random(); <!-- 请求地址后面添加一个随机参数,避免浏览器缓存图片地址--> }; }; </script> </head> <body> <br> <form> 用户名:<input type="text" name="username"><br> <br> 密码 :<input type="password" name="password"><br> <br> 验证码<input type="text" name="checkcode"><img src='/practice/RandomCodeServlet' id="imgcode"> <input type="button" value="换一张" id="change"><br> <input type="submit" value="注册"> </form> </body></html>
1 0
- java web笔记——随机图片验证码实现看不清换一张
- js 实现 图片刷新 验证码 看不清 换一张
- java绘制图片验证码(看不清,换一张)
- 验证码看不清换一张 实现代码
- ASP.NET实现验证码(加“看不清,换一张”)
- ASP.NET实现验证码(加“看不清,换一张”)
- javaweb请求与响应验证码案例点击"看不清,换一张"切换图片的新思路
- 通过js 实现简单验证码的 刷新 看不清 换一张
- 验证码的生成,并且“看不清,换一张”
- 验证码的生成,并且“看不清,换一张”
- Java web 产生随机图片验证码
- java实现随机验证码的图片
- Java Web:使用Servlet生成网页随机图片验证码
- 随机图片验证码实现
- WEB Service产生随机验证码图片
- 验证码无法改变的问题(验证码看不清,换一个,却不起作用)
- Java随机验证码 图片验证码 基于servlet验证码实现
- Java 实现随机验证码
- linux
- 严重: WSSERVLET11: failed to parse runtime descriptor: The serviceName cannot be retrieved from an int
- 1007
- ARM Linux 3.x的设备树(Device Tree)
- HDU 2063过山车
- java web笔记——随机图片验证码实现看不清换一张
- vim常用快捷键
- light oj1265 Island of Survivalm
- WebStorm下使用TypeScript
- Device Tree(一):背景介绍
- poj 2709 Painter
- svn的很少用到的功能
- WebView显示网页
- Mi Ni DVD系统