当前位置: 首页 > news >正文

php网站开发机试题目3d效果图软件

php网站开发机试题目,3d效果图软件,zencart外贸网站建设,云南建设厅网站执业注册#x1f31f; 前言 欢迎来到我的技术小宇宙#xff01;#x1f30c; 这里不仅是我记录技术点滴的后花园#xff0c;也是我分享学习心得和项目经验的乐园。#x1f4da; 无论你是技术小白还是资深大牛#xff0c;这里总有一些内容能触动你的好奇心。#x1f50d; #x… 前言 欢迎来到我的技术小宇宙 这里不仅是我记录技术点滴的后花园也是我分享学习心得和项目经验的乐园。 无论你是技术小白还是资深大牛这里总有一些内容能触动你的好奇心。 洛可可白个人主页 个人专栏✅前端技术 ✅后端技术 个人博客洛可可白博客 代码获取bestwishes0203 封面壁纸洛可可白wallpaper 文章目录 Spring Boot工程集成验证码生成与验证功能教程1. 创建验证码工具类2. 控制层实现3. 客户端展示验证码4. 验证验证码 联系方式 获取源代码 结语 Spring Boot工程集成验证码生成与验证功能教程 验证码是一种常见的安全机制用于防止自动化工具如爬虫对网站进行恶意操作。在Web应用中验证码通常以图像的形式出现要求用户输入图像中显示的字符。本文将介绍如何在Spring Boot工程中实现一个随机生成验证码的功能。 1. 创建验证码工具类 首先我们需要创建一个工具类VerifyCodeUtils用于生成随机验证码并输出为图像。 import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Arrays; import java.util.Random;public class VerifyCodeUtils {//使用到Algerian字体系统里没有的话需要安装字体字体只显示大写去掉了1,0,i,o几个容易混淆的字符public static final String VERIFY_CODES 23456789ABCDEFGHJKLMNPQRSTUVWXYZ;private static Random random new Random();/*** 使用系统默认字符源生成验证码** param verifySize 验证码长度* return*/public static String generateVerifyCode(int verifySize) {return generateVerifyCode(verifySize, VERIFY_CODES);}/*** 使用指定源生成验证码** param verifySize 验证码长度* param sources 验证码字符源* return*/public static String generateVerifyCode(int verifySize, String sources) {if (sources null || sources.length() 0) {sources VERIFY_CODES;}int codesLen sources.length();Random rand new Random(System.currentTimeMillis());StringBuilder verifyCode new StringBuilder(verifySize);for (int i 0; i verifySize; i) {verifyCode.append(sources.charAt(rand.nextInt(codesLen - 1)));}return verifyCode.toString();}/*** 生成随机验证码文件,并返回验证码值** param w* param h* param outputFile* param verifySize* return* throws IOException*/public static String outputVerifyImage(int w, int h, File outputFile, int verifySize) throws IOException {String verifyCode generateVerifyCode(verifySize);outputImage(w, h, outputFile, verifyCode);return verifyCode;}/*** 输出随机验证码图片流,并返回验证码值** param w* param h* param os* param verifySize* return* throws IOException*/public static String outputVerifyImage(int w, int h, OutputStream os, int verifySize) throws IOException {String verifyCode generateVerifyCode(verifySize);outputImage(w, h, os, verifyCode);return verifyCode;}/*** 生成指定验证码图像文件** param w* param h* param outputFile* param code* throws IOException*/public static void outputImage(int w, int h, File outputFile, String code) throws IOException {if (outputFile null) {return;}File dir outputFile.getParentFile();if (!dir.exists()) {dir.mkdirs();}try {outputFile.createNewFile();FileOutputStream fos new FileOutputStream(outputFile);outputImage(w, h, fos, code);fos.close();} catch (IOException e) {throw e;}}/*** 输出指定验证码图片流** param w* param h* param os* param code* throws IOException*/public static void outputImage(int w, int h, OutputStream os, String code) throws IOException {int verifySize code.length();BufferedImage image new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);Random rand new Random();Graphics2D g2 image.createGraphics();g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);Color[] colors new Color[5];Color[] colorSpaces new Color[]{Color.WHITE, Color.CYAN,Color.GRAY, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE,Color.PINK, Color.YELLOW};float[] fractions new float[colors.length];for (int i 0; i colors.length; i) {colors[i] colorSpaces[rand.nextInt(colorSpaces.length)];fractions[i] rand.nextFloat();}Arrays.sort(fractions);g2.setColor(Color.GRAY);// 设置边框色g2.fillRect(0, 0, w, h);Color c getRandColor(200, 250);g2.setColor(c);// 设置背景色g2.fillRect(0, 2, w, h - 4);//绘制干扰线Random random new Random();g2.setColor(getRandColor(160, 200));// 设置线条的颜色for (int i 0; i 20; i) {int x random.nextInt(w - 1);int y random.nextInt(h - 1);int xl random.nextInt(6) 1;int yl random.nextInt(12) 1;g2.drawLine(x, y, x xl 40, y yl 20);}// 添加噪点float yawpRate 0.05f;// 噪声率int area (int) (yawpRate * w * h);for (int i 0; i area; i) {int x random.nextInt(w);int y random.nextInt(h);int rgb getRandomIntColor();image.setRGB(x, y, rgb);}shear(g2, w, h, c);// 使图片扭曲g2.setColor(getRandColor(100, 160));int fontSize h - 4;Font font new Font(Algerian, Font.ITALIC, fontSize);g2.setFont(font);char[] chars code.toCharArray();for (int i 0; i verifySize; i) {AffineTransform affine new AffineTransform();affine.setToRotation(Math.PI / 4 * rand.nextDouble() * (rand.nextBoolean() ? 1 : -1), (w / verifySize) * i fontSize / 2, h / 2);g2.setTransform(affine);g2.drawChars(chars, i, 1, ((w - 10) / verifySize) * i 5, h / 2 fontSize / 2 - 10);}g2.dispose();ImageIO.write(image, jpg, os);}private static Color getRandColor(int fc, int bc) {if (fc 255)fc 255;if (bc 255)bc 255;int r fc random.nextInt(bc - fc);int g fc random.nextInt(bc - fc);int b fc random.nextInt(bc - fc);return new Color(r, g, b);}private static int getRandomIntColor() {int[] rgb getRandomRgb();int color 0;for (int c : rgb) {color color 8;color color | c;}return color;}private static int[] getRandomRgb() {int[] rgb new int[3];for (int i 0; i 3; i) {rgb[i] random.nextInt(255);}return rgb;}private static void shear(Graphics g, int w1, int h1, Color color) {shearX(g, w1, h1, color);shearY(g, w1, h1, color);}private static void shearX(Graphics g, int w1, int h1, Color color) {int period random.nextInt(2);boolean borderGap true;int frames 1;int phase random.nextInt(2);for (int i 0; i h1; i) {double d (double) (period 1)* Math.sin((double) i / (double) period (6.2831853071795862D * (double) phase)/ (double) frames);g.copyArea(0, i, w1, 1, (int) d, 0);if (borderGap) {g.setColor(color);g.drawLine((int) d, i, 0, i);g.drawLine((int) d w1, i, w1, i);}}}private static void shearY(Graphics g, int w1, int h1, Color color) {int period random.nextInt(40) 10; // 50;boolean borderGap true;int frames 20;int phase 7;for (int i 0; i w1; i) {double d (double) (period 1)* Math.sin((double) i / (double) period (6.2831853071795862D * (double) phase)/ (double) frames);g.copyArea(i, 0, 1, h1, 0, (int) d);if (borderGap) {g.setColor(color);g.drawLine(i, (int) d, i, 0);g.drawLine(i, (int) d h1, i, h1);}}} } 2. 控制层实现 在Spring Boot的控制器中我们需要提供一个接口来生成验证码并将其发送给客户端。 // VerifyController.java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;RestController public class VerifyController {GetMapping(/generateImageCode)public void generateImageCode(HttpSession session, HttpServletResponse response) throws IOException {//随机生成四位随机数String code VerifyCodeUtils.generateVerifyCode(4);//保存到session域中session.setAttribute(code, code);//根据随机数生成图片reqponse响应图片response.setContentType(image/png);ServletOutputStream os response.getOutputStream();VerifyCodeUtils.outputImage(130, 60, os, code);} }3. 客户端展示验证码 在Web页面中我们需要添加一个图像标签来展示验证码。 !-- 在HTML中添加验证码图像 -- img src/generateImageCode alt验证码 onclickthis.src/generateImageCode?Math.random(); /4. 验证验证码 在用户提交表单时我们需要验证用户输入的验证码是否正确。这通常在后端进行通过比较用户输入的验证码与Session中保存的验证码。 // 在登录方法中验证验证码 PostMapping(/login) public ResponseEntity? login(RequestParam String username, RequestParam String password, HttpSession session) {// 获取用户输入的验证码String userInputCode request.getParameter(code);// 获取Session中保存的验证码String sessionCode (String) session.getAttribute(code);// 验证验证码if (!sessionCode.equals(inputCode)) {// 验证码错误return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(验证码错误);}// 验证码正确继续登录逻辑// ... }联系方式 如果您对我们的项目感兴趣或者有任何技术问题想要探讨欢迎通过以下方式与我联系。我非常期待与您交流共同学习共同进步 邮箱2109664977qq.com Giteehttps://gitee.com/bestwishes0203 GitHubhttps://github.com/bestwishes0203 CSDN主页https://blog.csdn.net/interest_ing_/ 个人博客访问我的博客 获取源代码 后端案例https://gitee.com/bestwishes0203/Front-end-example前端案例https://gitee.com/bestwishes0203/Back-end-example 结语 感谢你的访问如果你对我的技术文章或项目感兴趣欢迎通过以上方式与我联系。让我们一起在技术的道路上不断前行
http://www.hkea.cn/news/14481813/

