day84 json中实现简单验证码

项目中的问题:
        1 修改JS或CSS后,页面不能及时更新?
                把浏览器-->"开发者工具"-->"网络"-->选中"禁用缓存"
        2 如何把HTML页面转为JSP页面
 将jsp页面中的<%@ page contentType="text/html;charset=UTF-8" language="java" %>指令复制到html文件头

3 如何实现简单验证码操作:  

          生成验证码的RandomCodeController类

package com.xja.controller; /*** @author 赵淑娜* Date  2024/4/26 10:15*/import javax.imageio.ImageIO;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;@WebServlet(name = "randomCode.do", value = "/RandomCodeController")
public class RandomCodeController extends HttpServlet {private static final String CONTENT_TYPE = "image/jpeg";//Initialize global variablespublic void init() throws ServletException {}//产生随机颜色函数getRandColorColor getRandColor(int fc, int bc) {Random r = new Random();if (fc > 255) fc = 255;if (bc > 255) bc = 255;int red = fc + r.nextInt(bc - fc); //红int green = fc + r.nextInt(bc - fc); //绿int blue = fc + r.nextInt(bc - fc); //蓝return new Color(red, green, blue);}//Process the HTTP Get requestpublic void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {response.setContentType(CONTENT_TYPE);HttpSession session = request.getSession();//设置页面不缓存response.setHeader("Pragma", "No-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);//创建随机类Random r = new Random();// 在内存中创建图像,宽度为width,高度为heightint width = 60, height = 20;BufferedImage pic = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);// 获取图形上下文环境Graphics gc = pic.getGraphics();// 设定背景色并进行填充gc.setColor(getRandColor(200, 250));gc.fillRect(0, 0, width, height);//设定图形上下文环境字体gc.setFont(new Font("Times New Roman", Font.PLAIN, 20));// 随机产生200条干扰直线,使图像中的认证码不易被其他分析程序探测到for (int i = 0; i < 200; i++) {int x1 = r.nextInt(width);int y1 = r.nextInt(height);int x2 = r.nextInt(15);int y2 = r.nextInt(15);gc.setColor(getRandColor(160, 200));gc.drawLine(x1, y1, x1 + x2, y1 + y2);}//随机产生100个干扰点,使图像中的验证码不易被其他分析程序探测到for (int i = 0; i < 100; i++) {int x = r.nextInt(width);int y = r.nextInt(height);gc.setColor(getRandColor(120, 240));gc.drawOval(x, y, 0, 0);}// 随机产生4位数字的验证码String RS = "";String rn = "";RS = r.nextInt(9000) + 1000 + "";/*for(int i=0;i<4;i++){//产生10以内随机数字rnrn=String.valueOf(r.nextInt(10));RS+=rn;//将认证码用drawString函数显示到图像里gc.setColor(new Color(20+r.nextInt(110),20+r.nextInt(110),20+r.nextInt(110)));gc.drawString(rn,13*i+6,16);}*/gc.setColor(new Color(20 + r.nextInt(110), 20 + r.nextInt(110),20 + r.nextInt(110)));gc.drawString(RS, 10, 16);// 释放图形上下文环境gc.dispose();// 将认证码RS存入SESSION中共享session.setAttribute("random", RS);// 输出生成后的验证码图像到页面ImageIO.write(pic, "JPEG", response.getOutputStream());}//Process the HTTP Post requestpublic void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {doGet(request, response);}//Clean up resourcespublic void destroy() {}
}

        显示生成的验证码:

                <img src="${pageContext.request.contextPath}/RandomCodeController" />

      

         生成的验证码在session对象中存储:

                  session.setAttribute("random", RS) ;       
         

         "看不清",点击事件相关操作: 重新给图片设置src属性值:
               

      $("#codeImg").attr("src",$("#path").val()+"/RandomCodeController?t="+Math.random())

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

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

相关文章

matlab code转C计算结果不一样原因?

