Spring MVC 使用kaptcha生成驗證碼
1.下載kaptcha-2.3.2.jar(或直接通過該文章附件下載)
http://code.google.com/p/kaptcha/downloads/list
kaptcha-2.3.2-jdk14.jar
kaptcha-2.3.2.jar
-
向spring.xml中添加bean
<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.image.width">125</prop>
<prop key="kaptcha.image.height">45</prop>
<prop key="kaptcha.textproducer.font.size">40</prop>
<prop key="kaptcha.session.key">code</prop>
<prop key="kaptcha.textproducer.char.length">4</prop>
<prop key="kaptcha.textproducer.font.names">宋體,楷體,微軟雅黑 </prop>
</props>
</constructor-arg>
</bean>
</property>
</bean>
-
編寫controller(設置)
@Controller
@RequestMapping("/yzm/")
public class YZMController {
@Autowired
private Producer producer;
@RequestMapping("/yzm")
public void yzm(HttpServletRequest request, HttpServletResponse response,
HttpSession session) throws IOException {
String lastYZM = (String) session.getAttribute("yzm");
System.out.println("*******************上一次的驗證碼是" + lastYZM+ "**********************");
// 設置瀏覽器不要對數據進行緩存
response.setDateHeader("Expires", 0);
// Set standard HTTP/1.1 no-cache headers.
response.setHeader("Cache-Control",
"no-store, no-cache, must-revalidate");
// Set IE extended HTTP/1.1 no-cache headers (use addHeader).
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
// Set standard HTTP/1.0 no-cache header.
response.setHeader("Pragma", "no-cache");
// return a jpeg
response.setContentType("image/jpeg");
String yzm = producer.createText();
System.out.println("*******************本次的驗證碼是" + yzm+ "**********************");
session.setAttribute("yzm", yzm);
BufferedImage image = producer.createImage(yzm);
OutputStream out = response.getOutputStream();
ImageIO.write(image, "jpg", out);
try {
out.flush();
} finally {
out.close();
}
}
}
-
kaptcha可配置選項
kaptcha.border 是否有邊框默認為true 我們可以自己設置yes,no
kaptcha.border.color 邊框顏色默認為Color.BLACK
kaptcha.border.thickness 邊框粗細度默認為1
kaptcha.producer.impl 驗證碼生成器默認為DefaultKaptcha
kaptcha.textproducer.impl 驗證碼文本生成器默DefaultTextCreator
kaptcha.textproducer.char.string 驗證碼文本字符內容范圍默認為abcde2345678gfynmnpwx
kaptcha.textproducer.char.length 驗證碼文本字符長度默認為5
kaptcha.textproducer.font.names 驗證碼文本字體樣式默認為new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
kaptcha.textproducer.font.size 驗證碼文本字符大小默認為40
kaptcha.textproducer.font.color 驗證碼文本字符顏色默認為Color.BLACK
kaptcha.textproducer.char.space 驗證碼文本字符間距默認為2
kaptcha.noise.impl 驗證碼噪點生成對象默認為DefaultNoise
kaptcha.noise.color 驗證碼噪點顏色默認為Color.BLACK
kaptcha.obscurificator.impl 驗證碼樣式引擎默認為WaterRipple
kaptcha.word.impl 驗證碼文本字符渲染默認為DefaultWordRenderer
kaptcha.background.impl 驗證碼背景生成器默認為DefaultBackground
kaptcha.background.clear.from 驗證碼背景顏色漸進默認為Color.LIGHT_GRAY
kaptcha.background.clear.to 驗證碼背景顏色漸進默認為Color.WHITE
kaptcha.image.width 驗證碼圖片寬度默認為200
kaptcha.image.height 驗證碼圖片高度默認為50
Constant
描述
默認值
kaptcha.border
圖片邊框,合法值:yes , no
yes
kaptcha.border.color
邊框顏色,合法值: r,g,b (and optional alpha) 或者 white,black,blue.
black
kaptcha.border.thickness
邊框厚度,合法值:>0
1
kaptcha.image.width
圖片寬
200
kaptcha.image.height
圖片高
50
kaptcha.producer.impl
圖片實現類
com.google.code.kaptcha.impl.DefaultKaptcha
kaptcha.textproducer.impl
文本實現類
com.google.code.kaptcha.text.impl.DefaultTextCreator
kaptcha.textproducer.char.string
文本集合,驗證碼值從此集合中獲取
abcde2345678gfynmnpwx
kaptcha.textproducer.char.length
驗證碼長度
5
kaptcha.textproducer.font.names
字體
Arial, Courier
kaptcha.textproducer.font.size
字體大小
40px.
kaptcha.textproducer.font.color
字體顏色,合法值: r,g,b 或者 white,black,blue.
black
kaptcha.textproducer.char.space
文字間隔
2
kaptcha.noise.impl
干擾實現類
com.google.code.kaptcha.impl.DefaultNoise
kaptcha.noise.color
干擾 顏色,合法值: r,g,b 或者 white,black,blue.
black
kaptcha.obscurificator.impl
圖片樣式:
水紋com.google.code.kaptcha.impl.WaterRipple
魚眼com.google.code.kaptcha.impl.FishEyeGimpy
陰影com.google.code.kaptcha.impl.ShadowGimpycom.google.code.kaptcha.impl.WaterRipple
kaptcha.background.impl
背景實現類
com.google.code.kaptcha.impl.DefaultBackground
kaptcha.background.clear.from
背景顏色漸變,開始顏色
light grey
kaptcha.background.clear.to
背景顏色漸變, 結束顏色
white
kaptcha.word.impl
文字渲染器
com.google.code.kaptcha.text.impl.DefaultWordRenderer
kaptcha.session.key
session key
KAPTCHA_SESSION_KEY
kaptcha.session.date
session date
KAPTCHA_SESSION_DATE
SSM(Spring+SpringMVC+mybatis)使用Log4j記錄日志
為了方便調試,一般都會使用日志來輸出信息,Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制台、文件、GUI組件,甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。
Log4j的配置很簡單,而且也是通用的,下面給出一個基本的配置,換到其他項目中也無需做多大的調整,如果想做調整或者想了解Log4j的各種配置,參看我轉載的一篇博文,很詳細:
http://blog.csdn.net/zhshulin/article/details/37937365
下面給出配置文件目錄:
log4j.properties
為了方便調試,一般都會使用日志來輸出信息,Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制台、文件、GUI組件,甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程。
Log4j的配置很簡單,而且也是通用的,下面給出一個基本的配置,換到其他項目中也無需做多大的調整,如果想做調整或者想了解Log4j的各種配置,參看我轉載的一篇博文,很詳細:
http://blog.csdn.net/zhshulin/article/details/37937365
下面給出配置文件目錄:
log4j.properties#定義LOG輸出級別
log4j.rootLogger=INFO,Console,File
#定義日志輸出目的地為控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以靈活地指定日志輸出格式,下面一行是指定具體的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
#文件大小到達指定尺寸的時候產生一個新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定輸出目錄
log4j.appender.File.File = logs/ssm.log
#定義文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 輸出所以日志,如果換成DEBUG表示輸出DEBUG以上級別日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n