相关文章:

  • 网站维护方式html网页设计网站
  • 做电影网站解决版权问题软件开发工程师工作条件
  • phpcms做汽车网站山东建筑公司实力排名
  • 在门户网站管理建设工作讲话单一产品网站如何做seo
  • 直播是网站怎么做承德网站建设作用
  • 达州网站建设公司公司做网站 微信平台
  • 前端 网站开发 常见功能实现90设计网素材下载
  • 专业的营销型网站公司西安讯展信息科技有限公司
  • 怎么制作网站一键更新企业网站源码带后台管理
  • 西安网站到首页排名wordpress exif
  • 烟台房产网站建设企业形象vi设计包括哪些
  • 网站开发维护公司经营范围遵义建设厅官方网站 元丰
  • 建立网站可以赚钱吗手游推广渠道平台
  • 儒枫网网站建设wordpress后台路径
  • 河北廊坊seo网站建设网站优化国美网上商城官网
  • 咸宁网网站危险网站提示
  • wordpress一个主站多个子站面包屑 wordpress
  • 北碚网站建设哪家好申请了域名 网站怎么建设呢
  • 做网站ps图片都是多大桂林seo优化
  • 做设计下素材有比较好的网站龙溪营销型网站制作
  • 重庆网站建设策划php免费源码
  • 个人网站域名备案步骤浏览器网站有哪些
  • 郑州网站建设公司制作定制中英文的网站开发
  • 携程网网站规划建设特点如何给自己公司做一个网站
  • 怎么搭建网站 优帮云联系我们网站模板
  • 好网站建设公司有多少网站优化招商
  • 建设网站的公司排名做网站推广优化哪家好
  • 小说网站开发实训报告网络行业做什么挣钱
  • 手机微网站二级菜单怎么做photoshop免费下载
  • 网站的图片怎么制作网页制作学校