在MATLAB中自动转换为C代码&#xff0c;并在Visual Studio 2022中运行时&#xff0c;如果发现计算结果不一致&#xff0c;可能有以下几种原因&#xff1a; 数值精度问题&#xff1a;MATLAB默认使用双精度浮点数进行计算&#xff08;double&#xff09;&#xff0c;而C语言中的浮…

面试:Redis(缓存穿透、缓存击穿、缓存雪崩、双写一致、Redis的持久化、Redis的过期策略、Redis的数据淘汰策略、Redis的分布式锁、Redis的集群方案、Redis网络模型)

目录 一、缓存穿透 1、解决方案一&#xff1a; 2、解决方案二&#xff1a; 二、缓存击穿 1、解决方案一&#xff1a; 2、解决方案二&#xff1a; 三、缓存雪崩 1、解决方案一&#xff1a; 2、解决方案二&#xff1a; 3、解决方案三&#xff1a; 4、解决方案四&#…

python常用库函数

Python标准库 0内置函数模块 一部分常用的的内置函数。 函数说明abs返回一个数的绝对值&#xff0c;例如&#xff1a;abs(-1.3)会返回1.3。bin把一个整数转换成以0b开头的二进制字符串&#xff0c;例如&#xff1a;bin(123)会返回0b1111011。chr将Unicode编码转换成对应的字…

C#窗体控件ColorDialog

介绍 可以获取颜色&#xff0c;然后对其他控件的颜色属性进行设置。 构造方式 直接把ColorDialog控件拖动到Form窗口。 常用属性 AllowFullOpen 可以控制是否使用自定义颜色&#xff0c;true表示可使用&#xff0c;否&#xff0c;表示不可使用。 AnyColor 如果为tr…

使用Spel表达式

使用Spel表达式 前两天在完成一个需求的时候需要读取对象中某注解内的表达式来进行解析&#xff0c;其实两个反射可以解决这个问题。突然想到spring中spel表达式不就是用来解析表达式的吗&#xff1f;干脆用spel表达式来进行解析吧。 先说明一下我这种场景使用的是模板表达式 /…

Unity 问题之 开发应用在设备上运行闪屏花屏问题的分析处理

Unity 问题之 开发应用在设备上运行闪屏花屏问题的分析处理 目录 Unity 问题之 开发应用在设备上运行闪屏花屏问题的分析处理 一、简单介绍 二、问题现象 三、问题分析 四、使用空后处理&#xff0c;解决闪屏花屏的显示问题 五、空后处理完整代码 一、简单介绍 Unity 在…

面试:Redis

目录 一、缓存穿透 1、解决方案一&#xff1a; 2、解决方案二&#xff1a; 二、缓存击穿 1、解决方案一&#xff1a; 2、解决方案二&#xff1a; 三、缓存雪崩 1、解决方案一&#xff1a; 2、解决方案二&#xff1a; 3、解决方案三&#xff1a; 4、解决方案四&#x…

【每日算法】理论:深度学习基础 刷题:KMP算法思想

上期文章 【每日算法】理论&#xff1a;常见网络架构 刷题&#xff1a;力扣字符串回顾 文章目录 上期文章一、上期问题二、本期理论问题1、注意力机制2、BatchNorm 和 LayerNorm 的区别3、Bert 的参数量是怎么决定的。4、为什么现在的大语言模型都采用Decoder only架构&#x…

第二篇:Python环境搭建:从初学者到专家

Python环境搭建&#xff1a;从初学者到专家 在编程的世界里&#xff0c;准备好一个高效而舒适的开发环境是走向成功的第一步。在这篇博客文章中&#xff0c;我们将一起探索如何为Python编程搭建一个理想的环境。无论你是完全的新手还是希望提升现有的技能&#xff0c;本文都会…

【Python 对接QQ的接口】简单用接口查询【等级/昵称/头像/Q龄/当天在线时长/下一个等级升级需多少天】

