servlet中的方法实现代码:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class IdentityServlet extends HttpServlet {
public static final char[] CHARS={'2','3','4','5','6','7','8','9','0',
'A','Q','W','E','R','T','G','D','S','W','G','H'};//随机字符的字典
public static Random random = new Random();//随机数
public static String getRandomString(){
//字符的缓存
StringBuffer buf= new StringBuffer();
for(int i=0;i<6;i++){//循环 六次
buf.append(CHARS[random.nextInt(CHARS.length)]);
}
return buf.toString();
}
public static Color getRandomColor(){
return new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255));
}
public static Color getReverseColor(Color c){
return new Color(255-c.getRed(),255-c.getGreen(),255-c.getBlue());
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/jpeg");//设置输出的类型
String randomString =getRandomString();//得到返回的字符集
request.getSession(true).setAttribute("randomString", randomString);
int with=100;int hight=30;//生成图片的大小
Color color=getRandomColor();//用于背景色
Color reverse =getReverseColor(color);//用于前景色
BufferedImage bi = new BufferedImage(with, hight, BufferedImage.TYPE_INT_RGB);//创建一个彩色的图片
Graphics2D g = bi.createGraphics();//获取到绘图对象
g.setFont(new Font(Font.SANS_SERIF,Font.BOLD,16));//设置字体
g.setColor(color);//设置颜色
g.fillRect(0, 0, with, hight);//绘制背景
g.setColor(reverse);//设置颜色
g.drawString(randomString, 18, 20);//绘制随机字符
for(int i=0,n=random.nextInt(100);i<n;i++){//画最多100个噪音点
g.drawRect(random.nextInt(with), random.nextInt(hight), 1, 1);//随机噪音点
}
ServletOutputStream out =response.getOutputStream();
//转换图片格式
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(bi);//对图片进行编码
out.flush();//输出
}
jsp页面的代码:
<script type="text/javascript">
function reloadImage(){
document.getElementByIdx_x_x("btn").disabled=false;
document.getElementByIdx_x_x("Identity").src='servlet/IdentityServlet?ts='+new Date().getTime();
}
</script>
<body>
<img src="servlet/IdentityServlet" id="Identity" />
<input type="button" id="btn" value="换个图片" onclick="reloadImage()"/>
</body>
效果如下:
分享到:
相关推荐
本笔记将详细探讨如何使用Servlet来生成验证码。 一、验证码的原理与作用 验证码的主要目的是区分人类用户和自动化程序,通过要求用户输入图片上的文字或者完成简单的数学问题,来验证其为真实的人类。这有助于防止...
`servlet`生成验证码图片是通过服务器端动态创建一个包含随机字符的图像,用户需要输入图像中显示的文字或数字来验证其身份。以下将详细解释这个过程及其相关知识点: 1. **Servlet**:Servlet是Java中用于扩展...
在这个场景中,我们使用...总之,Servlet生成图片验证码是一种常见的Web安全实践,通过结合Java的图形库和HTTP交互,可以实现高效且安全的用户验证机制。在设计和实现时,应充分考虑用户体验和安全性之间的平衡。
### JSP中利用Servlet生成验证码图片 在Web应用开发中,验证码被广泛应用于用户登录、表单提交等场景,以防止自动化的恶意攻击。本文将详细介绍如何在Java Server Pages (JSP) 和 Servlet 技术的基础上,实现一个...
在IT领域,特别是Web开发中,验证码是一种常见的安全机制,用于区分...总之,使用JSP和Servlet技术生成验证码是一种有效提升Web应用安全性的方法,通过合理设计和实现,可以有效地抵御自动化攻击,保护用户数据安全。
`index.jsp`文件通常是用户首次请求验证码的页面,它可能包含一个HTML表单,用户可以通过点击按钮触发Servlet生成验证码。表单的ACTION属性应该指向我们的Servlet。 `result.jsp`文件则用于显示验证结果。当用户...
本教程主要讲解如何利用Servlet来实现动态生成验证码的功能,这对于防止机器人或恶意自动化程序在网站上进行非法操作至关重要。验证码通常由一串随机字符组成,用户需要正确输入才能完成特定操作,如注册、登录或...
在IT行业中,登陆验证是确保用户安全性的重要环节,而动态生成的...Servlet在其中起到了接收请求、验证凭证和动态生成安全验证码的关键作用。理解并熟练掌握这些技术,可以帮助开发者构建更安全、更可靠的Web应用程序。
总的来说,"jsp+servlet 生成验证码"是一个典型的前后端交互的例子,它展示了如何利用Java Web技术实现动态的、安全的验证码功能,为Web应用提供了一道基础的安全屏障。对于初学者来说,理解和实现这个过程有助于...
- **响应验证码**:Servlet生成验证码后,需要将验证码的值以特定方式(如隐藏字段、Cookie或Session)返回给前端,并同时将验证码图像作为HTTP响应的一部分发送出去。 3. **前端交互**: - **JavaScript**:前端...
基于Servlet实现的验证码验证是将验证码生成和验证过程集成到服务器端的一种方法,尤其适用于使用Java语言开发的SSH(Spring、Struts和Hibernate)项目。SSH框架提供了模型-视图-控制器(MVC)的架构,使得验证码...
"韩顺平Servlet生成验证码文件"这个主题涉及到的是在Java Web开发中使用Servlet来创建验证码的功能。 Servlet是Java编程语言中用于扩展服务器功能的接口,它可以在Web服务器上运行,处理HTTP请求并返回响应。在...
Servlet生成动态验证码涉及到的主要知识点包括Servlet生命周期、HTTP请求响应流程、图像处理以及随机数生成。 1. Servlet生命周期: Servlet在服务器端运行,其生命周期包括加载、初始化、服务、销毁四个阶段。当...
在这个主题中,我们聚焦于如何使用Servlet来...对于初学者,理解Servlet生成验证码的基本原理是迈向更高级安全实践的第一步。同时,开发者也应关注验证码的可访问性,确保其对所有用户(包括视觉障碍者)都是公平的。
总的来说,这个Java Servlet验证码实现涵盖了Java Web开发的基础知识,包括Servlet生命周期、HTTP会话管理、图像处理以及随机数生成。理解这个过程对于提升Web应用的安全性是非常有帮助的。通过这个小例子,开发者...
在IT行业中,Servlet是Java Web开发中的重要组成部分,主要用于处理HTTP请求并生成动态网页内容。在Web应用中,为了增加安全性,通常...对于Servlet开发者来说,理解动态验证码的生成原理和实现过程是必备的技能之一。
本教程将详细解释如何使用Servlet技术来实现一个动态的验证码功能,包括点击验证码后更换新的验证码以及验证码的验证过程。 一、Servlet基础 Servlet是Java EE中用于处理HTTP请求的服务器端组件。它接收客户端...
Java后端产生验证码后台验证功能的实现代码是指在Java后台生成验证码,并对其进行后台验证的功能。本文主要介绍了Java后台产生验证码后台验证功能的实现代码,结合实例代码,详细地介绍了验证码的生成和验证过程。 ...
在这里,我们将讨论如何通过Servlet生成随机字符串,并将其转化为图像输出到客户端,以此实现验证码功能。 1. **验证码逻辑设计** - **随机字符串生成**:首先,我们需要生成一个随机字符串,通常包含字母和数字,...