servlet 验证码

傷城~ 2022-06-13 13:53 264阅读 0赞

手工实现

  1. import java.awt.Color;
  2. import java.awt.Font;
  3. import java.awt.Graphics;
  4. import java.awt.Image;
  5. import java.awt.image.BufferedImage;
  6. import java.io.IOException;
  7. import java.util.Random;
  8. import javax.imageio.ImageIO;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.http.HttpServlet;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13. import cn.dsna.util.images.ValidateCode;
  14. public class Demo3 extends HttpServlet{
  15. @Override
  16. protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  17. throws ServletException, IOException {
  18. ValidateCode vc = new ValidateCode(110,50);
  19. vc.write(resp.getOutputStream());
  20. int width = 110;
  21. int height = 25;
  22. BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  23. //创建画笔
  24. Graphics g = img.getGraphics();
  25. //上背景色
  26. g.setColor(Color.PINK);
  27. g.fillRect(1, 1, width-2, height-2);
  28. //给边框颜色
  29. g.setColor(Color.RED);
  30. g.drawRect(1, 1, width, height);
  31. //设置文字
  32. g.setColor(Color.BLUE);
  33. g.setFont(new Font("宋体", Font.PLAIN,15));
  34. Random rand = new Random();
  35. int cnt = 20;
  36. for (int i=0; i<4; i++){
  37. g.drawString(rand.nextInt(10)+"", cnt, 20);
  38. cnt+=20;
  39. }
  40. for (int i=0; i<4; i++){
  41. g.drawLine(rand.nextInt(width), rand.nextInt(height),rand.nextInt(width), rand.nextInt(height));
  42. }
  43. //将图片以流对象输出到客户端
  44. ImageIO.write(img, "jpg", resp.getOutputStream());
  45. }
  46. @Override
  47. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  48. throws ServletException, IOException {
  49. // TODO 自动生成的方法存根
  50. super.doPost(req, resp);
  51. }
  52. }

html显示验证码

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Login.html</title>
  5. <meta name="keywords" content="keyword1,keyword2,keyword3">
  6. <meta name="description" content="this is my page">
  7. <meta name="content-type" content="text/html; charset=UTF-8">
  8. <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
  9. <script type="text/javascript"> function changeCode(){ var img = document.getElementsByTagName("img")[0]; img.src="/day1/demo1?time="+new Date().getTime(); } </script>
  10. </head>
  11. <body>
  12. <form action="#" method="post">
  13. 用户名:<input type="text" ><br>
  14. 密码:<input type="password" ><br>
  15. 验证码:<input type="text" >
  16. <img src="/day1/demo1" onclick="changeCode()"/><a href="javascript:changeCode()">看不清 换一张</a><br>
  17. <input type="submit" value="登入"/><br>
  18. </form>
  19. </body>
  20. </html>

通过jar包实现

就换成两行代码即可,都实现好了直接用

  1. package demo2;
  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6. import java.awt.image.BufferedImage;
  7. import java.io.IOException;
  8. import java.util.Random;
  9. import javax.imageio.ImageIO;
  10. import javax.servlet.ServletException;
  11. import javax.servlet.http.HttpServlet;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14. import cn.dsna.util.images.ValidateCode;
  15. public class Demo3 extends HttpServlet{
  16. @Override
  17. protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  18. throws ServletException, IOException {
  19. ValidateCode vc = new ValidateCode(110,50);
  20. vc.write(resp.getOutputStream());
  21. }
  22. @Override
  23. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  24. throws ServletException, IOException {
  25. // TODO 自动生成的方法存根
  26. super.doPost(req, resp);
  27. }
  28. }

发表评论

表情:
评论列表 (有 0 条评论,264人围观)

还没有评论,来说两句吧...

相关阅读

    相关 jsp使用servlet实现验证

    在进行表单设计中,验证码的增加恰恰可以实现是否为“人为”操作,增加验证码可以防止网站数据库信息的冗杂等... 现在,小编将讲述通过servlet实现验证码: 验证码作为一个