我写的验证码 是个servlet web.xml
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>Code</servlet-name>
<servlet-class>com.nbgov.util.Code</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Code</servlet-name>
<url-pattern>/servlet/Code</url-pattern>
</servlet-mapping>
------------------代码-------------------- package com.nbgov.util;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;public class Code extends HttpServlet {
//更改输出样式
private static final String CONTENT_TYPE = "image/jpeg";
//Initialize global variables
public void init() throws ServletException {
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
//获得 输出 对象
java.io.OutputStream out=response.getOutputStream();
//获得 缓存图像
java.awt.image.BufferedImage image=new java.awt.image.BufferedImage(60,20,java.awt.image.BufferedImage.TYPE_INT_RGB);
//获得绘图对象
java.awt.Graphics g=image.getGraphics();
//设置背景颜色
g.setColor(java.awt.Color.WHITE);
//设置绘制区域
g.fillRect(0,0,60,20);
//输出]字体
g.setFont(new java.awt.Font("宋体",java.awt.Font.BOLD,18));
//声明存储随机数的变量
String str="";
//产生随机数
for(int i=0;i<4;i++){
int num=(int)(java.lang.Math.random()*10);
//把随机数进行保存
str+=String.valueOf(num);
//设置随机 数 颜色
g.setColor(java.awt.Color.BLACK);
g.drawString(String.valueOf(num),13*i+6,17);
}
//实例化会话对象
HttpSession session=request.getSession(true);
session.setAttribute("code",str); //释放绘图对象
g.dispose();
//从缓存中输出图像
javax.imageio.ImageIO.write(image,"JPEG",out);
}
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
//Clean up resources
public void destroy() {
}
}
-----------------------jsp---------------<img name="secimg" src="/NbgovBszn/servlet/Code" alt="看不清楚?换一张"
width="40" height="20" onClick="document.secimg.src='/NbgovBszn/servlet/Code?t='+(new Date()).getTime(); return false" />-------------------action判断---------------
HttpSession session = request.getSession(); // 获取session
String check = ""; // 定义一个空字符串
String code = request.getParameter("seccode");// 获取前台输入的验证吗
if (session.getAttribute("code") != null) {
// 获取后台生成的验证码的值
check = session.getAttribute("code").toString();
}
if (!check.trim().equals(code.trim())) {// 如果输入的验证码和生成的验证码 不相同
request.setAttribute("result", "验证码输入错误,请重新输入!"); //跳转错误页面
return mapping.findForward(BussTurn.Turn_Error);
}
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>Code</servlet-name>
<servlet-class>com.nbgov.util.Code</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Code</servlet-name>
<url-pattern>/servlet/Code</url-pattern>
</servlet-mapping>
------------------代码-------------------- package com.nbgov.util;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;public class Code extends HttpServlet {
//更改输出样式
private static final String CONTENT_TYPE = "image/jpeg";
//Initialize global variables
public void init() throws ServletException {
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
//获得 输出 对象
java.io.OutputStream out=response.getOutputStream();
//获得 缓存图像
java.awt.image.BufferedImage image=new java.awt.image.BufferedImage(60,20,java.awt.image.BufferedImage.TYPE_INT_RGB);
//获得绘图对象
java.awt.Graphics g=image.getGraphics();
//设置背景颜色
g.setColor(java.awt.Color.WHITE);
//设置绘制区域
g.fillRect(0,0,60,20);
//输出]字体
g.setFont(new java.awt.Font("宋体",java.awt.Font.BOLD,18));
//声明存储随机数的变量
String str="";
//产生随机数
for(int i=0;i<4;i++){
int num=(int)(java.lang.Math.random()*10);
//把随机数进行保存
str+=String.valueOf(num);
//设置随机 数 颜色
g.setColor(java.awt.Color.BLACK);
g.drawString(String.valueOf(num),13*i+6,17);
}
//实例化会话对象
HttpSession session=request.getSession(true);
session.setAttribute("code",str); //释放绘图对象
g.dispose();
//从缓存中输出图像
javax.imageio.ImageIO.write(image,"JPEG",out);
}
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
//Clean up resources
public void destroy() {
}
}
-----------------------jsp---------------<img name="secimg" src="/NbgovBszn/servlet/Code" alt="看不清楚?换一张"
width="40" height="20" onClick="document.secimg.src='/NbgovBszn/servlet/Code?t='+(new Date()).getTime(); return false" />-------------------action判断---------------
HttpSession session = request.getSession(); // 获取session
String check = ""; // 定义一个空字符串
String code = request.getParameter("seccode");// 获取前台输入的验证吗
if (session.getAttribute("code") != null) {
// 获取后台生成的验证码的值
check = session.getAttribute("code").toString();
}
if (!check.trim().equals(code.trim())) {// 如果输入的验证码和生成的验证码 不相同
request.setAttribute("result", "验证码输入错误,请重新输入!"); //跳转错误页面
return mapping.findForward(BussTurn.Turn_Error);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货