跪求!!!有哪位做过的高手指点一下啊!

yamengli 2012-05-11 10:36:06
请问哪位前辈做过关于验证码方面的东西,用java实现的最好,请指点一下,太谢谢你们了!
...全文
179 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
X497347200 2012-05-13
  • 打赏
  • 举报
回复

<tr>
<td valign="middle" align="right">
验证码:

</td>
<td valign="middle" align="left">
<input type="text" class="inputgri" name="number" /><span><c:if test="${empty error}" var="e" scope="request"></c:if>
<c:if test="${!e}">${error}</c:if></span><img id="num" src="checkcode" />
<a href="javascript:;" onclick="document.getElementById('num').src = 'checkcode?'+(new Date()).getTime()">换一张</a>
</td>
</tr>




<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>CheckCodeServlet</servlet-name>
<servlet-class>servlet.CheckCodeServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>CheckCodeServlet</servlet-name>
<url-pattern>/checkcode</url-pattern>
</servlet-mapping>

X497347200 2012-05-13
  • 打赏
  • 举报
回复

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class CheckCodeServlet extends HttpServlet {


@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置content-type消息头,告诉浏览器,
//返回的数据类型
response.setContentType("image/jpeg");
// 图片的内存映像
BufferedImage image =
new BufferedImage(60, 20,
BufferedImage.TYPE_INT_RGB);
// 获得画笔对象
Random r = new Random();
Graphics g = image.getGraphics();
g.setColor(
new Color(r.nextInt(255),
r.nextInt(255), r.nextInt(255)));
g.fillRect(0, 0, 60, 20);
g.setColor(new Color(0,0,0));
String number = String.valueOf(
r.nextInt(99999));
HttpSession session=request.getSession();
session.setAttribute("number",number);
g.drawString(number, 5, 15);

// 压缩成jpeg格式
OutputStream os = response
.getOutputStream();
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(os);
// 把BufferedImage对象中的图像信息编码后
// 向创建该对象(encoder)时指定的输出流输出
encoder.encode(image);
}

public CheckCodeServlet() {
super();
}

/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}

/**
* 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 {

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 GET method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}

/**
* 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
}

}

heroleader 2012-05-13
  • 打赏
  • 举报
回复
楼主,,我的博客里面有详细内容,,一定能帮到你

http://blog.csdn.net/wangbaoyin/article/details/7541436
  • 打赏
  • 举报
回复
上个月刚做完的一个验证码程序,完整的,
用的是struts做的,你下下来直接部署到myeclise里就可以看效果了。。
http://download.csdn.net/detail/fengjssy/4162134

不懂的留言 。
MiceRice 2012-05-11
  • 打赏
  • 举报
回复
大多数人都做过,其实并不复杂,关键是你要知道大致原理。

主页面index.jsp:包含<img src="code.jsp">片段,用于显示验证码图片;以及FORM表单,将用户输入的验证码值,提交给check.jsp进行检查
验证码页面code.jsp:用随机数生成验证码值,并将验证码的值保存在session中;然后以图片形式生成验证码内容(Google大把源代码),发送给浏览器;
检查页面check.jsp:从session中取回所生成的验证码值,与用户所输入的验证码值进行比较。

先理解总体框架。

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