文章日期&#xff1a;2024.04.28 使用工具&#xff1a;Python 类型&#xff1a;QQ接口 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算法&#xff09;&…

第10章 项目管理基础知识

一、项目概述 &#xff08;一&#xff09;项目 在既定的项目资源要求和约束下&#xff0c;为实现特定目标而相互联系的一次性活动&#xff08;资源任务&#xff09;。世界上没有两个完全相同的项目项目有资源约束&#xff0c;一定的目的&#xff0c;是一次性。 &#xff08;…

金属冶炼及压延加工制造数字孪生可视化平台,推进行业数字化转型

金属冶炼及压延加工制造数字孪生可视化平台&#xff0c;推进行业数字化转型。随着科技的不断进步和工业的快速发展&#xff0c;金属冶炼及压延加工行业正面临着前所未有的挑战和机遇&#xff0c;数字化转型成为了行业发展的必然趋势。在这个过程中&#xff0c;数字孪生可视化平…

OSPF大作业

一&#xff0c;拓扑 二&#xff0c;要求 1&#xff0c;r4为ISP上只配ip&#xff0c;r3与其他设备之间只使用公有IP 2&#xff0c;r3-r5/6/7为MGRE环境&#xff0c;r3为中心 3&#xff0c;整个OSPF的ip地址基于172.16.0.0/16划分 所以设备都可以访问r4的环回 4减少LSA的数量加快…

CSS实现jd的商品列表,附完整代码!

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

vue2如何创建一个项目?

目录 1. 安装环境&#xff1a; 2. 安装Vue CLI 3. 创建新项目 4. 选择配置 5. 安装依赖并运行 6. 开始开发 7. 构建项目 8. 预览生产环境构建 首先创建一个vue2项目&#xff0c;你可以通过以下步骤进行&#xff1a; 1. 安装环境&#xff1a; 保证自己的电脑已经安装N…

Jetpack Compose简介

文章目录 Jetpack Compose简介概述声明式UI和命令式UIJetpack Compose和Android View对比Compose API设计原则一切皆为函数组合优于继承单一数据源 Jetpack Compose和Android View关系使用ComposesetContent()源码ComposablePreview Jetpack Compose简介 概述 Jetpack Compos…

ElasticSearch教程入门到精通——第五部分(基于ELK技术栈elasticsearch 7.x+8.x新特性)

ElasticSearch教程入门到精通——第五部分&#xff08;基于ELK技术栈elasticsearch 7.x8.x新特性&#xff09; 1. Elasticsearch集成1.1 框架集成-SpringData-整体介绍1.2 Spring Data Elasticsearch 介绍1.3 框架集成-SpringData-代码功能集成1.3.1 创建Maven项目1.3.2 修改po…

持续记录|UNIAPP适配APP遇到的问题以及解决方案

在使用UNIAPP开发APP的时候遇到的一些奇奇怪怪问题记录 组件样式丢失 问题&#xff1a;组件引入界面中&#xff0c;在小程序和H5环境下样式正常&#xff0c;而在APP中却出现高度异常问题 解决&#xff1a;增加view标签将组件包裹起来即可正常显示 解决前&#xff1a; 解决后…

Java基础:设计模式之建造者模式

建造者模式是一种创建型设计模式&#xff0c;其主要目的是将一个复杂对象的构建过程与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。这种模式适用于创建那些包含多个组成部分、各部分之间有复杂的装配关系、且构造过程可能需要逐步进行或允许用户选择不同组…

笔记:编写程序,绘制一个展示支付宝月账单报告的饼图,

文章目录 前言一、饼图是什么&#xff1f;二、分析题目三、编写代码总结 前言 编写程序&#xff0c;绘制一个展示支付宝月账单报告的饼图&#xff0c;实现过程如下&#xff1a; &#xff08;1&#xff09; 导入 matplotlib.pyplot 模块&#xff1b; &#xff08;2&#xff09;…