SpringMvc kaptcha2

添加 kaptcha-2.3.2.jar

springMvc中注册

<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
        <property name="config">
            <bean class="com.google.code.kaptcha.util.Config">
                <constructor-arg>
                    <props>
                        <prop key="kaptcha.border">yes</prop>
                        <prop key="kaptcha.border.color">105,179,90</prop>
                        <prop key="kaptcha.textproducer.font.color">blue</prop>
                        <prop key="kaptcha.textproducer.font.size">30</prop>
                        <prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop>
                        <!--<prop key="kaptcha.textproducer.char.string">拉三等奖水电费和煽风点火收到货付款</prop> 默认为abcde2345678gfynmnpwx-->
                        <prop key="kaptcha.textproducer.char.length">4</prop>
                        <prop key="kaptcha.image.width">110</prop>
                        <prop key="kaptcha.image.height">35</prop>
                        <prop key="kaptcha.session.key">valicode</prop>
                        <prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.NoNoise</prop>
                         <!-- <prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.ShadowGimpy</prop> -->
                    </props>
                </constructor-arg>
            </bean>
        </property>
    </bean>

jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML>
<html>
  <head>
  <script src="<%=basePath%>resources/js/jquery-3.1.1.min.js"></script>
  <script type="text/javascript">

  function checkmcode(){
    var mcode = $("#mcode").val();
    $.ajax({
     /*    async : false,
        cache : false, */
        type : ‘POST‘,
        url : ‘<%=basePath %>/kaptcha/checkmCode‘,// 请求的action路径
        data:{"mcode":mcode},//参数
        dataType: "json",
        success : function(data){
         if(data.success){
       $("#searchResult").html(data.msg);
    }else{
       $("#searchResult").html("出现错误:" + data.msg);
    }
        },
          error: function(jqXHR){
               alert("发生错误:" + jqXHR.status);
            },    

    });
}

  </script>
    <base href="<%=basePath%>">

    <title>My JSP ‘kaptcha_jsp.jsp‘ starting page</title>

  </head>

  <body>
    验证码:
  <input  id="mcode" name="mcode" value="" class="hst2"   style="vertical-align:middle"/>
  <button onclick="checkmcode()" >验证</button>
    <img id="img"  style="vertical-align:middle" alt="验证码"  src="<%=basePath %>kaptcha/getKaptchaImage"
    onclick="this.src=‘<%=basePath %>kaptcha/getKaptchaImage?e=‘+new Date()"/>
    <img id="mcodecheck" src="" alt=""  style="vertical-align:middle"/>
    <p id="searchResult"></p>
  </body>

</html>

controller

package com.dr.controller;

import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.json.JSONException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.dr.domain.Log;
import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

@Controller
@RequestMapping("kaptcha")
public class Kaptcha {

        @Autowired
        private Producer captchaProducer;
        @RequestMapping("input")
        public String input(){
            return "kaptcha_jsp";

        }

        @RequestMapping("getKaptchaImage")
        public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception {
            HttpSession session = request.getSession();
            String code = (String)session.getAttribute(Constants.KAPTCHA_SESSION_KEY);
            System.out.println("******************验证码是: " + code + "******************");

            response.setDateHeader("Expires", 0);
            response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
            response.addHeader("Cache-Control", "post-check=0, pre-check=0");
            response.setHeader("Pragma", "no-cache");
            response.setContentType("image/jpeg");
            String capText = captchaProducer.createText();
            session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);

