使用Java怎么实现动态验证码单线设计
使用Java怎么实现动态验证码单线设计?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

目前创新互联已为近1000家的企业提供了网站建设、域名、网络空间、网站托管、服务器租用、企业网站设计、耀州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
1.java的动态验证码我这里将介绍两种方法:
一:根据java本身提供的一种验证码的写法,这种呢只限于大家了解就可以了,因为java自带的模式编写的在实际开发中是没有意义的,所以只供学习一下就可以了,待会讲解的第二种呢就是我们需要掌握的一种模式了:
第一种的代码如下:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class inde
*/
@WebServlet("/inde")
public class inde extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public inde() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
/**动态生成图片验证码
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//创建图像
int width=100;
int height=40;
//图片的大小设置
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//创建画板
Graphics g=image.getGraphics();
setSquareBackGround(g,width,height,5);
//确定画笔颜色
g.setColor(Color.black);
//填充矩形
g.fillRect(0, 0, width, height);
//在大矩形中放小矩形
g.setColor(Color.WHITE);
g.fillRect(1, 1, width-2, height-2);
//填充字符
String str = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789";
StringBuffer sb=new StringBuffer();
//画随机干扰框
setSquareBackGround(g,width,height,3);
//画干扰点
CreateRandomPoint(width, height,100,g,100);
//随机画几条线
CreateRandomLine(width, height,8,g,100);
//随机获取4个字符
Random random=new Random();
for (int i = 0; i < 4; i++) {
//62个填充字符里面随机的随机的收取字符
int index=random.nextInt(62);
//截取一个字符
String st=str.substring(index, index+1);
//把字符放到图片中去
g.setColor(Color.red);
//设置字体
g.setFont(new Font("宋体",Font.BOLD,30));
g.drawString(st, 20*i, 30);//防止4个字符在一起
sb.append(st);
}
//把StringBuffer中的验证码放到session里面,目的是让Login调用
HttpSession se=request.getSession();
se.setAttribute("number", sb.toString());
//发送图片到浏览器 指定发送的图片 和格式
response.setContentType("image/jpeg");
//图片,图片的格式,输出的方式
ImageIO.write(image, "jpg", response.getOutputStream());
}
Random rand = new Random();
private void CreateRandomPoint(int width,int height,int many,Graphics g,int alpha)
{ // 随机产生干扰点
for (int i=0;i上面的代码呢写的很详细了,这里我就不重复了,这里的干扰线条是有很多写法的,我这里就没有全写出来,有需要的话可以私聊我哦!
下面介绍第二种:
这种呢是我们开发中是可以用得到的,使用在的是网页端的交互,我们在登录网站的时候有很多的验证码就可以用这个来写了
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class inde
*/
@WebServlet("/inde")
public class inde extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public inde() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
/**动态生成图片验证码
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//创建图像
int width=100;
int height=40;
//图片的大小设置
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//创建画板
Graphics g=image.getGraphics();
setSquareBackGround(g,width,height,5);
//确定画笔颜色
g.setColor(Color.black);
//填充矩形
g.fillRect(0, 0, width, height);
//在大矩形中放小矩形
g.setColor(Color.WHITE);
g.fillRect(1, 1, width-2, height-2);
//填充字符
String str = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789";
StringBuffer sb=new StringBuffer();
//随机获取4个字符
Random random=new Random();
for (int i = 0; i < 4; i++) {
//62个填充字符里面随机的随机的收取字符
int index=random.nextInt(62);
//截取一个字符
String st=str.substring(index, index+1);
//把字符放到图片中去
g.setColor(Color.red);
//设置字体
g.setFont(new Font("宋体",Font.BOLD,30));
g.drawString(st, 20*i, 30);//防止4个字符在一起
sb.append(st);
}
//把StringBuffer中的验证码放到session里面,目的是让Login调用
HttpSession se=request.getSession();
se.setAttribute("number", sb.toString());
//发送图片到浏览器 指定发送的图片 和格式
response.setContentType("image/jpeg");
//图片,图片的格式,输出的方式
ImageIO.write(image, "jpg", response.getOutputStream());
}Java可以用来干什么
Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。
看完上述内容,你们掌握使用Java怎么实现动态验证码单线设计的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
网站题目:使用Java怎么实现动态验证码单线设计
浏览路径:http://www.jxjierui.cn/article/gpsieh.html


咨询
建站咨询
