Servlet:

package cn.bdqn.servlet;

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 java.awt.*;
import java.awt.font.ImageGraphicAttribute;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random; @WebServlet(name = "Servlet",urlPatterns = "/yanCode")
public class Servlet extends HttpServlet {
public void doPost(javax.servlet.http.HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String s="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
int width=500;
int height=50;
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics graphics = image.getGraphics();//相当于画笔
//画背景
graphics.setColor(Color.gray);
graphics.fillRect(0,0,width,height);
graphics.setColor(Color.black);
for (int i = 0; i <4 ; i++) {
int index = random.nextInt(s.length());
String c = s.substring(index, index + 1);
graphics.drawString(c,width/5*(i+1),15);
} ImageIO.write(image,"jpg",response.getOutputStream()); }
}

  jsp:

<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2017/10/10
Time: 13:04
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>验证码</title>
</head>
<body>
<img src="yanCode" alt="验证码" style="width: 500px;height:50px">
<input type="button" value="看不清,更换验证码" id="btn" onclick="changeCode();"> <script type="text/javascript" src="js/jquery.min.js">
</script>
<script type="text/javascript" >
function changeCode() {
$("img").attr('src', 'yanCode?ts=' + new Date().getTime()); }
</script>
</body>
</html>

  

最新文章

  1. AutoMapper对internal访问级别属性的映射
  2. [总结] Versions crashing in OS X Yosemite (10.10)
  3. 用Burpsuite破解网站密码
  4. [CS231n-CNN] Backpropagation(反向传播算法)
  5. Hibernate出现javax.naming.NoInitialContextException 错误的解决办法
  6. c# 使用GetOleDbSchemaTable获取access数据库结构
  7. Web分布式部署,跨应用程序Forms身份验证的集成方案
  8. NSFileHandle 和 NSFileManager的一些用法
  9. Mac下安装MySQL-python
  10. Proving Equivalences(加多少边使其强联通)
  11. 【Python】 sys和os模块
  12. php中$_FILES应用实例
  13. 虹软离线人脸识别 ArcFace 2.0 Demo [C++]
  14. spring-boot-2.0.3之quartz集成,最佳实践
  15. Java第三方支付接入案例(支付宝)
  16. mysql01
  17. LeetCode--437--路径总和3
  18. Linux或树莓派3——挂载U盘、移动硬盘并设置rwx权限
  19. android开发(37) android使用android_serialport_api 操作串口,解决权限问题
  20. HDU 2089 不要62(数位dp模板题)

热门文章

  1. CMake--Set用法
  2. HashMap, HashTable,HashSet,TreeMap 的时间复杂度
  3. ES next &amp; Async Await
  4. [IOI2018]排座位——线段树
  5. java构造函数总结
  6. Goldbach`s Conjecture LightOJ - 1259 (素数打表 哥德巴赫猜想)
  7. mysql Packet for query is too large (2036 &gt; 1024). You can change this value on the server by setting the max_allowed_packet&#39; variable.
  8. 自学Linux Shell4.3-处理数据文件sort grep gzip tar
  9. BZOJ 1195: [HNOI2006]最短母串
  10. k8s常用命令