            BufferedImage bi = captchaProducer.createImage(capText);
            ServletOutputStream out = response.getOutputStream();
            ImageIO.write(bi, "jpg", out);
            try {
                out.flush();
            } finally {
                out.close();
            }
            return null;
        }

        @RequestMapping(value="checkmCode",produces = {"text/javascript;charset=UTF-8"},method=RequestMethod.POST)
        public  @ResponseBody String checkCode(HttpServletRequest request,String mcode) throws JSONException{
             System.out.println("要校验的验证码:"+mcode);
             JsonObject js=new JsonObject();
             Log log=new Log();
             if(((String)request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY)).equals(mcode)){
                 System.out.println("true");
                log.setMsg("成功");
                log.setSuccess(true);
                js.addProperty("msg","成功");
                js.addProperty("success",true);
             }else {

                    log.setMsg("失败");
                    log.setSuccess(false);
                    js.addProperty("msg","失败");
                    js.addProperty("success",false);
            }
             Gson gson=new Gson();

      System.out.println( gson.toJson(log));
      System.out.println( js.toString());
            /*return gson.toJson(log);*/
      return js.toString();
    }
}
时间: 2024-10-12 17:34:45

SpringMvc kaptcha2的相关文章

SpringMVC中使用Kaptcha验证码组件生成比较安全的验证码

一 简介 Kaptcha是一个基于SimpleCaptcha的验证码开源项目,在我们的项目中使用Kaptcha组件可以快速生成比较安全的验证码.同时Kaptcha还提供了许多的参数可以让我们自定义生成的验证码样式 jar包的官网下载地址:https://code.google.com/archive/p/kaptcha/downloads 当然,为了照顾一些翻不了墙的同学,我也在51cto上上传了一份Kaptcha最新的的jar包(kaptcha-2.3.2),传送门:http://down.5

MyEclipse建立SpringMVC入门HelloWorld项目

一.首先,建立空的web project项目: 1. 2. 3. 二.其次,导入先关jar包 1.将jar包导入SpringMVCHelloWorld\WebRoot\WEB-INF\lib目录下 三.接下来修改web.xml文件,在web中,指定我们的DispatcherServlet.(从这里进入SpringMVC的可控范围). 1. 2.web.xml中的内容如下: <?xml version="1.0" encoding="UTF-8"?> &l

SpringMVC后台使用对象接受参数字符串转日期

在springMVC配置文件中加入: <bean id="dateConvert" class="com.iomp.util.DateConvert"/> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property

springMVC+MyBatis+Spring 整合(3)

spring mvc 与mybatis 的整合. 加入配置文件: spring-mybaits.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xm

SpringMVC 入门

1. SpringMVC 是什么 Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring MVC也是要简化我们日常Web开发的. Spring MVC也是服务到工作者模式的实现,但进行可优化.前端控制器是DispatcherServlet:应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器

SpringMVC中文件上传的客户端验证

SpringMVC中文件上传的客户端验证 客户端验证主要思想:在jsp页面中利用javascript进行对文件的判断,完成验证后允许上传 验证步骤:1.文件名称 2.获取文件的后缀名称 3.判断哪些文件类型允许上传 4.判断文件大小 5.满足条件后跳转后台实现上传 前台界面(验证上传文件是否格式满足要求): <body> <h2>文件上传</h2> <form action="upload01" method="post" 

【巨坑】springmvc 输出json格式数据的几种方式!

最近公司项目需要发布一些数据服务,从设计到实现两天就弄完了,心中窃喜之. 结果临近部署时突然发现.....  服务输出的JSON 数据中  date 类型数据输出格式要么是时间戳,要么是  {"date":26,"day":1,"hours":21,"minutes":38,"month":5,"seconds":22,"time":1498484302259,&qu

springmvc 类型转换器 自定义类型转换器

自定义类型转换器的步骤: 1.定义类型转换器 2.类型转换器的注册(在springmvc配置文件处理) 来解决多种日期格式的问题:

springMVC简单例子

spring MVC是显示层的mvc框架,和struts可以比较:和spring.hibernate没有比较性. 一 .开发流程 1)引jar包 //spring_core spring3.2.9core\commons-logging-1.2.jar spring3.2.9core\spring-beans-3.2.9.RELEASE.jar spring3.2.9core\spring-context-3.2.9.RELEASE.jar spring3.2.9core\spring-core