<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%>
<%@ page import="java.io.OutputStream"%>
<%!
private Color getRandColor(Random random, 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 String generateCheckCode(HttpServletRequest request) {
Random random = new Random();
int intTemp;
int intFirst = random.nextInt(100);
int intSec = random.nextInt(100);
String checkCode = "";
int result = 0;
switch (random.nextInt(6)) {
case 0:
if (intFirst < intSec) {
intTemp = intFirst;
intFirst = intSec;
intSec = intTemp;
}
checkCode = intFirst + " - " + intSec + " = ?";
result = intFirst-intSec;
break;
case 1:
if (intFirst < intSec) {
intTemp = intFirst;
intFirst = intSec;
intSec = intTemp;
}
checkCode = intFirst + " - ? = "+(intFirst-intSec);
result = intSec;
break;
case 2:
if (intFirst < intSec) {
intTemp = intFirst;
intFirst = intSec;
intSec = intTemp;
}
checkCode = "? - "+intSec+" = "+(intFirst-intSec);
result = intFirst;
break;
case 3:
checkCode = intFirst + " + " + intSec + " = ?";
result = intFirst + intSec;
break;
case 4:
checkCode = intFirst + " + ? ="+(intFirst+intSec);
result = intSec;
break;
case 5:
checkCode = "? + " + intSec + " ="+(intFirst+intSec);
result = intFirst;
break;
}
request.getSession().setAttribute("VERIFY_CODE", result);
return checkCode;
}
%>
<%
try {
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
int width = 140, height = 30;
String baseStr = generateCheckCode(request);
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
OutputStream os = response.getOutputStream();
Graphics g = image.getGraphics();
Random random = new Random();
g.setColor(getRandColor(random, 200, 250));
g.fillRect(0, 0, width, height);
String[] fontTypes = { "\u5b8b\u4f53", "\u65b0\u5b8b\u4f53", "\u9ed1\u4f53", "\u6977\u4f53", "\u96b6\u4e66" };
int fontTypesLength = fontTypes.length;
g.setColor(getRandColor(random, 160, 200));
g.setFont(new Font("Times New Roman", Font.PLAIN, 14 + random.nextInt(6)));
for (int i = 0; i < 255; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x, y, x + xl, y + yl);
}
String [] baseChar = baseStr.split(" ");
for (int i = 0; i < baseChar.length; i++) {
g.setColor(getRandColor(random, 30, 150));
g.setFont(new Font(fontTypes[random.nextInt(fontTypesLength)], Font.BOLD, 22 + random.nextInt(6)));
g.drawString(baseChar[i], 24 * i + 10, 24);
}
g.dispose();
ImageIO.write(image, "JPEG", os);
os.flush();
os.close();
os = null;
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
} catch (IllegalStateException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
%>
分享到:
相关推荐
在本《Java 问答式教程》中,我们将深入探讨Java编程语言的各种核心概念和技术,以问答的形式呈现,便于读者理解并解决实际问题。Java是一种广泛使用的面向对象的编程语言,以其跨平台性、高效性和安全性著称。本...
Java问答式教程是针对Java初学者精心设计的一种学习资源,旨在通过解答常见问题来帮助学习者深入理解Java编程语言的核心概念和技术。这份教程涵盖了多个关键知识点,包括但不限于基础语法、面向对象编程、异常处理、...
java面试问答题,答案详细明了java面试问答题,答案详细明了java面试问答题,答案详细明了
Java实用简洁的问答_社区系统源码 Java实用简洁的问答_社区系统源码 Java实用简洁的问答_社区系统源码 Java实用简洁的问答_社区系统源码 Java实用简洁的问答_社区系统源码 Java实用简洁的问答_社区系统源码 ...
**Java 问答式教程** 本教程旨在以问答形式深入浅出地讲解Java编程语言的核心概念和技术,帮助初学者和有经验的开发者巩固基础,解决实际遇到的问题。Java是一种广泛使用的面向对象的编程语言,以其跨平台性和强大...
它是一个使用Java编程语言实现的问答机器人,特别强调了对中文的支持,表明该机器人能够处理和理解中文输入。同时,提供了一个DEMO(演示),方便开发者直观地了解其工作原理。另外,附带的文档将有助于学习和调试。...
3. **机器学习(ML)**:对于复杂问题,系统可能需要借助机器学习模型来预测最佳答案,如基于深度学习的问答模型,Java中的Deeplearning4j库支持多种神经网络框架。 4. **知识图谱**:知识图谱用于结构化存储和组织...
Java知识问答服务器是一种基于Java平台开发的服务器程序,它的核心目标是实现一个高效、稳定的知识问答交互系统。在这个系统中,开发者使用了`ServerSocket`类来创建服务器端的套接字,允许服务器监听并接受来自...
【JAVA知识问答器】是一个基于Java编程语言开发的智能问答系统,它涵盖了Java语言的大量知识点,旨在帮助用户深入理解和掌握Java技术。该系统利用单例模式设计,确保在整个应用程序中只有一个实例存在,以提高资源...
### Java基础知识问答详解 #### 一、JRE与JDK的区别及应用场景 1. **JRE(Java Runtime Environment)**:是Java运行环境的基础部分,包括了Java虚拟机(JVM)以及Java类库标准版。它使得Java应用程序可以在任何...
JAVA实现基于知识图谱的古诗词智能问答 使用java+ssm+springboot+maven+react+mysql 1、前端接收问句,发送至后端(涉及CSS、ajax通信) 2、对问句进行分词,每个单词标注词性(涉及用户字典) 3、对问句进行抽象...
Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码图片。 Java 命令行解析...
Java在线问答系统是一种基于Web的应用程序,用于提供用户互动式的问答环境。在这个系统中,用户可以提出问题,其他用户或专家则可以给予回答。Struts2框架被广泛应用于构建这样的系统,因为它提供了强大的MVC(Model...
在这个“智能问答java代码”项目中,我们可以看到开发者使用Java编程语言实现了一个简单的智能问答系统,该系统可能依赖于阿里集团提供的API接口,这表明了在实际应用中,开发者常常会借助第三方服务来增强其软件的...
《ChatGPT AI 问答助手》 开源免费项目,涵盖爬虫接口、ChatGPT API对接、DDD架构设计、镜像打包、Docker容器部署,小巧精悍,流程全面。对于Java编程伙伴来说,非常具有学习价值。 这个项目本身是小傅哥为自己的...
在当前的IT领域,检索增强生成(Retrieval-Augmented Generation,简称RAG)是一种混合了检索和生成技术的方法,广泛应用于问答系统、聊天机器人和文本生成等任务。本示例着重介绍了如何利用BM25和BGE检索算法来提升...
Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码图片。 Java 命令行解析...
Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码图片。 Java 命令行解析...
Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码图片。 Java 命令行解析...
Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码图片。 Java 命令行解析...