生成验证码

朱雀 2022-05-09 09:10 399阅读 0赞
  1. import java.awt.Color;
  2. import java.awt.Font;
  3. import java.awt.Graphics2D;
  4. import java.awt.image.BufferedImage;
  5. import java.io.IOException;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import java.util.Random;
  9. import javax.imageio.ImageIO;
  10. import javax.servlet.ServletException;
  11. import javax.servlet.ServletOutputStream;
  12. import javax.servlet.annotation.WebServlet;
  13. import javax.servlet.http.HttpServlet;
  14. import javax.servlet.http.HttpServletRequest;
  15. import javax.servlet.http.HttpServletResponse;
  16. import javax.servlet.http.HttpSession;
  17. @WebServlet("/validcode")
  18. public class ValidCodeServlet extends HttpServlet{
  19. @Override
  20. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  21. //创建一张图片
  22. //单位像素
  23. BufferedImage image= new BufferedImage(200, 100, BufferedImage.TYPE_INT_RGB);
  24. //创建画板,如果透明的玻璃
  25. //想画板上画内容之前得设置画笔
  26. Graphics2D gra = image.createGraphics();
  27. gra.setColor(new Color(255, 255, 255));
  28. gra.fillRect(0, 0, 200, 100);
  29. List<Integer> randList = new ArrayList<Integer>();
  30. Random random = new Random();
  31. for(int i=0;i<4;i++) {
  32. randList.add(random.nextInt(10));
  33. }
  34. Color[] colors = new Color[] {Color.BLUE, Color.CYAN, Color.GRAY,Color.GREEN,Color.ORANGE};
  35. //字体 宋体,加粗、斜体,字号40
  36. gra.setFont(new Font("宋体",Font.BOLD|Font.ITALIC,40));
  37. for (int i=0;i<randList.size();i++) {
  38. gra.setColor(colors[random.nextInt(colors.length)]);
  39. gra.drawString(randList.get(i).toString(), i * 40 , 50 + (random.nextInt(21)-10));
  40. }
  41. for (int i=0;i<2;i++) {
  42. gra.setColor(colors[random.nextInt(colors.length)]);
  43. gra.drawLine(0,random.nextInt(100), 200, random.nextInt(100));
  44. }
  45. ServletOutputStream outputStream = resp.getOutputStream();
  46. //工具类
  47. ImageIO.write(image, "jpg", outputStream);
  48. //把验证码放入到session中
  49. HttpSession session = req.getSession();
  50. session.setAttribute("code", ""+randList.get(0)+randList.get(1)+randList.get(2)+randList.get(3));
  51. }
  52. }

jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>Insert title here</title>
  8. <script type="text/javascript" src="js/jquery.js"></script>
  9. <script type="text/javascript">
  10. $(function(){
  11. $("a").click(function(){
  12. $("img").attr("src","validcode?date="+new Date());
  13. return false;
  14. })
  15. })
  16. </script>
  17. </head>
  18. <body>
  19. <form action="login" method="post">
  20. 用户名: <input type="text" name="username"/><br/>
  21. 密 码: <input type="password" name="password"/><br/>
  22. 验证码:<input type="text" size="1" name="code"/><img src="validcode" width="80" height="40"/><a href="">看不清</a><br/>
  23. <input type="submit" value="登录"/><input type="reset" value="重置">
  24. </form>
  25. </body>
  26. </html>

发表评论

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

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

相关阅读

    相关 验证生成

    视图函数里 > 1,导入图片,画布,画笔,画笔上的字体,定义坐标 > 2,从外部导入字体(字体导入到static静态中) > 3,随机生成验证码,验证码颜色,验证