JavaWeb -- Session应用实例 -- 随机中文验证码 检验
注册页面 login.html
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
<script type="text/javascript">
function changeImage(img) {
img.src = img.src + "?" + new Date().getTime();
}
</script> </head>
<body>
<form action="/WebTest3/Demo9" method="get">
<pre>
User :<input type="text" name="username"/> <br />
Passwd :<input type="password" name="passwd"/> <br />
CheckCode:<input type="text" name="checkcode"/> <br />
<img src="/WebTest3/Demo8" alt="ChangeOne" onclick="changeImage(this)" style="cursor: hand"/> <br />
Submit<input type="submit" name="submit" value="submit"/>
</pre>
</form>
</body>
</html>
随机中文图片生成Servlet
public class Demo8 extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final int width = 120;
private static final int height = 40;
/**
* @see HttpServlet#HttpServlet()
*/
public Demo8() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
setBackGround(g);
setBorder(g);
drawRandomLine(g);
String random = drawRandomNum((Graphics2D)g);
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 drawRandomNum(Graphics2D g) {
// TODO Auto-generated method stub
//[\u4e00 ~ \u9fa5]
g.setColor(Color.BLUE);
g.setFont(new Font(null, Font.BOLD, 20));
String base = "\u7684\u4e00\u662f\u4e86\u6211\u4e0d\u4eba\u5728\u4ed6\u6709\u8fd9\u4e2a\u4e0a\u4eec\u6765";
int x = 5;
StringBuffer sb = new StringBuffer();
for(int i=0; i<4; i++)
{
String ch = base.charAt(new Random().nextInt(base.length())) + "";
//System.out.println(ch);
sb.append(ch);
int degreen = new Random().nextInt()%30;
g.rotate(degreen*Math.PI/180, x, 25);
g.drawString(ch, x, 25);
g.rotate(-degreen*Math.PI/180, x, 25);
x += 30;
}
return sb.toString();
}
private void drawRandomLine(Graphics g) {
// TODO Auto-generated method stub
g.setColor(Color.green);
for(int i=0; i<8; 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 setBorder(Graphics g) {
// TODO Auto-generated method stub
g.setColor(Color.blue);
g.drawRect(1, 1, width-2, height-2);
}
private void setBackGround(Graphics g) {
// TODO Auto-generated method stub
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
检验验证码正确性Servlet
public class Demo9 extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public Demo9() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter(); String c_checkcode_temp = request.getParameter("checkcode");
String c_checkcode = new String(c_checkcode_temp.getBytes("iso8859-1"), "UTF-8"); //防乱码
String s_checkcode = (String) request.getSession().getAttribute("checkcode");
out.println("c_code: " + c_checkcode + "s_code: " + s_checkcode);
if(c_checkcode!=null && s_checkcode!=null && c_checkcode.equals(s_checkcode))
{
out.println("checkcode is right");
}
else
{
out.println("checkcode is wrong");
} } /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
} }JavaWeb -- Session应用实例 -- 随机中文验证码 检验的更多相关文章
- PHP生成中文验证码并检测对错实例
PHP生成中文验证码并检测对错实例,中文验证码的例子还是比较少的,今天给大家分享一下,支持自定义中文.字体.背景色等 生成验证码,注意font字体路径要对,否则显示图片不存在 session_star ...
- 用C#生成随机中文汉字验证码的基本原理
前几天去申请免费QQ号码,突然发现申请表单中的验证码内容换成了中文,这叫真叫我大跌眼镜感到好笑,Moper上的猫儿们都大骂腾讯采用中文验证码.^_^ 我不得不佩服腾讯为了防止目前网络上横行的QQ号码 ...
- Django登录(含随机生成图片验证码)注册实例
登录,生成随机图片验证码 一.登录 - 随机生成图片验证码 1.随机生成验证码 Python随机生成图片验证码,需要使用PIL模块,安装方式如下: pip3 install pillow 1)创建图片 ...
- JavaWeb学习记录(五)——Servlet随机产生验证码
随机产生验证码的工具类: import java.awt.Color;import java.awt.Graphics;import java.awt.image.BufferedImage;impo ...
- Javaweb Session机制(有待补充)
Javaweb Session机制 一.前言 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话是从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个ses ...
- javaweb项目中表单生成的验证码以及校验
首先先来看一下项目的结构吧,有两个servlet,一个是进行验证码的生成以及存储的,一个是进行校验的,还有一个jsp页面是用来实现form表单的书写和展示: 我们只需要看这三个就行了,其他的自动忽略: ...
- JavaWeb Session
1. Session概述 1.1. 什么是Session Session一般译为会话,是解决Http协议的无状态问题的方案,可以将一次会话中的数据存储在服务器端的内存中,保证在下一次的会话中可以使用. ...
- springboot搭建项目,实现Java生成随机图片验证码。
这篇文章主要介绍了如何通过Java如何生成验证码并验证.验证码的作用我想必大家都知道,话不多说开始实施! 首先创建一个springboot项目以下是项目结构,内有utli工具类.存放生成图片验证码方法 ...
- Djaingo 随机生成验证码(PIL)
基础: https://www.cnblogs.com/wupeiqi/articles/5812291.html 实例: https://www.cnblogs.com/6324TV/p/88112 ...
随机推荐
- nodeJS 中关于 promise 的使用
var readInfo = function (fileName) { var defer = q.defer(); fs.readFile(fileName, {encoding:'utf-8'} ...
- 利用NIO的Selector处理服务器-客户端模型
package NIOTEST; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocket ...
- LCD屏背光驱动调试心得---血的教训
开发板:明远智睿MY-IMX6-EK140 内核源码:linux-3.14.52 背光驱动IC:MP3202 调光原理:通过开发板的核心板PWM4引脚控制MP3202的EN脚,输出不同的占空比从而达到 ...
- linux 参数内核
优化Linux内核参数 转自:http://www.centoscn.com/CentOS/config/2013/0804/992.html vim /etc/sysctl.conf 1.net ...
- MHA常用命令
.查看ssh登陆是否成功 masterha_check_ssh --conf=/etc/masterha/app1.cnf .查看复制是否建立好 masterha_check_repl --conf= ...
- 【Mac系统】istatmenus6.20下载以及激活
下载地址:https://pan.baidu.com/s/1-2-yw2NnOlGJ46D536t5uQ iStat Menus 的激活密码: Email: 982092332@qq.com SN: ...
- 使用js生成下拉列表项
在项目中经常会使用到一个简单的表单元素,那就是下拉列表.但是由于企业的列表项并不是固定的,因此列表项的内容需要到数据库或者接口中取,因此怎样获取,并且能应用到 多个相似的下拉列表就需要思考一下. 我这 ...
- 在Ubuntu下编译FFmpeg
第一步:准备编译环境 .tar.bz2 -2245/ ./configure --enable-static--enable-shared--prefix=/usr/localmakesudomake ...
- Android Studio gradle 文件中 ${supportLibVersion} 用法
一般我们在项目中的gradle会添加如下库文件 dependencies { compile 'com.android.support:appcompat-v7:23.1.0' compile 'co ...
- solr6.5的分词
1.配置solr6.5自带中文分词.复制/usr/local/solr/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-6.5 ...