1. 生成验证码的servlet类
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.***.constant.Constant;
public class ImageValidate extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 2198678289097775859L;
/**
* Constructor of the object.
*/
public ImageValidate() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
private String name;
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
OutputStream outputStream = null;
try {
outputStream = response.getOutputStream();
// 在内存中创建图象
int width = 60, height = 20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
// 生成随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height);
// 设定字体
g.setFont(new Font("Times New Roman", Font.CENTER_BASELINE, 18));
// 画边框
// g.setColor(new Color());
// g.drawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160, 200));
for (int i = 0; i < 40; 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);
}
// 取随机产生的认证码(4位数字)
String sRand = "";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(random.nextInt(10));
sRand += rand;
// 将认证码显示到图象中
g
.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random
.nextInt(110)));// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand, 13 * i + 6, 16);
}
// 将认证码存入SESSION
HttpSession session=request.getSession();
session.setAttribute(Constant.LOGIN_VALIDATE_IMAGE, sRand);
// 图象生效
g.dispose();
// 输出图象到页面
ImageIO.write(image, "JPEG",outputStream);
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
}finally{
outputStream.close();
}
}
/**
* 给定范围获得随机颜色
*
* @param fc
* @param bc
* @return
*/
private static Color getRandColor(int fc, int bc) {
Random random = new Random();
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);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occure
*/
public void init() throws ServletException {
// Put your code here
}
}
2.web.xml 配置
<servlet>
<servlet-name>ImageValidate</servlet-name>
<servlet-class>com.***.web.servlet.ImageValidate</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageValidate</servlet-name>
<url-pattern>/servlet/imageValidate</url-pattern>
</servlet-mapping>
3.页面调用
<div class="login-tr">
<div class="login-td-1 ft-sz-12 ft-cl-n">验证码:</div>
<div class="login-td-2"><input type="text" class="tt-text-yz tt-text" name="validateCode">
<span>
<img id="imgValidateCode" src="${BasePath}/servlet/imageValidate" width="55" height="20" align="top" border="0" style="cursor:hand"/>
</span>
<a href="javascript:reloadCode();">看不清?</a></div>
</div>
分享到:
相关推荐
1. 创建Servlet类:首先,我们需要创建一个继承自`javax.servlet.http.HttpServlet`的类,比如`IdentityServlet`。 2. 实现服务方法:重写`doGet`或`doPost`方法,因为验证码通常在HTTP GET请求中生成,所以我们...
java代码生成验证码(servlet).送给需要的人吧。
2. ImageServlet.java:这是一个Servlet类,它处理HTTP请求,调用`ValidateCodeImageCodeMade`类的方法生成验证码,然后将生成的图像以流的形式响应给客户端。Servlet需要配置在web.xml中,以监听特定的URL路径,当...
验证码是每个网站必不可少的要素...此代码就是用servlet生成随机生成验证码
首先,我们需要创建一个Servlet类。在Java中,Servlet是一个继承自javax.servlet.http.HttpServlet的类。在该类中,我们重写doGet或doPost方法,因为这两个方法会在HTTP请求对应的方法类型(GET或POST)被调用时执行...
j a v a 服 务 器 端 Servlet 验 证 码 的 生 成 代 码
正在学习Java,在教程书和网上不断的学习。servlet 提供了 Java 强大的 web 交互,在这个小项目中,我用servlet 实现了在web上生成验证码的功能,正在入门Java的同学不妨试试。
java生成验证码代码 主要:一个生成验证码的servlet,一个jsp页面,另外还需要配置下web.xml即可
- 首先,创建一个Servlet类,如`VerificationCodeServlet`,继承`HttpServlet`。 - 在`doGet`方法中,生成一个随机字符串作为验证码。这个字符串通常包含数字和字母,长度可自定义,例如4位。 - 使用`Random`类...
- **Servlet**:在Servlet中调用工具类的方法,生成验证码并将其保存到服务器的一个临时目录,同时将验证码内容保存在Session中,以供后续验证使用。 - **响应客户端**:Servlet返回生成的GIF图像到客户端,通常...
1. **创建Servlet**:首先,我们需要创建一个Servlet类,比如`VerificationCodeServlet`,继承自`javax.servlet.http.HttpServlet`。 2. **生成随机字符串**:在Servlet中,我们需要生成一个随机字符串,通常包含...
本示例中的"java生成验证码代码"是利用Java的Servlet技术来实现的,配合HTML和JavaScript,为用户提供交互式的验证码功能。 首先,我们来看核心的Java类`ValiImg.java`。这个类通常会继承自`HttpServlet`,并重写`...
在IT领域,特别是Web开发中,验证码是一种常见的安全机制,用于区分...总之,使用JSP和Servlet技术生成验证码是一种有效提升Web应用安全性的方法,通过合理设计和实现,可以有效地抵御自动化攻击,保护用户数据安全。
`servlet`生成验证码图片是通过服务器端动态创建一个包含随机字符的图像,用户需要输入图像中显示的文字或数字来验证其身份。以下将详细解释这个过程及其相关知识点: 1. **Servlet**:Servlet是Java中用于扩展...
Java servlet 自动生成 图片验证码 生成 Java源码
总的来说,这个Java Servlet验证码实现涵盖了Java Web开发的基础知识,包括Servlet生命周期、HTTP会话管理、图像处理以及随机数生成。理解这个过程对于提升Web应用的安全性是非常有帮助的。通过这个小例子,开发者...
3. **图像处理**:验证码Servlet会使用Java的`java.awt`和`javax.imageio`库来创建和处理图像。这包括创建画布、绘制字符串、添加噪声以及保存和发送图像给客户端。 4. **存储和验证**:生成的验证码字符串需要存储...
`java.util.Random`类是生成随机数的基础,可以用于生成整数、浮点数等。在验证码生成中,我们需要生成一系列不重复的字符,这可能需要用到`nextInt()`和`nextDouble()`方法。 6. 验证码的验证: 当用户输入...
- 一个Servlet(如`GenerateCodeServlet.java`),处理HTTP请求,生成验证码图片,并将验证码值存储在会话中。 - 一个JSP页面(如`authCode.jsp`),展示验证码图片并接收用户输入。 - 可能还有配置文件(如`web.xml...
`index.jsp`文件通常是用户首次请求验证码的页面,它可能包含一个HTML表单,用户可以通过点击按钮触发Servlet生成验证码。表单的ACTION属性应该指向我们的Servlet。 `result.jsp`文件则用于显示验证结果。当用户...