spirng mvc 中使用验证码

生成验证码方法:

@RequestMapping("/vCode")@ResponseBodypublic Map<String, String> vCode(HttpServletRequest request,HttpServletResponse response){//设置不缓存图片response.setHeader("Pragma", "No-cache");response.setHeader("Cache-Control", "No-cache");response.setDateHeader("Expires", 0);//设置生成类型response.setContentType("image/jpeg");int width = 85;int height = 25;BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics g = image.getGraphics();Graphics2D g2d = (Graphics2D)g;Font font = new Font("正楷", Font.BOLD, 16);g.setColor(getRandColor(200, 250));g.fillRect(0, 0, width, height);g.setFont(font);g.setColor(getRandColor(180, 200));String vCode = "";String msg = "";Random random= new Random ();int length = Math.abs(random.nextInt(2));for (int i = 0; i < 4 +length; i++) {random = new Random ();int check = Math.abs(random.nextInt(3));if (check == 0) {msg = StringUtil.getNum()+"";}if (check == 1) {msg = StringUtil.getChar()+"";}if (check == 2) {msg = StringUtil.getChinese();}Color color = new Color(20+random.nextInt(110),20+random.nextInt(110),random.nextInt(110));g.setColor(color);g.drawString(msg, 15*i+5, 14);vCode += msg; }HttpSession session = request.getSession(true);session.setAttribute("vCode", vCode);g.dispose();try {ImageIO.write(image, "JPEG", response.getOutputStream());} catch (IOException e) {e.printStackTrace();}return null;}
 public Color getRandColor(int s,int e){  Random random=new Random ();  if(s>255) s=255;  if(e>255) e=255;  int r,g,b;  r=s+random.nextInt(e-s);    //随机生成RGB颜色中的r值  g=s+random.nextInt(e-s);    //随机生成RGB颜色中的g值  b=s+random.nextInt(e-s);    //随机生成RGB颜色中的b值  return new Color(r,g,b);  }  
public class StringUtil {public static void main(String[] args) {System.out.println(getValidCode());}public static String getValidCode() {String ret = "";Random random = new Random();for (int i = 0; i < 4 + Math.abs(random.nextInt(3)); i++) {int check = Math.abs(random.nextInt(3));if (check == 0) {ret += getNum();}if (check == 1) {ret += getChar();}if (check == 2) {ret += getChinese();}}return ret;}public static String getChinese() {Random random = new Random();byte[] b = new byte[2];b[0] = (new Integer(176 + Math.abs(random.nextInt(39))).byteValue());// 获取高位值b[1] = (new Integer(161 + Math.abs(random.nextInt(93))).byteValue());// 获取低位值try {return new String(b, "GBk"); // 转成中文} catch (UnsupportedEncodingException ex) {ex.printStackTrace();}return null;}public static char getChar() {Random random = new Random();int index = Math.abs(random.nextInt(26));return (char) (index + 'A');}public static int getNum() {Random random = new Random();int index = Math.abs(random.nextInt(10));return index;}}

 

转载于:https://www.cnblogs.com/phyxis/p/5424267.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATALB(三)绘图命令

绘图命令 &#xff08;一&#xff09;二维绘图命令 二维绘图的基本命令有plot&#xff0c;loglog&#xff0c;semilogx&#xff0c;semilogy和polar。它们的使用方法基本相同&#xff0c;其不同点是在不同的坐标中绘制图形。plot命令使用线性坐标空间绘制图形&#xff1b;loglo…

python assert函数

assert expression , arguments arguments可选&#xff0c;当expression为真时正常执行程序&#xff0c;当expression为假时执行arguments assert 11 # 条件为 true 正常执行 assert 12, 1 不等于 2 Traceback (most recent call last): File "<stdin>",…

微软打压竞争对手:针对AWS、谷歌、阿里云等提高软件许可成本

来源&#xff1a;云头条使用在公共云上托管的专用服务器上运行的微软软件&#xff1f;那就准备好多付钱。微软改变了许可条款&#xff0c;将使微软软件对AWS、谷歌云和阿里云的一些客户来说变得更昂贵。微软现在声称&#xff1a;专用托管云服务的出现使传统外包和云服务之间的界…

HTML文字横向滚动

<!DOCTYPE html><html><head> <title></title></head><body><div> <marquee width"100%" height"64px" direction"left" scrollamount"3" οnmοuseοver"this…

一维和二维卷积和池化

一维卷积的卷积核是二维的&#xff0c;二维卷积的卷积核是三维的&#xff08;因为卷积要考虑深度&#xff0c;即通道数&#xff09; 例如输入数据为(128,32,28,28)&#xff0c;128为batch size&#xff0c;32为channel&#xff0c;28和28是hight和width&#xff0c;如果采用二…

python+OpenCV图像处理(四)图像的简单几何变换

图像的简单几何变换 先看一下关于图像几何变换的简介&#xff1a; 几何变换不改变图像的像素值&#xff0c;只是在图像平面上进行像素的重新安排。 适当的几何变换可以最大程度地消除由于成像角度、透视关系乃至镜头自身原因所造成的几何失真所产生的负面影响。有利于我们在后续…

谷歌AI自动重建果蝇大脑,离绘制人脑更进一步

来源&#xff1a;googleblog、biorxiv、venturebeat导语&#xff1a;将果蝇的大脑分割成成千上万个40纳米的超薄切片&#xff1f;不怕&#xff0c;谷歌新AI技术能够重建果蝇完整大脑。智东西8月6日消息&#xff0c;据外媒报道&#xff0c;谷歌刚刚公布了一项最新研究结果“用洪…

python+OpenCV图像处理(五)图像的阈值分割

图像的阈值处理一幅图像包括目标物体、背景还有噪声&#xff0c;要想从多值的数字图像中直接提取出目标物体&#xff0c;常用的方法就是设定一个阈值T&#xff0c;用T将图像的数据分成两部分&#xff1a;大于T的像素群和小于T的像素群。这是研究灰度变换的最特殊的方法&#xf…

git Please move or remove them before you can merge. 错误解决方案

git pull 时 往往会遇到各种各样的问题 ,下面是常遇到的一种状况 Updating 7c9e086..936acacerror: The following untracked working tree files would be overwritten by merge:Common/HFHttpRequest/HFHttpRequestParameters.hCommon/HFHttpRequest/HFHttpRequestParameters…

为什么有些softmax公式需要减去输入中的最大值

我们都知道softmax公式如下&#xff1a; 但有些softmax公式是先将每个x_i减去x中的最大值再代入以上公式 原因是为了防止上溢和下溢 举个例子&#xff0c;x[100000,100001,100002],如果直接代入上式数值会非常大&#xff0c;当对每个x的值减去x中的最大值后得到[-2,-1,0]&…

决策树算法框架

决策树算法框架 &#xff08;一&#xff09;决策树主函数各种决策树的主函数都大同小异&#xff0c;本质上是一个递归函数。该函数的主要功能是按照某种规则生长决策树的各个分支节点&#xff0c;并根据终止条件结束算法。一般来讲&#xff0c;主函数需要完成如下几个功能。 &a…

基于哈夫曼编码完成的文件压缩及解压

这几天在较为认真的研究基于哈夫曼编码的文件压缩及解压&#xff0c;费了点时间&#xff0c;在这分享一下&#xff1a; 这里用链式结构&#xff0c;非顺序表结构&#xff1b; 文件压缩&#xff1a; 1.获取文件信息&#xff08;这里采用TXT格式文本&#xff09;&#xff1b; 2.压…

兰德公司报告分析 “分布式作战”对美空军兵力运用的影响

来源&#xff1a;兰德公司网站/图片来自互联网导读7月17日&#xff0c;兰德公司发布《竞争环境下的分布式作战&#xff1a;对美国空军兵力运用的影响》的报告&#xff0c;研究了美空军竞争环境下“分布式作战”的能力需求&#xff0c;分析了如何调整美空军当前的“兵力运用模式…

Keras中LSTM的return_sequences和return_state

keras.layers.LSTM()函数有两个重要的参数return_sequences和return_state return_sequences和return_state默认都为false&#xff0c;接下来分别讲解当return_sequences和return_state取不同值时LSTM函数的返回值 return_sequencesTrue会返回每个时间步的隐藏状态&#xff0…

MATLAB(四)在高等数学中的应用

MATLAB在高等数学中的应用 &#xff08;一&#xff09;求极限 matlab中求极限的命令为 limit(expr, x, a) limit(expr, a) limit(expr) limit(expr, x, a, left) limit(expr, x, a, right) 其中&#xff0c;limit(expr, x, a)表示求符号表达式expr关于符号变量x趋近于a时的…

华为手机到底用了多少美国芯?外媒拆解来了

来源&#xff1a;iFixit、IT之家从拆解结果来看&#xff0c;华为Mate 20 X (5G)手机除了使用了3颗美国的芯片产品&#xff08;美光内存、SkyworksWCDMA/LTE低端前端模块、Qorvo中高频段模块&#xff09;以及荷兰公司恩智浦的芯片产品&#xff0c;其余主要部件基本上都是由华为海…

c++判断字符是否为空格或数字

判断字符是否为空格的函数&#xff1a; isspace() 标准的空白字符包括&#xff1a; (0x20) space (SPC) 空格符 \t (0x09) horizontal tab (TAB) 水平制表符 \n (0x0a) newline (LF) 换行符 \v (0x0b) vertical tab (VT) 垂直制表符 \f (0x0c) …

[改善Java代码] 推荐使用序列化实现对象的拷贝

建议44&#xff1a; 推荐使用序列化实现对象的拷贝 上一个建议说了对象的浅拷贝问题&#xff0c;实现Cloneable接口就具备了拷贝能力&#xff0c;那我们来思考这样一个问题&#xff1a;如果一个项目中有大量的对象是通过拷贝生成的&#xff0c;那我们该如何处理&#xff1f;每个…

MATLAB(五)在线性代数中的应用

MATLAB在线性代数中的应用 &#xff08;一&#xff09;向量组的线性相关性 求列向量组A的一个最大线性无关组&#xff0c;可用命令rref(A)将A化成行最简形&#xff0c;其中单位向量对应的列向量即为最大线性无关组所含向量&#xff0c;其他列向量的坐标即为其对应向量用最大线…

C++一位的字符数字转数字

char c4; //1,2,3,.....9 int num0; num int(c - 0);’0’的ASC码是48,‘1’&#xff0c;‘2’......的ASC码分别为49,50...... 和0相减即为对应的数字