RegisterServlet:检验server,client验证码是否一致

ImageServlet: 产生验证码

<!DOCTYPE html>
<html>
<head>
<title>Register.html</title> <script type="text/javascript">
function ChangeImage(img){
img.src=img.src+"?"+new Date().getTime(); }
</script>
</head> <body>
<form action="/NANA/servlet/RegisterServlet">
用户名:<input type="text" ><br />
密码:<input type="text"><br />
认证码:<input type="text" name="checkcode"><img alt="" src="/NANA/servlet/ImageServlet" onclick="ChangeImage(this)" alt="change" style="cursor:pointer"><br/>
<input type="submit" value="submit">
</form>
</body>
</html>

RegisterServlet:

public class RegisterServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String c_checkcode = request.getParameter("checkcode");
String s_checkcode = (String) request.getSession().getAttribute("checkcode"); if(c_checkcode!=null&&s_checkcode!=null&&c_checkcode.equals(s_checkcode)){
System.out.println("处理请求");
}else{ System.out.println("认证码错误");
}
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
} }

ImageServlet

public class ImageServlet extends HttpServlet {
private static final int WIDTH = 120;
private static final int HEIGHT = 25; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
BufferedImage image = new BufferedImage(WIDTH, HEIGHT,
BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); setBackGround(g); setBorder(g); drawRandomLine(g); String random = drawRandmNumber((Graphics2D) g); // add into server checkcode
request.getSession().setAttribute("checkcode", random); response.setContentType("image/jpeg");
response.setDateHeader("expries", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
ImageIO.write(image, "jpg", response.getOutputStream());
} private String drawRandmNumber(Graphics2D g) {
// TODO Auto-generated method stub g.setColor(Color.RED);
g.setFont(new Font("宋体", Font.BOLD, 20)); StringBuffer sb = new StringBuffer();
int x = 5;
for (int i = 0; i < 4; i++) { int degree = new Random().nextInt() % 30; String num = (new Random().nextInt(10)) + "";
sb.append(num);
g.rotate(degree * Math.PI / 180, x, 20); g.drawString(num, x, 20); g.rotate(-degree * Math.PI / 180, x, 20); x += 30; }
return sb.toString(); } private void drawRandomLine(Graphics g) {
// TODO Auto-generated method stub
g.setColor(Color.GREEN);
for (int i = 0; i < 5; i++) {
int x1 = new Random().nextInt(WIDTH);
int y1 = new Random().nextInt(HEIGHT); int x2 = new Random().nextInt(WIDTH);
int y2 = new Random().nextInt(HEIGHT); g.drawLine(x1, y1, x2, y2);
}
} private void setBackGround(Graphics g) {
// TODO Auto-generated method stub
g.setColor(Color.WHITE);
g.fillRect(0, 0, WIDTH, HEIGHT);
} private void setBorder(Graphics g) {
// TODO Auto-generated method stub
g.setColor(Color.BLUE);
g.drawRect(1, 1, WIDTH - 2, HEIGHT - 2);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request, response);
} }

最新文章

  1. xp IP安全策略 ipseccmd
  2. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【开篇】【持续更新中。。。】
  3. PHP5中的stdClass
  4. 在iframe中获取本iframe DOM引用
  5. jquery . fancybox()
  6. MCE遥控---用遥控器玩电脑
  7. (转)用JMX监测JVM的运行参数
  8. vue+vux+axios+vuex+vue-router的项目的理解
  9. vue-webpack-boilerplate分析
  10. SublimeTest3设置【中文乱码】
  11. List实现
  12. Java 反射(二)
  13. 玩转spring MVC(八)----spring MVC整合json
  14. Linux进程和端口互相查看方法
  15. @RequestParam,@PathParam,@PathVariable等注解区别
  16. eMMC基础技术5:emmc response
  17. vue.js computed,watch的区别
  18. Spring Integration实现分布式锁
  19. CodeBlock 快捷键大全
  20. Notepad++同一窗口显示左右显示两份文档

热门文章

  1. WCF 实例化与会话
  2. jdk1.6新特性
  3. C# using SendMessage, problem with WM_COPYDATA z
  4. POJ3087 Shuffle&#39;m Up 简单模拟
  5. C# Debug与release之间的一些小差异
  6. tomcat memory leak
  7. HW6.16
  8. 秒杀 ILSpy 等反编译利器 DotNet Resolver
  9. [C语言 - 14] 进制
  10. [C语言 - 11] 语言编译执行