验证码的制作和验证(一)
2018-06-18 03:45:40来源:未知 阅读 ()
方法一:BufferedImage+Graphics制作验证码
1.制作JSP页面(如图)
代码如下:
1 <body> 2 <form action="<%=request.getContextPath()%>/servlet/LoginServlet" method="get" /> 3 验证码:<input type="text" name="checkcode"/> 4 <img alt="验证码" id="imagecode" src="<%=request.getContextPath()%>/servlet/ImageServlet"/> 5 <a href="javascript:reloadCode();">看不清楚</a><br> 6 <input type="submit" value="提交"> 7 </form> 8 </body>
2.实现ImageServlet
1 public class ImageServlet extends HttpServlet { 2 3 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{ 4 //制作图片 5 BufferedImage bi=new BufferedImage(68,22,BufferedImage.TYPE_INT_RGB); 6 Graphics g=bi.getGraphics(); 7 //设置颜色并绘制 8 Color c=new java.awt.Color(200, 150, 255); 9 g.setColor(c); 10 g.fillRect(0, 0, 68, 22); 11 //设置内容 12 char ch[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray(); 13 //随机数--通过随机数随机产生颜色和字母、数字 14 Random r=new Random(); 15 int len=ch.length,index; 16 StringBuffer sb=new StringBuffer(); 17 for(int i=0;i<4;i++){ 18 //随机产生字母、数字 19 index=r.nextInt(len); 20 //随机产生颜色 21 g.setColor(new Color(r.nextInt(88),r.nextInt(188),r.nextInt(255))); 22 //画出字母、数字 23 g.drawString(ch[index]+"", (i*15)+3, 18); 24 //存储当前字母、数字 25 sb.append(ch[index]); 26 } 27 //将当前字母、数字存入session 28 request.getSession().setAttribute("piccode", sb.toString()); 29 //输出图片 30 ImageIO.write(bi, "JPG", response.getOutputStream()); 31 } 32 }
3.实现点击“看不清楚”换一张图片(修改Jsp)
**在form标签前、body标签内插入:
1 <script type="text/javascript"> 2 function reloadCode(){ 3 //通过time来区分不同的时间,从而刷新验证码图片 4 var time=new Date().getTime(); 5 document.getElementById("imagecode").src="<%=request.getContextPath()%>/servlet/ImageServlet?d="+time; 6 } 7 </script>
**注:其中,必须加入time来区分不同的路径,否则浏览器中会有缓存,点击之后还是原来的图!!
4.实现验证码的验证(实现LoginServlet)
1 public class LoginServlet extends HttpServlet{ 2 public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException{ 3 //获取图片内容 4 String piccode=(String)request.getSession().getAttribute("piccode"); 5 //获取输入内容 6 String checkcode=request.getParameter("checkcode"); 7 //不区分大小写 8 checkcode=checkcode.toUpperCase(); 9 //防止乱码 10 response.setContentType("text/html;charset=gbk"); 11 PrintWriter out=response.getWriter(); 12 //验证并输出结果 13 if(checkcode.equals(piccode)){ 14 out.println("验证码输入正确!"); 15 }else{ 16 out.println("验证码输入错误!!"); 17 } 18 out.flush(); 19 out.close(); 20 } 21 }
--未完待续--
**注:学习自慕课网《Java实现验证码制作》,附链接https://www.imooc.com/learn/283
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:JAXB应用实例
下一篇:Hibernate入门(一)
- 类的继承,方法重新中修饰符如何定义 2020-06-10
- 详解SpringBoot(2.3)应用制作Docker镜像(官方方案) 2020-06-08
- 体验SpringBoot(2.3)应用制作Docker镜像(官方方案) 2020-06-07
- java里面main方法中的String[]args 2020-06-07
- 错误: 在类中找不到 main 方法, 请将 main 方法定义为: & 2020-06-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash