登陆时的验证码设计、及点击刷新的编写方式

来源:互联网 发布:网络监察电话是多少 编辑:程序博客网 时间:2024/05/29 14:34
</pre><pre class="java" name="code">jvaservlet的代码,这里是绘制验证码的图片
package com.cn.demol2;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.io.PrintWriter;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;public class Checkpic extends HttpServlet {//第一步创建图片的规格大小public static final int WIDTH = 150;public static final int HEIGTH = 30;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {BufferedImage image = new BufferedImage(WIDTH, HEIGTH, BufferedImage.TYPE_INT_RGB);Graphics g = image.getGraphics();//设置背景颜色setBackground(g);//设置边框setBorder(g);//设置干扰线setRandomLine(g);//写随机数setRondomNum((Graphics2D) g);response.setDateHeader("expries",-1);response.setHeader("cache", "no-cache");response.setHeader("pragma", "no-cache");response.setContentType("image/jpeg");ImageIO.write(image,"jpg",response.getOutputStream());}private void setRondomNum(Graphics2D g) {// TODO Auto-generated method stubg.setColor(Color.BLACK);g.setFont(new Font("宋体",Font.BOLD,20));String data = "本时钟仅供参考不作为计费依据您已经建立了宽带上网的连接如果您想继续使用宽带上网功能请不要关闭本窗口如果您想断开连接请单击下线按钮";//随机出现在图片中的字段int x = 5;for(int i = 0;i<4;i++){int degree = new Random().nextInt()%30;String ch = data.charAt(new Random().nextInt(data.length()))+"";//强制字符转换 g.rotate(degree * Math.PI/180,x,20);//旋转的角度 g.drawString(ch, x, 20); g.rotate(-degree * Math.PI/180,x,20);//反向旋转 x+=30;//避免字体重叠}}private void setRandomLine(Graphics g) {// TODO Auto-generated method stubg.setColor(Color.RED);for(int i= 0;i<6;i++){int x1 = new Random().nextInt(WIDTH);int y1 = new Random().nextInt(HEIGTH);int x2 = new Random().nextInt(WIDTH);int y2 = new Random().nextInt(HEIGTH);g.drawLine(x1, y1, x2, y2);//得到6条随机线}}private void setBorder(Graphics g) {// TODO Auto-generated method stubg.setColor(Color.BLUE);g.drawRect(1, 1, WIDTH-2, HEIGTH-2);//设计边框颜色,大小}private void setBackground(Graphics g) {// TODO Auto-generated method stubg.setColor(Color.WHITE);g.fillRect(0,0,WIDTH,HEIGTH);设计验证码图片的背景颜色和颜色填充的大小}}
jsp页面 :
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>   <script type="text/javascript">function  ChangeImage(img){   img.src = img.src+"?"+new Date().getTime();   }<!--创建changeimage的方法-->   </script>        <title>注册页面</title>   </head>    <body>  <form>  <table>  <tr>  <td>  id:<input type = "text" ><br/>  </td>  </tr>  <tr>  <td>  密码:<input type = "password"><br/>    </td>  </tr>  <tr>  <td>  验证码:<input type = "text"> <img src = "/note/servlet/Checkpic" onclick = "ChangeImage (this)"  alt = "换一张" style = "cursor:hand"><!--在图片上单击刷新图片验证码,并且将鼠标的箭头在图片上的状态改成手的形状-->  <br/>  </td>  </tr>  <tr>  <td>  <input type = "submit" value = "提交">  <input type = "reset" value = "重置"><br/>  </td>  </tr>  </table>  </form>      </body></html><img width="783" height="733" style="width: 634px; height: 552px;" src="http://img.blog.csdn.net/20160805192809368?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />


0 0
原创粉丝点击